Botcraft 1.21.4
Loading...
Searching...
No Matches
DisplayTextDisplayEntity.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, DisplayTextDisplayEntity::metadata_count> DisplayTextDisplayEntity::metadata_names{ {
9 "data_text_id",
10 "data_line_width_id",
11 "data_background_color_id",
12 "data_text_opacity_id",
13 "data_style_flags_id",
14 } };
15
17 {
18 // Initialize all metadata with default values
21 SetDataBackgroundColorId(0x40000000);
24 }
25
30
31
33 {
34 return "text_display";
35 }
36
41
42
44 {
45 return "text_display";
46 }
47
52
53
54
56 {
58
59 output["metadata"]["data_text_id"] = GetDataTextId().Serialize();
60 output["metadata"]["data_line_width_id"] = GetDataLineWidthId();
61 output["metadata"]["data_background_color_id"] = GetDataBackgroundColorId();
62 output["metadata"]["data_text_opacity_id"] = GetDataTextOpacityId();
63 output["metadata"]["data_style_flags_id"] = GetDataStyleFlagsId();
64
65 return output;
66 }
67
68
69 void DisplayTextDisplayEntity::SetMetadataValue(const int index, const std::any& value)
70 {
71 if (index < hierarchy_metadata_count)
72 {
74 }
76 {
77 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
79 }
80 }
81
82
84 {
85 std::shared_lock<std::shared_mutex> lock(entity_mutex);
86 return std::any_cast<ProtocolCraft::Chat>(metadata.at("data_text_id"));
87 }
88
90 {
91 std::shared_lock<std::shared_mutex> lock(entity_mutex);
92 return std::any_cast<int>(metadata.at("data_line_width_id"));
93 }
94
96 {
97 std::shared_lock<std::shared_mutex> lock(entity_mutex);
98 return std::any_cast<int>(metadata.at("data_background_color_id"));
99 }
100
102 {
103 std::shared_lock<std::shared_mutex> lock(entity_mutex);
104 return std::any_cast<char>(metadata.at("data_text_opacity_id"));
105 }
106
108 {
109 std::shared_lock<std::shared_mutex> lock(entity_mutex);
110 return std::any_cast<char>(metadata.at("data_style_flags_id"));
111 }
112
113
115 {
116 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
117 metadata["data_text_id"] = data_text_id;
118 }
119
120 void DisplayTextDisplayEntity::SetDataLineWidthId(const int data_line_width_id)
121 {
122 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
123 metadata["data_line_width_id"] = data_line_width_id;
124 }
125
126 void DisplayTextDisplayEntity::SetDataBackgroundColorId(const int data_background_color_id)
127 {
128 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
129 metadata["data_background_color_id"] = data_background_color_id;
130 }
131
132 void DisplayTextDisplayEntity::SetDataTextOpacityId(const char data_text_opacity_id)
133 {
134 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
135 metadata["data_text_opacity_id"] = data_text_opacity_id;
136 }
137
138 void DisplayTextDisplayEntity::SetDataStyleFlagsId(const char data_style_flags_id)
139 {
140 std::scoped_lock<std::shared_mutex> lock(entity_mutex);
141 metadata["data_style_flags_id"] = data_style_flags_id;
142 }
143
144
146 {
147 return 0.0;
148 }
149
151 {
152 return 0.0;
153 }
154
155}
156#endif
virtual ProtocolCraft::Json::Value Serialize() const override
virtual void SetMetadataValue(const int index, const std::any &value) override
static const std::array< std::string, metadata_count > metadata_names
virtual void SetMetadataValue(const int index, const std::any &value) override
void SetDataLineWidthId(const int data_line_width_id)
void SetDataStyleFlagsId(const char data_style_flags_id)
virtual double GetWidthImpl() const override
virtual ProtocolCraft::Json::Value Serialize() const override
virtual EntityType GetType() const override
virtual double GetHeightImpl() const override
void SetDataTextId(const ProtocolCraft::Chat &data_text_id)
void SetDataTextOpacityId(const char data_text_opacity_id)
virtual std::string GetName() const override
void SetDataBackgroundColorId(const int data_background_color_id)
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
virtual Json::Value Serialize() const