Botcraft 1.21.4
Loading...
Searching...
No Matches
DisplayEntity.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, DisplayEntity::metadata_count> DisplayEntity::metadata_names{ {
9#if PROTOCOL_VERSION < 764 /* < 1.20.2 */
10 "data_interpolation_start_delta_ticks_id",
11 "data_interpolation_duration_id",
12#else
13 "data_transformation_interpolation_start_delta_ticks_id",
14 "data_transformation_interpolation_duration_id",
15 "data_pos_rot_interpolation_duration_id",
16#endif
17 "data_translation_id",
18 "data_scale_id",
19 "data_left_rotation_id",
20 "data_right_rotation_id",
21 "data_billboard_render_constraints_id",
22 "data_brightness_override_id",
23 "data_view_range_id",
24 "data_shadow_radius_id",
25 "data_shadow_strength_id",
26 "data_width_id",
27 "data_height_id",
28 "data_glow_color_override_id",
29 } };
30
32 {
33 // Initialize all metadata with default values
34#if PROTOCOL_VERSION < 764 /* < 1.20.2 */
35 SetDataInterpolationStartDeltaTicksId(0);
36 SetDataInterpolationDurationId(0);
37#else
41#endif
42 SetDataTranslationId({0.0f, 0.0f, 0.0f});
43 SetDataScaleId({1.0f, 1.0f, 1.0f});
44 SetDataLeftRotationId({0.0f, 0.0f, 0.0f, 0.0f});
45 SetDataRightRotationId({0.0f, 0.0f, 0.0f, 0.0f});
51 SetDataWidthId(0.0f);
52 SetDataHeightId(0.0f);
54 }
55
60
61
63 {
64 return true;
65 }
66
67
69 {
71
72#if PROTOCOL_VERSION < 764 /* < 1.20.2 */
73 output["metadata"]["data_interpolation_start_delta_ticks_id"] = GetDataInterpolationStartDeltaTicksId();
74 output["metadata"]["data_interpolation_duration_id"] = GetDataInterpolationDurationId();
75#else
76 output["metadata"]["data_transformation_interpolation_start_delta_ticks_id"] = GetDataTransformationInterpolationStartDeltaTicksId();
77 output["metadata"]["data_transformation_interpolation_duration_id"] = GetDataTransformationInterpolationDurationId();
78 output["metadata"]["data_pos_rot_interpolation_duration_id"] = GetDataPosRotInterpolationDurationId();
79#endif
80 output["metadata"]["data_translation_id"] = GetDataTranslationId().Serialize();
81 output["metadata"]["data_scale_id"] = GetDataScaleId().Serialize();
82 output["metadata"]["data_left_rotation_id"] = GetDataLeftRotationId();
83 output["metadata"]["data_right_rotation_id"] = GetDataRightRotationId();
84 output["metadata"]["data_billboard_render_constraints_id"] = GetDataBillboardRenderConstraintsId();
85 output["metadata"]["data_brightness_override_id"] = GetDataBrightnessOverrideId();
86 output["metadata"]["data_view_range_id"] = GetDataViewRangeId();
87 output["metadata"]["data_shadow_radius_id"] = GetDataShadowRadiusId();
88 output["metadata"]["data_shadow_strength_id"] = GetDataShadowStrengthId();
89 output["metadata"]["data_width_id"] = GetDataWidthId();
90 output["metadata"]["data_height_id"] = GetDataHeightId();
91 output["metadata"]["data_glow_color_override_id"] = GetDataGlowColorOverrideId();
92
93 return output;
94 }
95
96
97 void DisplayEntity::SetMetadataValue(const int index, const std::any& value)
98 {
99 if (index < hierarchy_metadata_count)
100 {
101 Entity::SetMetadataValue(index, value);
102 }
103 else if (index - hierarchy_metadata_count < metadata_count)
104 {
105 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
107 }
108 }
109
110
111#if PROTOCOL_VERSION < 764 /* < 1.20.2 */
112 int DisplayEntity::GetDataInterpolationStartDeltaTicksId() const
113 {
114 std::shared_lock<std::shared_mutex> lock(entity_mutex);
115 return std::any_cast<int>(metadata.at("data_interpolation_start_delta_ticks_id"));
116 }
117
118 int DisplayEntity::GetDataInterpolationDurationId() const
119 {
120 std::shared_lock<std::shared_mutex> lock(entity_mutex);
121 return std::any_cast<int>(metadata.at("data_interpolation_duration_id"));
122 }
123#else
125 {
126 std::shared_lock<std::shared_mutex> lock(entity_mutex);
127 return std::any_cast<int>(metadata.at("data_transformation_interpolation_start_delta_ticks_id"));
128 }
129
131 {
132 std::shared_lock<std::shared_mutex> lock(entity_mutex);
133 return std::any_cast<int>(metadata.at("data_transformation_interpolation_duration_id"));
134 }
135
137 {
138 std::shared_lock<std::shared_mutex> lock(entity_mutex);
139 return std::any_cast<int>(metadata.at("data_pos_rot_interpolation_duration_id"));
140 }
141#endif
142
144 {
145 std::shared_lock<std::shared_mutex> lock(entity_mutex);
146 return std::any_cast<Vector3<float>>(metadata.at("data_translation_id"));
147 }
148
150 {
151 std::shared_lock<std::shared_mutex> lock(entity_mutex);
152 return std::any_cast<Vector3<float>>(metadata.at("data_scale_id"));
153 }
154
155 std::array<float, 4> DisplayEntity::GetDataLeftRotationId() const
156 {
157 std::shared_lock<std::shared_mutex> lock(entity_mutex);
158 return std::any_cast<std::array<float, 4>>(metadata.at("data_left_rotation_id"));
159 }
160
161 std::array<float, 4> DisplayEntity::GetDataRightRotationId() const
162 {
163 std::shared_lock<std::shared_mutex> lock(entity_mutex);
164 return std::any_cast<std::array<float, 4>>(metadata.at("data_right_rotation_id"));
165 }
166
168 {
169 std::shared_lock<std::shared_mutex> lock(entity_mutex);
170 return std::any_cast<char>(metadata.at("data_billboard_render_constraints_id"));
171 }
172
174 {
175 std::shared_lock<std::shared_mutex> lock(entity_mutex);
176 return std::any_cast<int>(metadata.at("data_brightness_override_id"));
177 }
178
180 {
181 std::shared_lock<std::shared_mutex> lock(entity_mutex);
182 return std::any_cast<float>(metadata.at("data_view_range_id"));
183 }
184
186 {
187 std::shared_lock<std::shared_mutex> lock(entity_mutex);
188 return std::any_cast<float>(metadata.at("data_shadow_radius_id"));
189 }
190
192 {
193 std::shared_lock<std::shared_mutex> lock(entity_mutex);
194 return std::any_cast<float>(metadata.at("data_shadow_strength_id"));
195 }
196
198 {
199 std::shared_lock<std::shared_mutex> lock(entity_mutex);
200 return std::any_cast<float>(metadata.at("data_width_id"));
201 }
202
204 {
205 std::shared_lock<std::shared_mutex> lock(entity_mutex);
206 return std::any_cast<float>(metadata.at("data_height_id"));
207 }
208
210 {
211 std::shared_lock<std::shared_mutex> lock(entity_mutex);
212 return std::any_cast<int>(metadata.at("data_glow_color_override_id"));
213 }
214
215
216#if PROTOCOL_VERSION < 764 /* < 1.20.2 */
217 void DisplayEntity::SetDataInterpolationStartDeltaTicksId(const int data_interpolation_start_delta_ticks_id)
218 {
219 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
220 metadata["data_interpolation_start_delta_ticks_id"] = data_interpolation_start_delta_ticks_id;
221 }
222
223 void DisplayEntity::SetDataInterpolationDurationId(const int data_interpolation_duration_id)
224 {
225 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
226 metadata["data_interpolation_duration_id"] = data_interpolation_duration_id;
227 }
228#else
229 void DisplayEntity::SetDataTransformationInterpolationStartDeltaTicksId(const int data_transformation_interpolation_start_delta_ticks_id)
230 {
231 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
232 metadata["data_transformation_interpolation_start_delta_ticks_id"] = data_transformation_interpolation_start_delta_ticks_id;
233 }
234
235 void DisplayEntity::SetDataTransformationInterpolationDurationId(const int data_transformation_interpolation_duration_id)
236 {
237 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
238 metadata["data_transformation_interpolation_duration_id"] = data_transformation_interpolation_duration_id;
239 }
240
241 void DisplayEntity::SetDataPosRotInterpolationDurationId(const int data_pos_rot_interpolation_duration_id)
242 {
243 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
244 metadata["data_pos_rot_interpolation_duration_id"] = data_pos_rot_interpolation_duration_id;
245 }
246#endif
247
249 {
250 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
251 metadata["data_translation_id"] = data_translation_id;
252 }
253
255 {
256 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
257 metadata["data_scale_id"] = data_scale_id;
258 }
259
260 void DisplayEntity::SetDataLeftRotationId(const std::array<float, 4> data_left_rotation_id)
261 {
262 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
263 metadata["data_left_rotation_id"] = data_left_rotation_id;
264 }
265
266 void DisplayEntity::SetDataRightRotationId(const std::array<float, 4> data_right_rotation_id)
267 {
268 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
269 metadata["data_right_rotation_id"] = data_right_rotation_id;
270 }
271
272 void DisplayEntity::SetDataBillboardRenderConstraintsId(const char data_billboard_render_constraints_id)
273 {
274 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
275 metadata["data_billboard_render_constraints_id"] = data_billboard_render_constraints_id;
276 }
277
278 void DisplayEntity::SetDataBrightnessOverrideId(const int data_brightness_override_id)
279 {
280 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
281 metadata["data_brightness_override_id"] = data_brightness_override_id;
282 }
283
284 void DisplayEntity::SetDataViewRangeId(const float data_view_range_id)
285 {
286 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
287 metadata["data_view_range_id"] = data_view_range_id;
288 }
289
290 void DisplayEntity::SetDataShadowRadiusId(const float data_shadow_radius_id)
291 {
292 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
293 metadata["data_shadow_radius_id"] = data_shadow_radius_id;
294 }
295
296 void DisplayEntity::SetDataShadowStrengthId(const float data_shadow_strength_id)
297 {
298 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
299 metadata["data_shadow_strength_id"] = data_shadow_strength_id;
300 }
301
302 void DisplayEntity::SetDataWidthId(const float data_width_id)
303 {
304 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
305 metadata["data_width_id"] = data_width_id;
306 }
307
308 void DisplayEntity::SetDataHeightId(const float data_height_id)
309 {
310 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
311 metadata["data_height_id"] = data_height_id;
312 }
313
314 void DisplayEntity::SetDataGlowColorOverrideId(const int data_glow_color_override_id)
315 {
316 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
317 metadata["data_glow_color_override_id"] = data_glow_color_override_id;
318 }
319}
320#endif
void SetDataTranslationId(const Vector3< float > data_translation_id)
int GetDataTransformationInterpolationStartDeltaTicksId() const
int GetDataTransformationInterpolationDurationId() const
char GetDataBillboardRenderConstraintsId() const
Vector3< float > GetDataTranslationId() const
int GetDataPosRotInterpolationDurationId() const
std::array< float, 4 > GetDataRightRotationId() const
void SetDataTransformationInterpolationStartDeltaTicksId(const int data_transformation_interpolation_start_delta_ticks_id)
void SetDataHeightId(const float data_height_id)
virtual ProtocolCraft::Json::Value Serialize() const override
int GetDataGlowColorOverrideId() const
void SetDataRightRotationId(const std::array< float, 4 > data_right_rotation_id)
void SetDataShadowRadiusId(const float data_shadow_radius_id)
virtual bool IsDisplay() const override
static const std::array< std::string, metadata_count > metadata_names
int GetDataBrightnessOverrideId() const
static constexpr int metadata_count
float GetDataShadowRadiusId() const
virtual void SetMetadataValue(const int index, const std::any &value) override
void SetDataScaleId(const Vector3< float > data_scale_id)
float GetDataViewRangeId() const
void SetDataBrightnessOverrideId(const int data_brightness_override_id)
std::array< float, 4 > GetDataLeftRotationId() const
void SetDataShadowStrengthId(const float data_shadow_strength_id)
void SetDataBillboardRenderConstraintsId(const char data_billboard_render_constraints_id)
float GetDataShadowStrengthId() const
void SetDataPosRotInterpolationDurationId(const int data_pos_rot_interpolation_duration_id)
Vector3< float > GetDataScaleId() const
void SetDataViewRangeId(const float data_view_range_id)
void SetDataTransformationInterpolationDurationId(const int data_transformation_interpolation_duration_id)
void SetDataLeftRotationId(const std::array< float, 4 > data_left_rotation_id)
static constexpr int hierarchy_metadata_count
void SetDataWidthId(const float data_width_id)
void SetDataGlowColorOverrideId(const int data_glow_color_override_id)
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
Main class, basically a JsonVariant with extra utility functions it doesn't inherit JsonVariant direc...
Definition Json.hpp:45