10#if PROTOCOL_VERSION > 340
28#if PROTOCOL_VERSION < 458
29 enum class ObjectEntityType;
36 std::chrono::steady_clock::time_point
end;
54#if PROTOCOL_VERSION > 754
56#elif PROTOCOL_VERSION > 404
82#if PROTOCOL_VERSION > 340
90#if PROTOCOL_VERSION > 404
93#if PROTOCOL_VERSION > 754
100#if PROTOCOL_VERSION > 340
101 void SetDataCustomName(
const std::optional<ProtocolCraft::Chat>& data_custom_name);
108#if PROTOCOL_VERSION > 404
111#if PROTOCOL_VERSION > 754
129 std::map<EquipmentSlot, ProtocolCraft::Slot>
GetEquipments()
const;
133 std::vector<Renderer::Face>
GetFaces(
const bool reset_uptodate_status);
141 virtual void SetX(
const double x_);
142 virtual void SetY(
const double y_);
143 virtual void SetZ(
const double z_);
144 virtual void SetYaw(
const float yaw_);
145 virtual void SetPitch(
const float pitch_);
152 void SetEffects(
const std::vector<EntityEffect>& effects_);
170#if PROTOCOL_VERSION > 761
173#if PROTOCOL_VERSION > 764
181 virtual bool IsMob()
const;
183#if PROTOCOL_VERSION > 578
186#if PROTOCOL_VERSION < 771
187 virtual bool IsFlyingMob()
const;
194#if PROTOCOL_VERSION > 769
199#if PROTOCOL_VERSION > 736
203#if PROTOCOL_VERSION > 769
207#if PROTOCOL_VERSION > 404
212#if PROTOCOL_VERSION > 477
217#if PROTOCOL_VERSION > 404
221#if PROTOCOL_VERSION > 765
224#if PROTOCOL_VERSION > 766
227#if PROTOCOL_VERSION > 767
231 virtual bool IsBoat()
const;
234 virtual bool IsRaft()
const;
236#if PROTOCOL_VERSION > 772
239#if PROTOCOL_VERSION > 773
242#if PROTOCOL_VERSION > 775
248#if PROTOCOL_VERSION < 458
249 static std::shared_ptr<Entity> CreateObjectEntity(
const ObjectEntityType type);
261#if PROTOCOL_VERSION > 404
299#if PROTOCOL_VERSION > 340
300#if PROTOCOL_VERSION > 767
304#if PROTOCOL_VERSION > 758
308#if PROTOCOL_VERSION > 765
313#if PROTOCOL_VERSION > 754
316#if PROTOCOL_VERSION > 767
321#if PROTOCOL_VERSION > 498
324#if PROTOCOL_VERSION > 767
329#if PROTOCOL_VERSION > 761
332#if PROTOCOL_VERSION < 768
335#if PROTOCOL_VERSION > 765
338#if PROTOCOL_VERSION > 764
341#if PROTOCOL_VERSION > 765
344#if PROTOCOL_VERSION > 758 && PROTOCOL_VERSION < 762
347#if PROTOCOL_VERSION > 404 && PROTOCOL_VERSION < 762
350#if PROTOCOL_VERSION > 760
353#if PROTOCOL_VERSION > 773
356#if PROTOCOL_VERSION > 761
360#if PROTOCOL_VERSION > 767
364#if PROTOCOL_VERSION > 761 && PROTOCOL_VERSION < 768
367#if PROTOCOL_VERSION > 761
372#if PROTOCOL_VERSION > 772
375#if PROTOCOL_VERSION > 761
379#if PROTOCOL_VERSION > 767
382#if PROTOCOL_VERSION > 767 && PROTOCOL_VERSION < 769
386#if PROTOCOL_VERSION > 776
389#if PROTOCOL_VERSION > 767
393#if PROTOCOL_VERSION < 735
397#if PROTOCOL_VERSION > 578
402#if PROTOCOL_VERSION > 761
406#if PROTOCOL_VERSION < 768
410#if PROTOCOL_VERSION > 761 && PROTOCOL_VERSION < 768
415#if PROTOCOL_VERSION > 767
420#if PROTOCOL_VERSION < 735
424#if PROTOCOL_VERSION > 578
427#if PROTOCOL_VERSION > 761
433#if PROTOCOL_VERSION > 767
437#if PROTOCOL_VERSION > 404
440#if PROTOCOL_VERSION > 758
443#if PROTOCOL_VERSION > 761
447#if PROTOCOL_VERSION > 770
451#if PROTOCOL_VERSION > 754
457#if PROTOCOL_VERSION > 578
460#if PROTOCOL_VERSION > 761
466#if PROTOCOL_VERSION > 761
469#if PROTOCOL_VERSION > 578
473#if PROTOCOL_VERSION > 761
477#if PROTOCOL_VERSION > 767
481#if PROTOCOL_VERSION > 765 && PROTOCOL_VERSION < 768
484#if PROTOCOL_VERSION < 768
488#if PROTOCOL_VERSION > 578
494#if PROTOCOL_VERSION > 767
498#if PROTOCOL_VERSION > 772
501#if PROTOCOL_VERSION > 754
505#if PROTOCOL_VERSION < 762
515#if PROTOCOL_VERSION > 761
518#if PROTOCOL_VERSION > 773
521#if PROTOCOL_VERSION > 767
526#if PROTOCOL_VERSION > 767
530#if PROTOCOL_VERSION > 767
534#if PROTOCOL_VERSION > 404
537#if PROTOCOL_VERSION > 773
541#if PROTOCOL_VERSION > 578
545#if PROTOCOL_VERSION > 578
548#if PROTOCOL_VERSION > 736
551#if PROTOCOL_VERSION > 578
554#if PROTOCOL_VERSION < 735
559#if PROTOCOL_VERSION > 776
563#if PROTOCOL_VERSION > 769
567#if PROTOCOL_VERSION > 761 && PROTOCOL_VERSION < 770
570#if PROTOCOL_VERSION < 762
573#if PROTOCOL_VERSION > 578
577#if PROTOCOL_VERSION > 578
589#if PROTOCOL_VERSION > 761
592#if PROTOCOL_VERSION < 768
596#if PROTOCOL_VERSION > 767
599#if PROTOCOL_VERSION > 761
604#if PROTOCOL_VERSION > 767
610#if PROTOCOL_VERSION > 578
613#if PROTOCOL_VERSION > 775
616#if PROTOCOL_VERSION > 758
619#if PROTOCOL_VERSION > 761
624#if PROTOCOL_VERSION > 404 && PROTOCOL_VERSION < 735
627#if PROTOCOL_VERSION < 735
631#if PROTOCOL_VERSION < 762
637#if PROTOCOL_VERSION > 404 && PROTOCOL_VERSION < 762
640#if PROTOCOL_VERSION > 578
643#if PROTOCOL_VERSION > 761
646#if PROTOCOL_VERSION > 578
652#if PROTOCOL_VERSION < 735
656#if PROTOCOL_VERSION > 404 && PROTOCOL_VERSION < 735
659#if PROTOCOL_VERSION > 404
662#if PROTOCOL_VERSION > 758
665#if PROTOCOL_VERSION > 764
673#if PROTOCOL_VERSION > 578
678#if PROTOCOL_VERSION > 773
682#if PROTOCOL_VERSION > 578
685#if PROTOCOL_VERSION < 735
688#if PROTOCOL_VERSION > 404 && PROTOCOL_VERSION < 735
691#if PROTOCOL_VERSION < 735
696#if PROTOCOL_VERSION < 477
789#if PROTOCOL_VERSION < 458
790 enum class ObjectEntityType
807 FallingBlockEntity = 70,
812 FireworkRocketEntity = 76,
813 LeashFenceKnotEntity = 77,
819#if PROTOCOL_VERSION > 340
int GetDataTicksFrozen() const
virtual EntityType GetType() const =0
virtual double GetHeightImpl() const
void SetDataSilent(const bool data_silent)
virtual ProtocolCraft::Json::Value Serialize() const
void SetDataPose(const Pose data_pose)
std::map< EquipmentSlot, ProtocolCraft::Slot > equipments
Items on this entity.
virtual void SetY(const double y_)
virtual bool IsAbstractChestedHorse() const
virtual bool IsWaterAnimal() const
void SetEffects(const std::vector< EntityEffect > &effects_)
void SetDataAirSupplyId(const int data_air_supply_id)
void SetDataSharedFlagsIdImpl(const char data_shared_flags_id)
Vector3< double > GetSpeed() const
void SetUUID(const ProtocolCraft::UUID &uuid_)
std::map< EquipmentSlot, ProtocolCraft::Slot > GetEquipments() const
virtual bool IsAbstractArrow() const
virtual bool IsAbstractSkeleton() const
virtual bool IsAbstractPiglin() const
virtual bool IsLocalPlayer() const
std::vector< EntityEffect > effects
char GetDataSharedFlagsIdImpl() const
virtual bool IsRemotePlayer() const
virtual bool IsAbstractNautilus() const
bool GetDataSilent() const
void SetDataPoseImpl(const Pose data_pose)
virtual bool IsAbstractBoat() const
virtual bool IsAbstractHurtingProjectile() const
ProtocolCraft::UUID GetUUID() const
virtual bool IsAbstractSchoolingFish() const
void SetSpeed(const Vector3< double > &speed_)
virtual bool IsHangingEntity() const
bool GetAreRenderedFacesUpToDate() const
virtual void SetMetadataValue(const int index, const std::any &value)
virtual bool IsSpellcasterIllager() const
virtual bool IsBlockAttachedEntity() const
static std::shared_ptr< Entity > CreateEntity(const EntityType type)
static constexpr int hierarchy_metadata_count
virtual bool IsAbstractThrownPotion() const
static const std::array< std::string, metadata_count > metadata_names
bool are_rendered_faces_up_to_date
virtual double GetWidthImpl() const
virtual void SetZ(const double z_)
void SetEquipment(const EquipmentSlot slot, const ProtocolCraft::Slot &item)
std::vector< Renderer::Face > faces
virtual bool IsLivingEntity() const
virtual bool IsChestBoat() const
virtual bool IsPatrollingMonster() const
virtual bool IsProjectile() const
int GetDataAirSupplyId() const
std::vector< EntityEffect > GetEffects() const
virtual bool IsAbstractMinecart() const
virtual bool IsAvatar() const
virtual bool IsDisplay() const
void SetSpeedY(const double speed_y_)
virtual bool IsAbstractMinecartContainer() const
void SetDataCustomName(const std::optional< ProtocolCraft::Chat > &data_custom_name)
virtual bool IsAmbientCreature() const
virtual bool IsFireball() const
std::shared_mutex entity_mutex
void SetOnGround(const bool on_ground_)
virtual bool IsAnimal() const
std::vector< Renderer::Face > GetFaces(const bool reset_uptodate_status)
void SetSpeedX(const double speed_x_)
virtual bool IsAbstractFish() const
virtual bool IsAbstractCubeMob() const
virtual bool IsAgeableMob() const
virtual void SetX(const double x_)
virtual bool IsAbstractVillager() const
virtual void InitializeFaces()
virtual bool IsThrowableProjectile() const
virtual bool IsAbstractWindCharge() const
AABB GetColliderImpl() const
void SetDataSharedFlagsId(const char data_shared_flags_id)
char GetDataSharedFlagsId() const
virtual bool IsMob() const
virtual void SetYaw(const float yaw_)
virtual bool IsPathfinderMob() const
ProtocolCraft::Slot GetEquipment(const EquipmentSlot slot) const
void SetDataCustomNameVisible(const bool data_custom_name_visible)
virtual bool IsVehicle() const
virtual std::string GetName() const =0
Pose GetDataPoseImpl() const
virtual bool IsRaider() const
virtual void SetPitch(const float pitch_)
virtual bool IsThrowableItemProjectile() const
void SetEntityID(const int entity_id_)
virtual bool IsMonster() const
virtual bool IsTamableAnimal() const
void SetDataNoGravity(const bool data_no_gravity)
bool GetDataCustomNameVisible() const
virtual bool IsAbstractIllager() const
virtual bool IsAbstractHorse() const
std::map< std::string, std::any > metadata
Vector3< double > position
virtual bool IsAbstractCow() const
virtual bool IsAbstractChestBoat() const
void AddEffect(const EntityEffect &effect)
virtual bool IsChestRaft() const
virtual bool IsAbstractGolem() const
virtual bool IsAgeableWaterCreature() const
bool GetDataNoGravity() const
void SetAreRenderedFacesUpToDate(const bool are_rendered_faces_up_to_date_)
Vector3< double > GetPosition() const
void SetSpeedZ(const double speed_z_)
static constexpr int metadata_count
std::vector< FaceDescriptor > face_descriptors
std::optional< ProtocolCraft::Chat > GetDataCustomName() const
virtual bool IsBoat() const
void LoadMetadataFromRawArray(const std::vector< unsigned char > &data)
virtual bool IsRaft() const
virtual bool IsShoulderRidingEntity() const
void RemoveEffect(const EntityEffectType type)
virtual void SetPosition(const Vector3< double > &position_)
void SetDataTicksFrozen(const int data_ticks_frozen)
Main class, basically a JsonVariant with extra utility functions it doesn't inherit JsonVariant direc...
std::array< unsigned char, 16 > UUID
std::chrono::steady_clock::time_point end