Botcraft 1.21.11
Loading...
Searching...
No Matches
BeeEntity.cpp
Go to the documentation of this file.
1#if PROTOCOL_VERSION > 498 /* > 1.14.4 */
3
4#include <mutex>
5
6namespace Botcraft
7{
8 const std::array<std::string, BeeEntity::metadata_count> BeeEntity::metadata_names{ {
9 "data_flags_id",
10#if PROTOCOL_VERSION < 774 /* < 1.21.11 */
11 "data_remaining_anger_time",
12#else
13 "data_anger_end_time",
14#endif
15 } };
16
18 {
19 // Initialize all metadata with default values
21#if PROTOCOL_VERSION < 774 /* < 1.21.11 */
22 SetDataRemainingAngerTime(0);
23#else
25#endif
26
27 // Initialize all attributes with default values
32#if PROTOCOL_VERSION < 768 /* < 1.21.2 */
34#endif
35 }
36
38 {
39
40 }
41
42
43 std::string BeeEntity::GetName() const
44 {
45 return "bee";
46 }
47
49 {
50 return EntityType::Bee;
51 }
52
53
55 {
56 return "bee";
57 }
58
63
64
66 {
68
69 output["metadata"]["data_flags_id"] = GetDataFlagsId();
70#if PROTOCOL_VERSION < 774 /* < 1.21.11 */
71 output["metadata"]["data_remaining_anger_time"] = GetDataRemainingAngerTime();
72#else
73 output["metadata"]["data_anger_end_time"] = GetDataAngerEndTime();
74#endif
75
76 output["attributes"]["flying_speed"] = GetAttributeFlyingSpeedValue();
77 output["attributes"]["attack_damage"] = GetAttributeAttackDamageValue();
78
79
80 return output;
81 }
82
83
84 void BeeEntity::SetMetadataValue(const int index, const std::any& value)
85 {
86 if (index < hierarchy_metadata_count)
87 {
89 }
91 {
92 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
94 }
95 }
96
98 {
99 std::shared_lock<std::shared_mutex> lock(entity_mutex);
100 return std::any_cast<char>(metadata.at("data_flags_id"));
101 }
102
103#if PROTOCOL_VERSION < 774 /* < 1.21.11 */
104 int BeeEntity::GetDataRemainingAngerTime() const
105 {
106 std::shared_lock<std::shared_mutex> lock(entity_mutex);
107 return std::any_cast<int>(metadata.at("data_remaining_anger_time"));
108 }
109#else
110 long long int BeeEntity::GetDataAngerEndTime() const
111 {
112 std::shared_lock<std::shared_mutex> lock(entity_mutex);
113 return std::any_cast<long long int>(metadata.at("data_anger_end_time"));
114 }
115#endif
116
117
118 void BeeEntity::SetDataFlagsId(const char data_flags_id)
119 {
120 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
121 metadata["data_flags_id"] = data_flags_id;
122 }
123
124#if PROTOCOL_VERSION < 774 /* < 1.21.11 */
125 void BeeEntity::SetDataRemainingAngerTime(const int data_remaining_anger_time)
126 {
127 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
128 metadata["data_remaining_anger_time"] = data_remaining_anger_time;
129 }
130#else
131 void BeeEntity::SetDataAngerEndTime(const long long int data_anger_end_time)
132 {
133 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
134 metadata["data_anger_end_time"] = data_anger_end_time;
135 }
136#endif
137
138
140 {
141 std::shared_lock<std::shared_mutex> lock(entity_mutex);
143 }
144
146 {
147 std::shared_lock<std::shared_mutex> lock(entity_mutex);
149 }
150
151
153 {
154 return 0.7;
155 }
156
158 {
159 return 0.6;
160 }
161
162}
163#endif
virtual void SetMetadataValue(const int index, const std::any &value) override
virtual ProtocolCraft::Json::Value Serialize() const override
static constexpr int hierarchy_metadata_count
Definition BeeEntity.hpp:13
virtual EntityType GetType() const override
Definition BeeEntity.cpp:48
static constexpr int metadata_count
Definition BeeEntity.hpp:11
long long int GetDataAngerEndTime() const
static const std::array< std::string, metadata_count > metadata_names
Definition BeeEntity.hpp:12
char GetDataFlagsId() const
Definition BeeEntity.cpp:97
static std::string GetClassName()
Definition BeeEntity.cpp:54
static EntityType GetClassType()
Definition BeeEntity.cpp:59
virtual double GetHeightImpl() const override
virtual double GetWidthImpl() const override
double GetAttributeAttackDamageValue() const
void SetDataAngerEndTime(const long long int data_anger_end_time)
virtual std::string GetName() const override
Definition BeeEntity.cpp:43
void SetDataFlagsId(const char data_flags_id)
virtual void SetMetadataValue(const int index, const std::any &value) override
Definition BeeEntity.cpp:84
virtual ProtocolCraft::Json::Value Serialize() const override
Definition BeeEntity.cpp:65
double GetAttributeFlyingSpeedValue() const
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
Main class, basically a JsonVariant with extra utility functions it doesn't inherit JsonVariant direc...
Definition Json.hpp:45