Botcraft 1.21.5
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 } };
16
18 {
19 // Initialize all metadata with default values
20#if PROTOCOL_VERSION < 770 /* < 1.21.5 */
21 SetDataSaddleId(false);
22#endif
24#if PROTOCOL_VERSION > 769 /* > 1.21.4 */
26#endif
27
28 // Initialize all attributes with default values
31 }
32
34 {
35
36 }
37
38
39 std::string PigEntity::GetName() const
40 {
41 return "pig";
42 }
43
45 {
46 return EntityType::Pig;
47 }
48
49
51 {
52 return "pig";
53 }
54
59
60
62 {
64
65#if PROTOCOL_VERSION < 770 /* < 1.21.5 */
66 output["metadata"]["data_saddle_id"] = GetDataSaddleId();
67#endif
68 output["metadata"]["data_boost_time"] = GetDataBoostTime();
69#if PROTOCOL_VERSION > 769 /* > 1.21.4 */
70 output["metadata"]["data_variant_id"] = GetDataVariantId();
71#endif
72
73 return output;
74 }
75
76
77 void PigEntity::SetMetadataValue(const int index, const std::any& value)
78 {
79 if (index < hierarchy_metadata_count)
80 {
82 }
84 {
85 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
87 }
88 }
89
90#if PROTOCOL_VERSION < 770 /* < 1.21.5 */
91 bool PigEntity::GetDataSaddleId() const
92 {
93 std::shared_lock<std::shared_mutex> lock(entity_mutex);
94 return std::any_cast<bool>(metadata.at("data_saddle_id"));
95 }
96#endif
97
99 {
100 std::shared_lock<std::shared_mutex> lock(entity_mutex);
101 return std::any_cast<int>(metadata.at("data_boost_time"));
102 }
103
104#if PROTOCOL_VERSION > 769 /* > 1.21.4 */
106 {
107 std::shared_lock<std::shared_mutex> lock(entity_mutex);
108 return std::any_cast<int>(metadata.at("data_variant_id"));
109 }
110#endif
111
112
113#if PROTOCOL_VERSION < 770 /* < 1.21.5 */
114 void PigEntity::SetDataSaddleId(const bool data_saddle_id)
115 {
116 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
117 metadata["data_saddle_id"] = data_saddle_id;
118 }
119#endif
120
121 void PigEntity::SetDataBoostTime(const int data_boost_time)
122 {
123 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
124 metadata["data_boost_time"] = data_boost_time;
125 }
126
127#if PROTOCOL_VERSION > 769 /* > 1.21.4 */
128 void PigEntity::SetDataVariantId(const int data_variant_id)
129 {
130 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
131 metadata["data_variant_id"] = data_variant_id;
132 }
133#endif
134
135
137 {
138 return 0.9;
139 }
140
142 {
143 return 0.9;
144 }
145
146}
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:259
std::map< std::string, std::any > metadata
Definition Entity.hpp:274
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:50
int GetDataVariantId() const
virtual double GetHeightImpl() const override
virtual void SetMetadataValue(const int index, const std::any &value) override
Definition PigEntity.cpp:77
static constexpr int metadata_count
Definition PigEntity.hpp:10
virtual EntityType GetType() const override
Definition PigEntity.cpp:44
virtual ProtocolCraft::Json::Value Serialize() const override
Definition PigEntity.cpp:61
virtual std::string GetName() const override
Definition PigEntity.cpp:39
static constexpr int hierarchy_metadata_count
Definition PigEntity.hpp:12
static EntityType GetClassType()
Definition PigEntity.cpp:55
static const std::array< std::string, metadata_count > metadata_names
Definition PigEntity.hpp:11
int GetDataBoostTime() const
Definition PigEntity.cpp:98
Main class, basically a JsonVariant with extra utility functions it doesn't inherit JsonVariant direc...
Definition Json.hpp:45