3#if PROTOCOL_VERSION > 765
15#if PROTOCOL_VERSION < 766
18#if PROTOCOL_VERSION < 341
19 "data_particle_argument1",
20 "data_particle_argument2",
27#if PROTOCOL_VERSION < 761
32#if PROTOCOL_VERSION < 766
36#if PROTOCOL_VERSION > 340
39#if PROTOCOL_VERSION > 765
40 std::dynamic_pointer_cast<ProtocolCraft::ColorParticleOptions>(particle.GetOptions())->SetColor(-1);
45 SetDataParticleArgument1(0);
46 SetDataParticleArgument2(0);
58 return "area_effect_cloud";
69 return "area_effect_cloud";
83#if PROTOCOL_VERSION < 766
84 output[
"metadata"][
"data_color"] = GetDataColor();
87#if PROTOCOL_VERSION > 340
108 if (metadata_name ==
"data_radius")
122#if PROTOCOL_VERSION < 766
123 int AreaEffectCloudEntity::GetDataColor()
const
126 return std::any_cast<int>(
metadata.at(
"data_color"));
133 return std::any_cast<bool>(
metadata.at(
"data_waiting"));
136#if PROTOCOL_VERSION > 340
140 return std::any_cast<std::shared_ptr<ProtocolCraft::Particle>>(
metadata.at(
"data_particle"));
146 return std::any_cast<std::optional<int>>(
metadata.at(
"data_particle"));
149 int AreaEffectCloudEntity::GetDataParticleArgument1()
const
152 return std::any_cast<int>(
metadata.at(
"data_particle_argument1"));
155 int AreaEffectCloudEntity::GetDataParticleArgument2()
const
158 return std::any_cast<int>(
metadata.at(
"data_particle_argument2"));
166 metadata[
"data_radius"] = data_radius;
172#if PROTOCOL_VERSION < 766
173 void AreaEffectCloudEntity::SetDataColor(
const int data_color)
176 metadata[
"data_color"] = data_color;
183 metadata[
"data_waiting"] = data_waiting;
186#if PROTOCOL_VERSION > 340
190 metadata[
"data_particle"] = data_particle;
196 metadata[
"data_particle"] = data_particle;
199 void AreaEffectCloudEntity::SetDataParticleArgument1(
const int data_particle_argument1)
202 metadata[
"data_particle_argument1"] = data_particle_argument1;
205 void AreaEffectCloudEntity::SetDataParticleArgument2(
const int data_particle_argument2)
208 metadata[
"data_particle_argument2"] = data_particle_argument2;
215 return std::any_cast<float>(
metadata.at(
"data_radius"));
220 return std::any_cast<float>(
metadata.at(
"data_radius")) * 2.0;
float GetDataRadius() const
static std::string GetClassName()
std::shared_ptr< ProtocolCraft::Particle > GetDataParticle() const
void SetDataRadius(const float data_radius)
void SetDataWaiting(const bool data_waiting)
virtual ~AreaEffectCloudEntity()
virtual EntityType GetType() const override
virtual void SetMetadataValue(const int index, const std::any &value) override
static EntityType GetClassType()
virtual double GetWidthImpl() const override
void SetDataParticle(const ProtocolCraft::Particle &data_particle)
virtual ProtocolCraft::Json::Value Serialize() const override
virtual double GetHeightImpl() const override
float GetDataRadiusImpl() const
static constexpr int metadata_count
virtual std::string GetName() const override
bool GetDataWaiting() const
static const std::array< std::string, metadata_count > metadata_names
static constexpr int hierarchy_metadata_count
virtual ProtocolCraft::Json::Value Serialize() const
virtual void SetMetadataValue(const int index, const std::any &value)
std::shared_mutex entity_mutex
std::map< std::string, std::any > metadata
Main class, basically a JsonVariant with extra utility functions it doesn't inherit JsonVariant direc...
Particle & SetParticleType(const ProtocolCraft::ParticleType particle_type_)