Files
MinecraftConsoles/Minecraft.World/UpdateAttributesPacket.h
2026-03-01 11:00:23 -06:00

46 lines
1.1 KiB
C++

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