Botcraft 1.21.4
Loading...
Searching...
No Matches
ZombieVillagerEntity.cpp
Go to the documentation of this file.
2
3#include <mutex>
4
5namespace Botcraft
6{
7 const std::array<std::string, ZombieVillagerEntity::metadata_count> ZombieVillagerEntity::metadata_names{ {
8 "data_converting_id",
9#if PROTOCOL_VERSION > 404 /* > 1.13.2 */
10 "data_villager_data",
11#else
12 "data_villager_profession_id"
13#endif
14 } };
15
17 {
18 // Initialize all metadata with default values
20#if PROTOCOL_VERSION > 404 /* > 1.13.2 */
22#else
23 SetDataVillagerProfessionId(0);
24#endif
25 }
26
31
32
34 {
35 return "zombie_villager";
36 }
37
42
43
45 {
46 return "zombie_villager";
47 }
48
53
54
56 {
58
59 output["metadata"]["data_converting_id"] = GetDataConvertingId();
60#if PROTOCOL_VERSION > 404 /* > 1.13.2 */
61 output["metadata"]["data_villager_data"] = { GetDataVillagerData().type, GetDataVillagerData().profession, GetDataVillagerData().level };
62#else
63 output["metadata"]["data_villager_profession_id"] = GetDataVillagerProfessionId();
64#endif
65
66 return output;
67 }
68
69
70 void ZombieVillagerEntity::SetMetadataValue(const int index, const std::any& value)
71 {
72 if (index < hierarchy_metadata_count)
73 {
75 }
77 {
78 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
80 }
81 }
82
84 {
85 std::shared_lock<std::shared_mutex> lock(entity_mutex);
86 return std::any_cast<bool>(metadata.at("data_converting_id"));
87 }
88
89#if PROTOCOL_VERSION > 404 /* > 1.13.2 */
91 {
92 std::shared_lock<std::shared_mutex> lock(entity_mutex);
93 return std::any_cast<VillagerData>(metadata.at("data_villager_data"));
94 }
95#else
96 int ZombieVillagerEntity::GetDataVillagerProfessionId() const
97 {
98 std::shared_lock<std::shared_mutex> lock(entity_mutex);
99 return std::any_cast<int>(metadata.at("data_villager_profession_id"));
100 }
101#endif
102
103
104 void ZombieVillagerEntity::SetDataConvertingId(const bool data_converting_id)
105 {
106 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
107 metadata["data_converting_id"] = data_converting_id;
108 }
109
110#if PROTOCOL_VERSION > 404 /* > 1.13.2 */
112 {
113 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
114 metadata["data_villager_data"] = data_villager_data;
115 }
116#else
117 void ZombieVillagerEntity::SetDataVillagerProfessionId(const int data_villager_profession_id)
118 {
119 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
120 metadata["data_villager_profession_id"] = data_villager_profession_id;
121 }
122#endif
123
124
126 {
127 return 0.6;
128 }
129
131 {
132 return 1.95;
133 }
134
135}
std::shared_mutex entity_mutex
Definition Entity.hpp:253
std::map< std::string, std::any > metadata
Definition Entity.hpp:268
virtual void SetMetadataValue(const int index, const std::any &value) override
virtual ProtocolCraft::Json::Value Serialize() const override
static const std::array< std::string, metadata_count > metadata_names
virtual double GetHeightImpl() const override
void SetDataConvertingId(const bool data_converting_id)
virtual void SetMetadataValue(const int index, const std::any &value) override
void SetDataVillagerData(const VillagerData &data_villager_data)
virtual std::string GetName() const override
virtual EntityType GetType() const override
static constexpr int hierarchy_metadata_count
virtual double GetWidthImpl() const override
virtual ProtocolCraft::Json::Value Serialize() const override
Main class, basically a JsonVariant with extra utility functions it doesn't inherit JsonVariant direc...
Definition Json.hpp:45