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