Botcraft 1.21.4
Loading...
Searching...
No Matches
MobEntity.cpp
Go to the documentation of this file.
2
3#include <mutex>
4
5namespace Botcraft
6{
7 const std::array<std::string, MobEntity::metadata_count> MobEntity::metadata_names{ {
8 "data_mob_flags_id",
9 } };
10
12 {
13 // Initialize all metadata with default values
15
16 // Initialize all attributes with default values
18#if PROTOCOL_VERSION > 404 /* > 1.13.2 */ && PROTOCOL_VERSION < 767 /* < 1.21 */
20#endif
21 }
22
24 {
25
26 }
27
28 bool MobEntity::IsMob() const
29 {
30 return true;
31 }
32
33
35 {
37
38 output["metadata"]["data_mob_flags_id"] = GetDataMobFlagsId();
39
40 output["attributes"]["follow_range"] = GetAttributeFollowRangeValue();
41#if PROTOCOL_VERSION > 404 /* > 1.13.2 */ && PROTOCOL_VERSION < 767 /* < 1.21 */
42 output["attributes"]["attack_knockback"] = GetAttributeAttackKnockbackValue();
43#endif
44
45 return output;
46 }
47
48
49 void MobEntity::SetMetadataValue(const int index, const std::any& value)
50 {
51 if (index < hierarchy_metadata_count)
52 {
54 }
56 {
57 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
59 }
60 }
61
63 {
64 std::shared_lock<std::shared_mutex> lock(entity_mutex);
65 return std::any_cast<char>(metadata.at("data_mob_flags_id"));
66 }
67
68
69 void MobEntity::SetDataMobFlagsId(const char data_mob_flags_id)
70 {
71 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
72 metadata["data_mob_flags_id"] = data_mob_flags_id;
73 }
74
75
77 {
78 std::shared_lock<std::shared_mutex> lock(entity_mutex);
80 }
81
82#if PROTOCOL_VERSION > 404 /* > 1.13.2 */ && PROTOCOL_VERSION < 767 /* < 1.21 */
84 {
85 std::shared_lock<std::shared_mutex> lock(entity_mutex);
87 }
88#endif
89
90}
std::shared_mutex entity_mutex
Definition Entity.hpp:253
std::map< std::string, std::any > metadata
Definition Entity.hpp:268
std::map< EntityAttribute::Type, EntityAttribute > attributes
virtual ProtocolCraft::Json::Value Serialize() const override
double GetAttributeAttackKnockbackValue() const
virtual void SetMetadataValue(const int index, const std::any &value) override
double GetAttributeFollowRangeValue() const
Definition MobEntity.cpp:76
virtual ProtocolCraft::Json::Value Serialize() const override
Definition MobEntity.cpp:34
char GetDataMobFlagsId() const
Definition MobEntity.cpp:62
virtual void SetMetadataValue(const int index, const std::any &value) override
Definition MobEntity.cpp:49
static constexpr int hierarchy_metadata_count
Definition MobEntity.hpp:12
void SetDataMobFlagsId(const char data_mob_flags_id)
Definition MobEntity.cpp:69
virtual bool IsMob() const override
Definition MobEntity.cpp:28
static const std::array< std::string, metadata_count > metadata_names
Definition MobEntity.hpp:11
static constexpr int metadata_count
Definition MobEntity.hpp:10
Main class, basically a JsonVariant with extra utility functions it doesn't inherit JsonVariant direc...
Definition Json.hpp:45