#pragma once using namespace std; #include "Packet.h" class ChatPacket : public Packet, public enable_shared_from_this { // longest allowed string is "<" + name + "> " + message private: static const unsigned int MAX_LENGTH; public: // 4J - We want to be able to localise the messages sent. The enum also allows for the posibility that there // may be different versions playing the game, so the enum should map to a string id which may be different on // different versions enum EChatPacketMessage { e_ChatCustom = 0, // No localised string, only the text passed in e_ChatBedOccupied, e_ChatBedNoSleep, e_ChatBedNotValid, e_ChatBedNotSafe, e_ChatBedPlayerSleep, e_ChatBedMeSleep, e_ChatPlayerLeftGame, e_ChatPlayerJoinedGame, e_ChatPlayerKickedFromGame, e_ChatCannotPlaceLava, e_ChatDeathInFire, e_ChatDeathOnFire, e_ChatDeathLava, e_ChatDeathInWall, e_ChatDeathDrown, e_ChatDeathStarve, e_ChatDeathCactus, e_ChatDeathFall, e_ChatDeathOutOfWorld, e_ChatDeathGeneric, e_ChatDeathExplosion, e_ChatDeathMagic, e_ChatDeathMob, e_ChatDeathPlayer, e_ChatDeathArrow, e_ChatDeathFireball, e_ChatDeathThrown, e_ChatDeathIndirectMagic, e_ChatDeathDragonBreath, e_ChatDeathWither, e_ChatDeathAnvil, e_ChatDeathFallingBlock, e_ChatDeathThorns, e_ChatPlayerEnteredEnd, e_ChatPlayerLeftEnd, e_ChatPlayerMaxPigsSheepCows, // tell the players they can't use the spawn egg e_ChatPlayerMaxChickens, // tell the players they can't use the spawn egg e_ChatPlayerMaxSquid, // tell the players they can't use the spawn egg e_ChatPlayerMaxMooshrooms, // tell the players they can't use the spawn egg e_ChatPlayerMaxWolves, // tell the players they can't use the spawn egg e_ChatPlayerMaxAnimals, // tell the players they can't use the spawn egg e_ChatPlayerMaxEnemies, // tell the players they can't use the spawn egg e_ChatPlayerMaxVillagers, // tell the players they can't use the spawn egg e_ChatPlayerMaxHangingEntities, // tell the players they hit the picture/itemframe limit e_ChatPlayerCantSpawnInPeaceful, // Tell the player they can't spawn enemies in peaceful mode e_ChatPlayerMaxBredAnimals, // Tell the player they can't put this animal in love mode because no breeding can be done e_ChatPlayerMaxBredPigsSheepCows, // Tell the player they can't put this animal in love mode because no breeding can be done e_ChatPlayerMaxBredChickens, // Tell the player they can't put this animal in love mode because no breeding can be done e_ChatPlayerMaxBredMooshrooms, // Tell the player they can't put this animal in love mode because no breeding can be done e_ChatPlayerMaxBredWolves, // Tell the player they can't put this wolf in love mode because no breeding can be done e_ChatPlayerCantShearMooshroom, // Tell the player they can't shear because the limits have been reached e_ChatPlayerMaxBoats, e_ChatCommandTeleportSuccess, e_ChatCommandTeleportMe, e_ChatCommandTeleportToMe, }; public: vector m_stringArgs; vector m_intArgs; EChatPacketMessage m_messageType; ChatPacket(); ChatPacket(const wstring& message, EChatPacketMessage type = e_ChatCustom, int customData = -1, const wstring& additionalMessage = L""); virtual void read(DataInputStream *dis); virtual void write(DataOutputStream *dos); virtual void handle(PacketListener *listener); virtual int getEstimatedSize(); public: static shared_ptr create() { return shared_ptr(new ChatPacket()); } virtual int getId() { return 3; } };