#pragma once #include "Packet.h" class AttributeModifier; class AttributeInstance; class UpdateAttributesPacket : public Packet, public std::enable_shared_from_this { public: class AttributeSnapshot { private: eATTRIBUTE_ID id; double base; std::unordered_set modifiers; public: AttributeSnapshot(eATTRIBUTE_ID id, double base, std::unordered_set* modifiers); ~AttributeSnapshot(); eATTRIBUTE_ID getId(); double getBase(); std::unordered_set* getModifiers(); }; private: int entityId; std::unordered_set attributes; public: UpdateAttributesPacket(); UpdateAttributesPacket(int entityId, std::unordered_set* values); ~UpdateAttributesPacket(); void read(DataInputStream* dis); void write(DataOutputStream* dos); void handle(PacketListener* listener); int getEstimatedSize(); int getEntityId(); std::unordered_set getValues(); public: static std::shared_ptr create() { return std::shared_ptr(new UpdateAttributesPacket()); } virtual int getId() { return 44; } };