Botcraft 1.21.5
Loading...
Searching...
No Matches
WolfEntity.cpp
Go to the documentation of this file.
1#if PROTOCOL_VERSION > 769 /* > 1.21.4 */
3
4#include <mutex>
5
6namespace Botcraft
7{
8 const std::array<std::string, WolfEntity::metadata_count> WolfEntity::metadata_names{ {
9 "data_interested_id",
10 "data_collar_color",
11 "data_remaining_anger_time",
12 "data_variant_id",
13 "data_sound_variant_id",
14 } };
15
30
35
36
37 std::string WolfEntity::GetName() const
38 {
39 return "wolf";
40 }
41
43 {
44 return EntityType::Wolf;
45 }
46
47
49 {
50 return "wolf";
51 }
52
57
58
60 {
62
63 output["metadata"]["data_interested_id"] = GetDataInterestedId();
64 output["metadata"]["data_collar_color"] = GetDataCollarColor();
65 output["metadata"]["data_remaining_anger_time"] = GetDataRemainingAngerTime();
66 output["metadata"]["data_variant_id"] = GetDataVariantId();
67 output["metadata"]["data_sound_variant_id"] = GetDataSoundVariantId();
68
69 output["attributes"]["attack_damage"] = GetAttributeAttackDamageValue();
70
71 return output;
72 }
73
74
75 void WolfEntity::SetMetadataValue(const int index, const std::any& value)
76 {
77 if (index < hierarchy_metadata_count)
78 {
80 }
82 {
83 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
85 }
86 }
87
88
90 {
91 std::shared_lock<std::shared_mutex> lock(entity_mutex);
92 return std::any_cast<bool>(metadata.at("data_interested_id"));
93 }
94
96 {
97 std::shared_lock<std::shared_mutex> lock(entity_mutex);
98 return std::any_cast<int>(metadata.at("data_collar_color"));
99 }
100
102 {
103 std::shared_lock<std::shared_mutex> lock(entity_mutex);
104 return std::any_cast<int>(metadata.at("data_remaining_anger_time"));
105 }
106
108 {
109 std::shared_lock<std::shared_mutex> lock(entity_mutex);
110 return std::any_cast<int>(metadata.at("data_variant_id"));
111 }
112
114 {
115 std::shared_lock<std::shared_mutex> lock(entity_mutex);
116 return std::any_cast<int>(metadata.at("data_sound_variant_id"));
117 }
118
119
120 void WolfEntity::SetDataInterestedId(const bool data_interested_id)
121 {
122 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
123 metadata["data_interested_id"] = data_interested_id;
124 }
125
126 void WolfEntity::SetDataCollarColor(const int data_collar_color)
127 {
128 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
129 metadata["data_collar_color"] = data_collar_color;
130 }
131
132 void WolfEntity::SetDataRemainingAngerTime(const int data_remaining_anger_time)
133 {
134 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
135 metadata["data_remaining_anger_time"] = data_remaining_anger_time;
136 }
137
138 void WolfEntity::SetDataVariantId(const int data_variant_id)
139 {
140 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
141 metadata["data_variant_id"] = data_variant_id;
142 }
143
144 void WolfEntity::SetDataSoundVariantId(const int data_variant_id)
145 {
146 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
147 metadata["data_sound_variant_id"] = data_variant_id;
148 }
149
150
152 {
153 std::shared_lock<std::shared_mutex> lock(entity_mutex);
155 }
156
157
159 {
160 return 0.6;
161 }
162
164 {
165 return 0.85;
166 }
167
168}
169#endif
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
virtual void SetMetadataValue(const int index, const std::any &value) override
virtual ProtocolCraft::Json::Value Serialize() const override
static std::string GetClassName()
virtual double GetWidthImpl() const override
int GetDataRemainingAngerTime() const
virtual EntityType GetType() const override
virtual ProtocolCraft::Json::Value Serialize() const override
void SetDataVariantId(const int data_variant_id)
static EntityType GetClassType()
virtual std::string GetName() const override
bool GetDataInterestedId() const
int GetDataSoundVariantId() const
int GetDataCollarColor() const
virtual void SetMetadataValue(const int index, const std::any &value) override
static constexpr int hierarchy_metadata_count
void SetDataCollarColor(const int data_collar_color)
int GetDataVariantId() const
virtual double GetHeightImpl() const override
double GetAttributeAttackDamageValue() const
void SetDataInterestedId(const bool data_interested_id)
static const std::array< std::string, metadata_count > metadata_names
static constexpr int metadata_count
void SetDataRemainingAngerTime(const int data_remaining_anger_time)
void SetDataSoundVariantId(const int data_sound_variant_id)
Main class, basically a JsonVariant with extra utility functions it doesn't inherit JsonVariant direc...
Definition Json.hpp:45