From d34b5cecc9261ac3e0796f9012c63d652d9e2143 Mon Sep 17 00:00:00 2001 From: Quackster Date: Wed, 8 May 2024 09:35:28 +1000 Subject: [PATCH] Add get pet stats --- .../kepler/messages/MessageHandler.java | 11 +++++-- .../messages/incoming/pets/GETPETSTAT.java | 32 +++++++++++++++++++ .../messages/outgoing/pets/PETSTAT.java | 29 +++++++++++++++++ 3 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 Kepler-Server/src/main/java/org/alexdev/kepler/messages/incoming/pets/GETPETSTAT.java create mode 100644 Kepler-Server/src/main/java/org/alexdev/kepler/messages/outgoing/pets/PETSTAT.java diff --git a/Kepler-Server/src/main/java/org/alexdev/kepler/messages/MessageHandler.java b/Kepler-Server/src/main/java/org/alexdev/kepler/messages/MessageHandler.java index 1eab84ba..e65377b9 100644 --- a/Kepler-Server/src/main/java/org/alexdev/kepler/messages/MessageHandler.java +++ b/Kepler-Server/src/main/java/org/alexdev/kepler/messages/MessageHandler.java @@ -3,6 +3,7 @@ import org.alexdev.kepler.game.player.Player; import org.alexdev.kepler.game.room.RoomManager; import org.alexdev.kepler.log.Log; +import org.alexdev.kepler.messages.incoming.pets.GETPETSTAT; import org.alexdev.kepler.messages.incoming.catalogue.GCAP; import org.alexdev.kepler.messages.incoming.catalogue.GCIX; import org.alexdev.kepler.messages.incoming.catalogue.GET_ALIAS_LIST; @@ -41,10 +42,7 @@ import org.alexdev.kepler.messages.incoming.rooms.moderation.*; import org.alexdev.kepler.messages.incoming.rooms.pool.*; import org.alexdev.kepler.messages.incoming.rooms.settings.*; -import org.alexdev.kepler.messages.incoming.rooms.teleporter.DOORGOIN; import org.alexdev.kepler.messages.incoming.rooms.teleporter.GETDOORFLAT; -import org.alexdev.kepler.messages.incoming.rooms.teleporter.GOVIADOOR; -import org.alexdev.kepler.messages.incoming.rooms.teleporter.INTODOOR; import org.alexdev.kepler.messages.incoming.rooms.user.*; import org.alexdev.kepler.messages.incoming.songs.*; import org.alexdev.kepler.messages.incoming.trade.*; @@ -84,6 +82,7 @@ private MessageHandler() { registerNavigatorPackets(); registerRoomPackets(); registerRoomUserPackets(); + registerPetPackets(); registerRoomBadgesPackets(); registerRoomPoolPackets(); registerRoomSettingsPackets(); @@ -241,6 +240,12 @@ private void registerRoomUserPackets() { registerEvent(117, new IIM()); } + /** + * Register pet packets. + */ + private void registerPetPackets() { + registerEvent(128, new GETPETSTAT()); + } /** * Register room badges packets; diff --git a/Kepler-Server/src/main/java/org/alexdev/kepler/messages/incoming/pets/GETPETSTAT.java b/Kepler-Server/src/main/java/org/alexdev/kepler/messages/incoming/pets/GETPETSTAT.java new file mode 100644 index 00000000..90e89c2e --- /dev/null +++ b/Kepler-Server/src/main/java/org/alexdev/kepler/messages/incoming/pets/GETPETSTAT.java @@ -0,0 +1,32 @@ +package org.alexdev.kepler.messages.incoming.pets; + +import org.alexdev.kepler.game.entity.EntityType; +import org.alexdev.kepler.game.pets.Pet; +import org.alexdev.kepler.game.player.Player; +import org.alexdev.kepler.game.room.Room; +import org.alexdev.kepler.messages.outgoing.pets.PETSTAT; +import org.alexdev.kepler.messages.types.MessageEvent; +import org.alexdev.kepler.server.netty.streams.NettyRequest; + +public class GETPETSTAT implements MessageEvent { + @Override + public void handle(Player player, NettyRequest reader) throws Exception { + if (player.getRoomUser().getRoom() == null) { + return; + } + + Room room = player.getRoomUser().getRoom(); + String[] petData = reader.readString().split(Character.toString((char)4)); + + int petId = Integer.parseInt(petData[0]); + String petName = petData[1]; + + Pet pet = (Pet) room.getEntityManager().getByInstanceId(petId); + + if (pet == null) { + return; + } + + player.send(new PETSTAT(pet)); + } +} diff --git a/Kepler-Server/src/main/java/org/alexdev/kepler/messages/outgoing/pets/PETSTAT.java b/Kepler-Server/src/main/java/org/alexdev/kepler/messages/outgoing/pets/PETSTAT.java new file mode 100644 index 00000000..269cf13b --- /dev/null +++ b/Kepler-Server/src/main/java/org/alexdev/kepler/messages/outgoing/pets/PETSTAT.java @@ -0,0 +1,29 @@ +package org.alexdev.kepler.messages.outgoing.pets; + +import org.alexdev.kepler.game.pets.Pet; +import org.alexdev.kepler.messages.types.MessageComposer; +import org.alexdev.kepler.server.netty.streams.NettyResponse; + +public class PETSTAT extends MessageComposer { + private final Pet pet; + + public PETSTAT(Pet pet) { + this.pet = pet; + } + + @Override + public void compose(NettyResponse response) { + response.writeInt(this.pet.getRoomUser().getInstanceId()); + response.writeInt(this.pet.getAge()); + response.writeInt(this.pet.getHunger()); + response.writeInt(this.pet.getThirst()); + response.writeInt(this.pet.getHappiness()); + response.writeInt(this.pet.getDetails().getNatureNegative()); + response.writeInt(this.pet.getDetails().getNaturePositive()); + } + + @Override + public short getHeader() { + return 210; // "CR" + } +}