Botcraft 1.21.4
Loading...
Searching...
No Matches
InteractionEntity.cpp
Go to the documentation of this file.
1#if PROTOCOL_VERSION > 761 /* > 1.19.3 */
3
4#include <mutex>
5
6namespace Botcraft
7{
8 const std::array<std::string, InteractionEntity::metadata_count> InteractionEntity::metadata_names{ {
9 "data_width_id",
10 "data_height_id",
11 "data_response_id",
12 } };
13
15 {
16 // Initialize all metadata with default values
17 SetDataWidthId(1.0f);
18 SetDataHeightId(1.0f);
19 SetDataResponseId(false);
20 }
21
26
27
28 std::string InteractionEntity::GetName() const
29 {
30 return "interaction";
31 }
32
37
38
40 {
41 return "interaction";
42 }
43
48
49
50
52 {
54
55 output["metadata"]["data_width_id"] = GetDataWidthId();
56 output["metadata"]["data_height_id"] = GetDataHeightId();
57 output["metadata"]["data_response_id"] = GetDataResponseId();
58
59 return output;
60 }
61
62
63 void InteractionEntity::SetMetadataValue(const int index, const std::any& value)
64 {
65 if (index < hierarchy_metadata_count)
66 {
67 Entity::SetMetadataValue(index, value);
68 }
70 {
71 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
73 }
74 }
75
76
78 {
79 std::shared_lock<std::shared_mutex> lock(entity_mutex);
80 return std::any_cast<float>(metadata.at("data_width_id"));
81 }
82
84 {
85 std::shared_lock<std::shared_mutex> lock(entity_mutex);
86 return std::any_cast<float>(metadata.at("data_height_id"));
87 }
88
90 {
91 std::shared_lock<std::shared_mutex> lock(entity_mutex);
92 return std::any_cast<bool>(metadata.at("data_response_id"));
93 }
94
95
96 void InteractionEntity::SetDataWidthId(const float data_width_id)
97 {
98 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
99 metadata["data_width_id"] = data_width_id;
100 }
101
102 void InteractionEntity::SetDataHeightId(const float data_height_id)
103 {
104 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
105 metadata["data_height_id"] = data_height_id;
106 }
107
108 void InteractionEntity::SetDataResponseId(const bool data_response_id)
109 {
110 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
111 metadata["data_response_id"] = data_response_id;
112 }
113
114
116 {
117 return 0.0;
118 }
119
121 {
122 return 0.0;
123 }
124
125}
126#endif
virtual ProtocolCraft::Json::Value Serialize() const
Definition Entity.cpp:1095
virtual void SetMetadataValue(const int index, const std::any &value)
Definition Entity.cpp:622
std::shared_mutex entity_mutex
Definition Entity.hpp:253
std::map< std::string, std::any > metadata
Definition Entity.hpp:268
static constexpr int hierarchy_metadata_count
void SetDataResponseId(const bool data_response_id)
virtual std::string GetName() const override
static const std::array< std::string, metadata_count > metadata_names
virtual void SetMetadataValue(const int index, const std::any &value) override
virtual ProtocolCraft::Json::Value Serialize() const override
static std::string GetClassName()
static constexpr int metadata_count
virtual EntityType GetType() const override
void SetDataWidthId(const float data_width_id)
void SetDataHeightId(const float data_height_id)
virtual double GetWidthImpl() const override
virtual double GetHeightImpl() const override
Main class, basically a JsonVariant with extra utility functions it doesn't inherit JsonVariant direc...
Definition Json.hpp:45