diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 4824b3186..cd01b870a 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -40,33 +40,50 @@ public final class PacketHandler { packetChannels.add(DATA_PACKET); packetChannels.add(CLIENT_PACKET); packetChannels.add(LARGE_PACKET); - this.registerChannels(); + this.registerChannels(); + this.registerLargePackets(); + this.registerClientPackets(); + } + + public void registerLargePackets(){ // Large Packets LARGE_PACKET.registerPacket(new LargeScrollGroupPacket()); LARGE_PACKET.registerPacket(new LargeScrollDataPacket()); LARGE_PACKET.registerPacket(new LargeScrollListPacket()); LARGE_PACKET.registerPacket(new LargeSyncPacket()); LARGE_PACKET.registerPacket(new LargeGuiDataPacket()); + LARGE_PACKET.registerPacket(new LargePartyDataPacket()); + } + public void registerClientPackets(){ // Client Packets - CLIENT_PACKET.registerPacket(new ChatBubblePacket()); - CLIENT_PACKET.registerPacket(new ChatAlertPacket()); CLIENT_PACKET.registerPacket(new AchievementPacket()); - CLIENT_PACKET.registerPacket(new GuiTeleporterPacket()); - CLIENT_PACKET.registerPacket(new SoundManagementPacket()); - CLIENT_PACKET.registerPacket(new ParticlePacket()); - CLIENT_PACKET.registerPacket(new ScriptedParticlePacket()); - CLIENT_PACKET.registerPacket(new ScriptOverlayClosePacket()); - CLIENT_PACKET.registerPacket(new ScriptOverlayDataPacket()); + CLIENT_PACKET.registerPacket(new ChatAlertPacket()); + CLIENT_PACKET.registerPacket(new ChatBubblePacket()); CLIENT_PACKET.registerPacket(new ConfigCommandPacket()); + CLIENT_PACKET.registerPacket(new DisableMouseInputPacket()); + CLIENT_PACKET.registerPacket(new MarkDataPacket()); + CLIENT_PACKET.registerPacket(new OverlayQuestTrackingPacket()); + CLIENT_PACKET.registerPacket(new ParticlePacket()); + CLIENT_PACKET.registerPacket(new PlayerUpdateSkinOverlaysPacket()); + CLIENT_PACKET.registerPacket(new QuestCompletionPacket()); + CLIENT_PACKET.registerPacket(new ScrollSelectedPacket()); + CLIENT_PACKET.registerPacket(new SoundManagementPacket()); + CLIENT_PACKET.registerPacket(new SwingPlayerArmPacket()); + CLIENT_PACKET.registerPacket(new UpdateAnimationsPacket()); + CLIENT_PACKET.registerPacket(new VillagerListPacket()); // Client | GUI Packets + CLIENT_PACKET.registerPacket(new GuiClonerPacket()); CLIENT_PACKET.registerPacket(new GuiClosePacket()); CLIENT_PACKET.registerPacket(new GuiOpenPacket()); CLIENT_PACKET.registerPacket(new GuiErrorPacket()); - CLIENT_PACKET.registerPacket(new LargeGuiDataPacket()); - CLIENT_PACKET.registerPacket(new GuiClonerPacket()); + CLIENT_PACKET.registerPacket(new GuiRedstonePacket()); + CLIENT_PACKET.registerPacket(new GuiTeleporterPacket()); + CLIENT_PACKET.registerPacket(new GuiWaypointPacket()); + CLIENT_PACKET.registerPacket(new IsGuiOpenPacket()); + CLIENT_PACKET.registerPacket(new OpenBookPacket()); // Client | NPC Packets CLIENT_PACKET.registerPacket(new DeleteNpcPacket()); @@ -74,6 +91,11 @@ public final class PacketHandler { CLIENT_PACKET.registerPacket(new UpdateNpcPacket()); CLIENT_PACKET.registerPacket(new DialogPacket()); CLIENT_PACKET.registerPacket(new RolePacket()); + + // Client | Script Packets + CLIENT_PACKET.registerPacket(new ScriptedParticlePacket()); + CLIENT_PACKET.registerPacket(new ScriptOverlayClosePacket()); + CLIENT_PACKET.registerPacket(new ScriptOverlayDataPacket()); } private void registerChannels() { diff --git a/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java index a94e52bb0..806d6f3a2 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/DisableMouseInputPacket.java @@ -7,8 +7,8 @@ import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.ClientEventHandler; @@ -17,8 +17,16 @@ import java.io.IOException; public final class DisableMouseInputPacket extends AbstractPacket { public static final String packetName = "Client|DisableMouseInput"; + private long duration; + private String keys; + public DisableMouseInputPacket() {} + public DisableMouseInputPacket(long duration, String keys) { + this.duration = duration; + this.keys = keys; + } + @Override public Enum getType() { return EnumClientPacket.DISABLE_MOUSE_INPUT; @@ -31,7 +39,8 @@ public final class DisableMouseInputPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + out.writeLong(this.duration); + ByteBufUtils.writeString(out, this.keys); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java index efdb92eab..e92f9c75b 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/PlayerUpdateSkinOverlaysPacket.java @@ -7,6 +7,7 @@ import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -19,8 +20,16 @@ import java.io.IOException; public final class PlayerUpdateSkinOverlaysPacket extends AbstractPacket { public static final String packetName = "Client|PlayerUpdateSkinOverlays"; + private String playerName; + private NBTTagCompound compound; + public PlayerUpdateSkinOverlaysPacket() {} + public PlayerUpdateSkinOverlaysPacket(String playerName, NBTTagCompound compound) { + this.playerName = playerName; + this.compound = compound; + } + @Override public Enum getType() { return EnumClientPacket.PLAYER_UPDATE_SKIN_OVERLAYS; @@ -33,14 +42,15 @@ public final class PlayerUpdateSkinOverlaysPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeString(out, this.playerName); + ByteBufUtils.writeNBT(out, this.compound); } @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - String playerName = Server.readString(in); - NBTTagCompound nbt = Server.readNBT(in); + String playerName = ByteBufUtils.readString(in); + NBTTagCompound nbt = ByteBufUtils.readNBT(in); EntityPlayer sendingPlayer = Minecraft.getMinecraft().theWorld.getPlayerEntityByName(playerName); if (sendingPlayer != null) { NoppesUtil.updateSkinOverlayData(sendingPlayer, nbt); diff --git a/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java index 57f14ce49..81977a264 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/UpdateAnimationsPacket.java @@ -7,6 +7,7 @@ import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -23,8 +24,16 @@ import java.io.IOException; public final class UpdateAnimationsPacket extends AbstractPacket { public static final String packetName = "Client|UpdateAnimations"; + private NBTTagCompound animationCompound; + private String playername; + public UpdateAnimationsPacket() {} + public UpdateAnimationsPacket(NBTTagCompound animationCompound, String playername) { + this.animationCompound = animationCompound; + this.playername = playername; + } + @Override public Enum getType() { return EnumClientPacket.UPDATE_ANIMATIONS; @@ -37,13 +46,14 @@ public final class UpdateAnimationsPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeNBT(out, this.animationCompound); + ByteBufUtils.writeString(out, this.playername); } @SideOnly(Side.CLIENT) @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NBTTagCompound nbt = Server.readNBT(in); + NBTTagCompound nbt = ByteBufUtils.readNBT(in); AnimationData animationData = null; if (nbt.hasKey("EntityId")) { @@ -52,7 +62,7 @@ public final class UpdateAnimationsPacket extends AbstractPacket { animationData = ((EntityNPCInterface) entity).display.animationData; } } else { - String playerName = Server.readString(in); + String playerName = ByteBufUtils.readString(in); EntityPlayer sendingPlayer = Minecraft.getMinecraft().theWorld.getPlayerEntityByName(playerName); if (sendingPlayer != null) { if (!ClientCacheHandler.playerAnimations.containsKey(sendingPlayer.getUniqueID())) { diff --git a/src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/large/LargePartyDataPacket.java similarity index 61% rename from src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/large/LargePartyDataPacket.java index 6bdbc2023..b7b40c2dc 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/PartyDataPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/large/LargePartyDataPacket.java @@ -1,28 +1,36 @@ -package kamkeel.npcs.network.packets.client; +package kamkeel.npcs.network.packets.client.large; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import kamkeel.npcs.network.AbstractPacket; +import io.netty.buffer.Unpooled; +import kamkeel.npcs.network.LargeAbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.CustomNpcs; import noppes.npcs.Server; import noppes.npcs.client.gui.util.GuiContainerNPCInterface; import noppes.npcs.client.gui.util.GuiNPCInterface; +import noppes.npcs.client.gui.util.IGuiData; import noppes.npcs.client.gui.util.IPartyData; import java.io.IOException; -public final class PartyDataPacket extends AbstractPacket { +public final class LargePartyDataPacket extends LargeAbstractPacket { public static final String packetName = "Client|PartyData"; - public PartyDataPacket() {} + private NBTTagCompound compound; + + public LargePartyDataPacket(){} + + public LargePartyDataPacket(NBTTagCompound comp){ + this.compound = comp; + } @Override public Enum getType() { @@ -31,17 +39,21 @@ public final class PartyDataPacket extends AbstractPacket { @Override public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; + return PacketHandler.LARGE_PACKET; } @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + protected byte[] getData() throws IOException { + ByteBuf buffer = Unpooled.buffer(); + ByteBufUtils.writeBigNBT(buffer, compound); + byte[] bytes = new byte[buffer.readableBytes()]; + buffer.readBytes(bytes); + return bytes; } @SideOnly(Side.CLIENT) @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { GuiScreen gui = Minecraft.getMinecraft().currentScreen; if (gui instanceof GuiNPCInterface && ((GuiNPCInterface) gui).hasSubGui()) { gui = (GuiScreen) ((GuiNPCInterface) gui).getSubGui(); @@ -49,7 +61,7 @@ public final class PartyDataPacket extends AbstractPacket { gui = (GuiScreen) ((GuiContainerNPCInterface) gui).getSubGui(); } if (gui instanceof IPartyData) { - NBTTagCompound nbt = Server.readNBT(in); + NBTTagCompound nbt = ByteBufUtils.readBigNBT(data); ((IPartyData) gui).setPartyData(nbt); } } diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 7b5f99866..8f7267409 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -688,7 +688,7 @@ public class PacketHandlerServer{ list.add(data.name); PacketUtil.sendList((EntityPlayerMP)player, list); if(npc != null) - Server.sendData(player, EnumPacketClient.SCROLL_SELECTED, npc.linkedName); + PacketUtil.setSelectedList(player, npc.linkedName); } else if(type == EnumPacketServer.LinkedSet){ npc.linkedName = Server.readString(buffer); @@ -754,10 +754,10 @@ public class PacketHandlerServer{ } else if(type == EnumPacketServer.RemoteFreeze){ CustomNpcs.FreezeNPCs = !CustomNpcs.FreezeNPCs; - Server.sendData(player, EnumPacketClient.SCROLL_SELECTED, CustomNpcs.FreezeNPCs?"Unfreeze NPCs":"Freeze NPCs"); + PacketUtil.setSelectedList(player, CustomNpcs.FreezeNPCs?"Unfreeze NPCs":"Freeze NPCs"); } else if(type == EnumPacketServer.RemoteFreezeGet){ - Server.sendData(player, EnumPacketClient.SCROLL_SELECTED, CustomNpcs.FreezeNPCs?"Unfreeze NPCs":"Freeze NPCs"); + PacketUtil.setSelectedList(player, CustomNpcs.FreezeNPCs?"Unfreeze NPCs":"Freeze NPCs"); } else if(type == EnumPacketServer.RemoteReset){ Entity entity = player.worldObj.getEntityByID(buffer.readInt()); @@ -981,7 +981,7 @@ public class PacketHandlerServer{ RoleTransporter role = (RoleTransporter) npc.roleInterface; if(role.hasTransport()){ Server.sendData(player,EnumPacketClient.GUI_DATA,role.getLocation().writeNBT()); - Server.sendData(player, EnumPacketClient.SCROLL_SELECTED,role.getLocation().category.title); + PacketUtil.setSelectedList(player, role.getLocation().category.title); } } else if(type == EnumPacketServer.FactionSet){