Botcraft 26.1.2
Loading...
Searching...
No Matches
PigEntity.cpp
Go to the documentation of this file.
2
3#include <mutex>
4
5namespace Botcraft
6{
7 const std::array<std::string, PigEntity::metadata_count> PigEntity::metadata_names{ {
8#if PROTOCOL_VERSION < 770 /* < 1.21.5 */
9 "data_saddle_id",
10#endif
11 "data_boost_time",
12#if PROTOCOL_VERSION > 769 /* > 1.21.4 */
13 "data_variant_id",
14#endif
15#if PROTOCOL_VERSION > 774 /* > 1.21.11 */
16 "data_sound_variant_id",
17#endif
18 } };
19
21 {
22 // Initialize all metadata with default values
23#if PROTOCOL_VERSION < 770 /* < 1.21.5 */
24 SetDataSaddleId(false);
25#endif
27#if PROTOCOL_VERSION > 769 /* > 1.21.4 */
29#endif
30#if PROTOCOL_VERSION > 774 /* > 1.21.11 */
32#endif
33
34 // Initialize all attributes with default values
37 }
38
40 {
41
42 }
43
44
45 std::string PigEntity::GetName() const
46 {
47 return "pig";
48 }
49
51 {
52 return EntityType::Pig;
53 }
54
55
57 {
58 return "pig";
59 }
60
65
66
68 {
70
71#if PROTOCOL_VERSION < 770 /* < 1.21.5 */
72 output["metadata"]["data_saddle_id"] = GetDataSaddleId();
73#endif
74 output["metadata"]["data_boost_time"] = GetDataBoostTime();
75#if PROTOCOL_VERSION > 769 /* > 1.21.4 */
76 output["metadata"]["data_variant_id"] = GetDataVariantId();
77#endif
78#if PROTOCOL_VERSION > 774 /* > 1.21.11 */
79 output["metadata"]["data_sound_variant_id"] = GetDataSoundVariantId();
80#endif
81
82 return output;
83 }
84
85
86 void PigEntity::SetMetadataValue(const int index, const std::any& value)
87 {
88 if (index < hierarchy_metadata_count)
89 {
91 }
93 {
94 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
96 }
97 }
98
99#if PROTOCOL_VERSION < 770 /* < 1.21.5 */
100 bool PigEntity::GetDataSaddleId() const
101 {
102 std::shared_lock<std::shared_mutex> lock(entity_mutex);
103 return std::any_cast<bool>(metadata.at("data_saddle_id"));
104 }
105#endif
106
108 {
109 std::shared_lock<std::shared_mutex> lock(entity_mutex);
110 return std::any_cast<int>(metadata.at("data_boost_time"));
111 }
112
113#if PROTOCOL_VERSION > 769 /* > 1.21.4 */
115 {
116 std::shared_lock<std::shared_mutex> lock(entity_mutex);
117 return std::any_cast<int>(metadata.at("data_variant_id"));
118 }
119#endif
120
121#if PROTOCOL_VERSION > 774 /* > 1.21.11 */
123 {
124 std::shared_lock<std::shared_mutex> lock(entity_mutex);
125 return std::any_cast<int>(metadata.at("data_sound_variant_id"));
126 }
127#endif
128
129
130#if PROTOCOL_VERSION < 770 /* < 1.21.5 */
131 void PigEntity::SetDataSaddleId(const bool data_saddle_id)
132 {
133 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
134 metadata["data_saddle_id"] = data_saddle_id;
135 }
136#endif
137
138 void PigEntity::SetDataBoostTime(const int data_boost_time)
139 {
140 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
141 metadata["data_boost_time"] = data_boost_time;
142 }
143
144#if PROTOCOL_VERSION > 769 /* > 1.21.4 */
145 void PigEntity::SetDataVariantId(const int data_variant_id)
146 {
147 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
148 metadata["data_variant_id"] = data_variant_id;
149 }
150#endif
151
152#if PROTOCOL_VERSION > 774 /* > 1.21.11 */
153 void PigEntity::SetDataSoundVariantId(const int data_sound_variant_id)
154 {
155 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
156 metadata["data_sound_variant_id"] = data_sound_variant_id;
157 }
158#endif
159
160
162 {
163 return 0.9;
164 }
165
167 {
168 return 0.9;
169 }
170
171}
virtual void SetMetadataValue(const int index, const std::any &value) override
virtual ProtocolCraft::Json::Value Serialize() const override
std::shared_mutex entity_mutex
Definition Entity.hpp:267
std::map< std::string, std::any > metadata
Definition Entity.hpp:282
std::map< EntityAttribute::Type, EntityAttribute > attributes
void SetDataVariantId(const int data_variant_id)
virtual double GetWidthImpl() const override
void SetDataBoostTime(const int data_boost_time)
static std::string GetClassName()
Definition PigEntity.cpp:56
int GetDataVariantId() const
virtual double GetHeightImpl() const override
virtual void SetMetadataValue(const int index, const std::any &value) override
Definition PigEntity.cpp:86
static constexpr int metadata_count
Definition PigEntity.hpp:13
virtual EntityType GetType() const override
Definition PigEntity.cpp:50
virtual ProtocolCraft::Json::Value Serialize() const override
Definition PigEntity.cpp:67
virtual std::string GetName() const override
Definition PigEntity.cpp:45
static constexpr int hierarchy_metadata_count
Definition PigEntity.hpp:16
int GetDataSoundVariantId() const
static EntityType GetClassType()
Definition PigEntity.cpp:61
static const std::array< std::string, metadata_count > metadata_names
Definition PigEntity.hpp:15
void SetDataSoundVariantId(const int data_sound_variant_id)
int GetDataBoostTime() const
Main class, basically a JsonVariant with extra utility functions it doesn't inherit JsonVariant direc...
Definition Json.hpp:45