From 5790926e5163c85ef2017fbfd99adffdee3ffae7 Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 28 Jan 2025 18:14:18 -0500 Subject: [PATCH] More Super Commits for Packet System --- .../java/kamkeel/network/KamUtilServer.java | 20 ++++ .../kamkeel/network/LargeAbstractPacket.java | 59 ++++++++++ .../java/kamkeel/network/PacketHandler.java | 105 ++++++++++++++++-- .../network/enums/EnumClientPacket.java | 2 - ...igPacket.java => ConfigCommandPacket.java} | 6 +- .../network/packets/client/DBCFormPacket.java | 2 +- .../packets/client/LargeNBTEndPacket.java | 2 +- .../packets/client/LargeNBTPartPacket.java | 2 +- .../packets/client/OpenBookPacket.java | 2 +- .../PlayerUpdateSkinOverlaysPacket.java | 2 +- .../network/packets/client/RolePacket.java | 2 +- .../packets/client/ScrollDataPacket.java | 37 ------ .../packets/client/ScrollDataPartPacket.java | 37 ------ .../packets/client/ScrollGroupPacket.java | 37 ------ .../packets/client/ScrollGroupPartPacket.java | 37 ------ .../packets/client/ScrollListPacket.java | 37 ------ .../ClonerGUIPacket.java} | 6 +- .../GUIClonerPacket.java} | 16 ++- .../packets/client/gui/GuiRedstonePacket.java | 2 +- .../packets/client/gui/GuiWaypointPacket.java | 2 +- .../packets/client/gui/IsGuiOpenPacket.java | 2 +- .../{ => sound}/ContinueSoundsPacket.java | 2 +- .../client/{ => sound}/PauseSoundsPacket.java | 2 +- .../client/{ => sound}/PlayMusicPacket.java | 2 +- .../client/{ => sound}/PlaySoundPacket.java | 2 +- .../{ => sound}/PlaySoundToNoIdPacket.java | 2 +- .../client/{ => sound}/PlaySoundToPacket.java | 2 +- .../packets/large/LargeScrollDataPacket.java | 49 ++++++++ .../packets/large/LargeScrollGroupPacket.java | 49 ++++++++ .../packets/large/LargeScrollListPacket.java | 49 ++++++++ src/main/java/kamkeel/util/ByteBufUtils.java | 56 ++++++++++ 31 files changed, 407 insertions(+), 225 deletions(-) create mode 100644 src/main/java/kamkeel/network/KamUtilServer.java create mode 100644 src/main/java/kamkeel/network/LargeAbstractPacket.java rename src/main/java/kamkeel/network/packets/client/{ConfigPacket.java => ConfigCommandPacket.java} (91%) delete mode 100644 src/main/java/kamkeel/network/packets/client/ScrollDataPacket.java delete mode 100644 src/main/java/kamkeel/network/packets/client/ScrollDataPartPacket.java delete mode 100644 src/main/java/kamkeel/network/packets/client/ScrollGroupPacket.java delete mode 100644 src/main/java/kamkeel/network/packets/client/ScrollGroupPartPacket.java delete mode 100644 src/main/java/kamkeel/network/packets/client/ScrollListPacket.java rename src/main/java/kamkeel/network/packets/client/{ClonerPacket.java => gui/ClonerGUIPacket.java} (87%) rename src/main/java/kamkeel/network/packets/client/{ClonePacket.java => gui/GUIClonerPacket.java} (69%) rename src/main/java/kamkeel/network/packets/client/{ => sound}/ContinueSoundsPacket.java (95%) rename src/main/java/kamkeel/network/packets/client/{ => sound}/PauseSoundsPacket.java (95%) rename src/main/java/kamkeel/network/packets/client/{ => sound}/PlayMusicPacket.java (95%) rename src/main/java/kamkeel/network/packets/client/{ => sound}/PlaySoundPacket.java (96%) rename src/main/java/kamkeel/network/packets/client/{ => sound}/PlaySoundToNoIdPacket.java (96%) rename src/main/java/kamkeel/network/packets/client/{ => sound}/PlaySoundToPacket.java (96%) create mode 100644 src/main/java/kamkeel/network/packets/large/LargeScrollDataPacket.java create mode 100644 src/main/java/kamkeel/network/packets/large/LargeScrollGroupPacket.java create mode 100644 src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java diff --git a/src/main/java/kamkeel/network/KamUtilServer.java b/src/main/java/kamkeel/network/KamUtilServer.java new file mode 100644 index 000000000..14710ac7c --- /dev/null +++ b/src/main/java/kamkeel/network/KamUtilServer.java @@ -0,0 +1,20 @@ +package kamkeel.network; + +import kamkeel.network.packets.large.LargeScrollGroupPacket; +import kamkeel.network.packets.large.LargeScrollDataPacket; +import net.minecraft.entity.player.EntityPlayerMP; + +import java.util.Map; + +public class KamUtilServer { + + public static void sendScrollData(EntityPlayerMP player, Map map) { + LargeScrollDataPacket packet = new LargeScrollDataPacket(map); + PacketHandler.Instance.sendToPlayer(packet, player); + } + + public static void sendScrollGroup(EntityPlayerMP player, Map map){ + LargeScrollGroupPacket packet = new LargeScrollGroupPacket(map); + PacketHandler.Instance.sendToPlayer(packet, player); + } +} diff --git a/src/main/java/kamkeel/network/LargeAbstractPacket.java b/src/main/java/kamkeel/network/LargeAbstractPacket.java new file mode 100644 index 000000000..067e89945 --- /dev/null +++ b/src/main/java/kamkeel/network/LargeAbstractPacket.java @@ -0,0 +1,59 @@ +// src/main/java/kamkeel/network/LargeAbstractPacket.java +package kamkeel.network; + +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import net.minecraft.entity.player.EntityPlayer; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +public abstract class LargeAbstractPacket extends AbstractPacket { + private static final int CHUNK_SIZE = 30000; + private static final Map packetChunks = new HashMap<>(); + private static final Map receivedChunks = new HashMap<>(); + + public abstract void handleData(ByteBuf data, EntityPlayer player) throws IOException; + + @Override + public void sendData(ByteBuf out) throws IOException { + ByteBuf data = Unpooled.buffer(); + writeData(data); + int totalSize = data.readableBytes(); + int packetId = this.hashCode(); // Unique ID for this packet + int totalChunks = (int) Math.ceil((double) totalSize / CHUNK_SIZE); + + for (int i = 0; i < totalSize; i += CHUNK_SIZE) { + int chunkSize = Math.min(CHUNK_SIZE, totalSize - i); + ByteBuf chunk = data.readBytes(chunkSize); + out.writeInt(packetId); + out.writeInt(totalSize); + out.writeInt(i); + out.writeInt(totalChunks); + out.writeBytes(chunk); + } + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + int packetId = in.readInt(); + int totalSize = in.readInt(); + int offset = in.readInt(); + int totalChunks = in.readInt(); + ByteBuf chunk = in.readBytes(in.readableBytes()); + + ByteBuf data = packetChunks.computeIfAbsent(packetId, k -> Unpooled.buffer(totalSize)); + data.setBytes(offset, chunk); + + int receivedChunkCount = receivedChunks.compute(packetId, (k, v) -> (v == null) ? 1 : v + 1); + + if (receivedChunkCount == totalChunks) { + packetChunks.remove(packetId); + receivedChunks.remove(packetId); + handleData(data, player); + } + } + + public abstract void writeData(ByteBuf out) throws IOException; +} diff --git a/src/main/java/kamkeel/network/PacketHandler.java b/src/main/java/kamkeel/network/PacketHandler.java index 8e15f8761..5864fa6a5 100644 --- a/src/main/java/kamkeel/network/PacketHandler.java +++ b/src/main/java/kamkeel/network/PacketHandler.java @@ -5,16 +5,16 @@ import cpw.mods.fml.common.network.FMLEventChannel; import cpw.mods.fml.common.network.FMLNetworkEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.internal.FMLProxyPacket; -import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; +import kamkeel.network.AbstractPacket; +import kamkeel.network.PacketChannel; import kamkeel.network.enums.EnumPacketType; -import kamkeel.util.ByteBufUtils; -import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.NetHandlerPlayServer; import noppes.npcs.CustomNpcs; +import java.io.IOException; import java.util.*; public final class PacketHandler { @@ -34,16 +34,8 @@ public final class PacketHandler { packetChannels.add(INFO_PACKET); packetChannels.add(DATA_PACKET); packetChannels.add(CLIENT_PACKET); + packetChannels.add(LARGE_PACKET); this.registerChannels(); - - // Register Info Packets - - // Register Data Packets - - // Register Client Packets - - // Register Packets - // map.put(PingPacket.packetName, new PingPacket()); } public void registerChannels() { @@ -73,4 +65,93 @@ public final class PacketHandler { } return packetChannel; } + + public FMLEventChannel getEventChannel(AbstractPacket abstractPacket){ + return channels.get(getPacketChannel(abstractPacket.getChannel().getChannelType())); + } + + @SubscribeEvent + public void onServerPacket(FMLNetworkEvent.ServerCustomPacketEvent event) { + try { + handlePacket(event.packet, ((NetHandlerPlayServer) event.handler).playerEntity); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @SubscribeEvent + public void onClientPacket(FMLNetworkEvent.ClientCustomPacketEvent event) { + try { + handlePacket(event.packet, CustomNpcs.proxy.getPlayer()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void handlePacket(FMLProxyPacket packet, EntityPlayer player) { + ByteBuf buf = packet.payload(); + try { + int channelTypeOrdinal = buf.readInt(); + int packetTypeOrdinal = buf.readInt(); + + EnumPacketType channelType = EnumPacketType.values()[channelTypeOrdinal]; + PacketChannel packetChannel = getPacketChannel(channelType); + + AbstractPacket abstractPacket = packetChannel.packets.get(packetTypeOrdinal); + if (abstractPacket != null) { + try { + abstractPacket.receiveData(buf, player); + } catch (IOException e) { + e.printStackTrace(); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void sendToPlayer(AbstractPacket packet, EntityPlayerMP player) { + try { + FMLProxyPacket proxyPacket = packet.generatePacket(); + getEventChannel(packet).sendTo(proxyPacket, player); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void sendToServer(AbstractPacket packet) { + try { + FMLProxyPacket proxyPacket = packet.generatePacket(); + getEventChannel(packet).sendToServer(proxyPacket); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void sendToAll(AbstractPacket packet) { + try { + FMLProxyPacket proxyPacket = packet.generatePacket(); + getEventChannel(packet).sendToAll(proxyPacket); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void sendToAllAround(AbstractPacket packet, NetworkRegistry.TargetPoint point) { + try { + FMLProxyPacket proxyPacket = packet.generatePacket(); + getEventChannel(packet).sendToAllAround(proxyPacket, point); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void sendToDimension(AbstractPacket packet, int dimensionId) { + try { + FMLProxyPacket proxyPacket = packet.generatePacket(); + getEventChannel(packet).sendToDimension(proxyPacket, dimensionId); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/kamkeel/network/enums/EnumClientPacket.java b/src/main/java/kamkeel/network/enums/EnumClientPacket.java index 4dd58bfcf..6ae61ad6e 100644 --- a/src/main/java/kamkeel/network/enums/EnumClientPacket.java +++ b/src/main/java/kamkeel/network/enums/EnumClientPacket.java @@ -20,9 +20,7 @@ public enum EnumClientPacket { DELETE_NPC, SCROLL_LIST, SCROLL_DATA, - SCROLL_DATA_PART, SCROLL_GROUP, - SCROLL_GROUP_PART, SCROLL_SELECTED, GUI_REDSTONE, GUI_WAYPOINT, diff --git a/src/main/java/kamkeel/network/packets/client/ConfigPacket.java b/src/main/java/kamkeel/network/packets/client/ConfigCommandPacket.java similarity index 91% rename from src/main/java/kamkeel/network/packets/client/ConfigPacket.java rename to src/main/java/kamkeel/network/packets/client/ConfigCommandPacket.java index d2b7f075c..09f1c91dd 100644 --- a/src/main/java/kamkeel/network/packets/client/ConfigPacket.java +++ b/src/main/java/kamkeel/network/packets/client/ConfigCommandPacket.java @@ -14,10 +14,10 @@ import net.minecraft.util.ChatComponentTranslation; import java.io.IOException; -public final class ConfigPacket extends AbstractPacket { - public static final String packetName = "Client|Config"; +public final class ConfigCommandPacket extends AbstractPacket { + public static final String packetName = "Client|ConfigCommand"; - public ConfigPacket() {} + public ConfigCommandPacket() {} @Override public Enum getType() { diff --git a/src/main/java/kamkeel/network/packets/client/DBCFormPacket.java b/src/main/java/kamkeel/network/packets/client/DBCFormPacket.java index e0c11af5b..0a4432f79 100644 --- a/src/main/java/kamkeel/network/packets/client/DBCFormPacket.java +++ b/src/main/java/kamkeel/network/packets/client/DBCFormPacket.java @@ -6,7 +6,7 @@ import kamkeel.network.PacketChannel; import kamkeel.network.PacketHandler; import kamkeel.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java b/src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java index 19dfe7a1f..061ccf419 100644 --- a/src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java +++ b/src/main/java/kamkeel/network/packets/client/LargeNBTEndPacket.java @@ -6,7 +6,7 @@ import kamkeel.network.PacketChannel; import kamkeel.network.PacketHandler; import kamkeel.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/LargeNBTPartPacket.java b/src/main/java/kamkeel/network/packets/client/LargeNBTPartPacket.java index 2c4813adf..7eb8e46fe 100644 --- a/src/main/java/kamkeel/network/packets/client/LargeNBTPartPacket.java +++ b/src/main/java/kamkeel/network/packets/client/LargeNBTPartPacket.java @@ -6,7 +6,7 @@ import kamkeel.network.PacketChannel; import kamkeel.network.PacketHandler; import kamkeel.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/OpenBookPacket.java b/src/main/java/kamkeel/network/packets/client/OpenBookPacket.java index 7e1c613f4..3788c9814 100644 --- a/src/main/java/kamkeel/network/packets/client/OpenBookPacket.java +++ b/src/main/java/kamkeel/network/packets/client/OpenBookPacket.java @@ -10,7 +10,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; import noppes.npcs.client.gui.player.GuiBook; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java b/src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java index 8bb3f6e11..ee4a9a9c7 100644 --- a/src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java +++ b/src/main/java/kamkeel/network/packets/client/PlayerUpdateSkinOverlaysPacket.java @@ -9,7 +9,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/RolePacket.java b/src/main/java/kamkeel/network/packets/client/RolePacket.java index 431cd25c8..41f8ae187 100644 --- a/src/main/java/kamkeel/network/packets/client/RolePacket.java +++ b/src/main/java/kamkeel/network/packets/client/RolePacket.java @@ -10,7 +10,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/ScrollDataPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollDataPacket.java deleted file mode 100644 index 412c86daf..000000000 --- a/src/main/java/kamkeel/network/packets/client/ScrollDataPacket.java +++ /dev/null @@ -1,37 +0,0 @@ -package kamkeel.network.packets.client; - -import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; -import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; - -import java.io.IOException; - -public final class ScrollDataPacket extends AbstractPacket { - public static final String packetName = "Client|ScrollData"; - - public ScrollDataPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SCROLL_DATA; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NoppesUtil.setScrollData(in); - } -} diff --git a/src/main/java/kamkeel/network/packets/client/ScrollDataPartPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollDataPartPacket.java deleted file mode 100644 index 29c3d611a..000000000 --- a/src/main/java/kamkeel/network/packets/client/ScrollDataPartPacket.java +++ /dev/null @@ -1,37 +0,0 @@ -package kamkeel.network.packets.client; - -import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; -import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; - -import java.io.IOException; - -public final class ScrollDataPartPacket extends AbstractPacket { - public static final String packetName = "Client|ScrollDataPart"; - - public ScrollDataPartPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SCROLL_DATA_PART; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NoppesUtil.addScrollData(in); - } -} diff --git a/src/main/java/kamkeel/network/packets/client/ScrollGroupPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollGroupPacket.java deleted file mode 100644 index 60c770a3e..000000000 --- a/src/main/java/kamkeel/network/packets/client/ScrollGroupPacket.java +++ /dev/null @@ -1,37 +0,0 @@ -package kamkeel.network.packets.client; - -import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; -import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; - -import java.io.IOException; - -public final class ScrollGroupPacket extends AbstractPacket { - public static final String packetName = "Client|ScrollGroup"; - - public ScrollGroupPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SCROLL_GROUP; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NoppesUtil.setScrollGroup(in); - } -} diff --git a/src/main/java/kamkeel/network/packets/client/ScrollGroupPartPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollGroupPartPacket.java deleted file mode 100644 index 16bcabd76..000000000 --- a/src/main/java/kamkeel/network/packets/client/ScrollGroupPartPacket.java +++ /dev/null @@ -1,37 +0,0 @@ -package kamkeel.network.packets.client; - -import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; -import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; - -import java.io.IOException; - -public final class ScrollGroupPartPacket extends AbstractPacket { - public static final String packetName = "Client|ScrollGroupPart"; - - public ScrollGroupPartPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SCROLL_GROUP_PART; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NoppesUtil.addScrollGroup(in); - } -} diff --git a/src/main/java/kamkeel/network/packets/client/ScrollListPacket.java b/src/main/java/kamkeel/network/packets/client/ScrollListPacket.java deleted file mode 100644 index 531899ac4..000000000 --- a/src/main/java/kamkeel/network/packets/client/ScrollListPacket.java +++ /dev/null @@ -1,37 +0,0 @@ -package kamkeel.network.packets.client; - -import io.netty.buffer.ByteBuf; -import kamkeel.network.AbstractPacket; -import kamkeel.network.PacketChannel; -import kamkeel.network.PacketHandler; -import kamkeel.network.enums.EnumClientPacket; -import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.client.NoppesUtil; - -import java.io.IOException; - -public final class ScrollListPacket extends AbstractPacket { - public static final String packetName = "Client|ScrollList"; - - public ScrollListPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.SCROLL_LIST; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NoppesUtil.setScrollList(in); - } -} diff --git a/src/main/java/kamkeel/network/packets/client/ClonerPacket.java b/src/main/java/kamkeel/network/packets/client/gui/ClonerGUIPacket.java similarity index 87% rename from src/main/java/kamkeel/network/packets/client/ClonerPacket.java rename to src/main/java/kamkeel/network/packets/client/gui/ClonerGUIPacket.java index f4ae249fb..4d18cc63a 100644 --- a/src/main/java/kamkeel/network/packets/client/ClonerPacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/ClonerGUIPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.gui; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; @@ -11,10 +11,10 @@ import noppes.npcs.constants.EnumGuiType; import java.io.IOException; -public final class ClonerPacket extends AbstractPacket { +public final class ClonerGUIPacket extends AbstractPacket { public static final String packetName = "Client|Cloner"; - public ClonerPacket() {} + public ClonerGUIPacket() {} @Override public Enum getType() { diff --git a/src/main/java/kamkeel/network/packets/client/ClonePacket.java b/src/main/java/kamkeel/network/packets/client/gui/GUIClonerPacket.java similarity index 69% rename from src/main/java/kamkeel/network/packets/client/ClonePacket.java rename to src/main/java/kamkeel/network/packets/client/gui/GUIClonerPacket.java index 1719d2a20..e69b15463 100644 --- a/src/main/java/kamkeel/network/packets/client/ClonePacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/GUIClonerPacket.java @@ -1,5 +1,6 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.gui; +import cpw.mods.fml.relauncher.Side; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; import kamkeel.network.PacketChannel; @@ -7,16 +8,19 @@ import kamkeel.network.PacketHandler; import kamkeel.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.CustomNpcs; import noppes.npcs.Server; -import noppes.npcs.client.gui.player.GuiNpcMobSpawnerAdd; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; +import noppes.npcs.client.gui.GuiNpcMobSpawnerAdd; import java.io.IOException; -public final class ClonePacket extends AbstractPacket { +public final class GUIClonerPacket extends AbstractPacket { public static final String packetName = "Client|Clone"; - public ClonePacket() {} + public GUIClonerPacket() {} + + public GUIClonerPacket(boolean ok) {} @Override public Enum getType() { @@ -35,6 +39,8 @@ public final class ClonePacket extends AbstractPacket { @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(CustomNpcs.side() != Side.CLIENT) + return; NBTTagCompound nbt = Server.readNBT(in); NoppesUtil.openGUI(player, new GuiNpcMobSpawnerAdd(nbt)); } diff --git a/src/main/java/kamkeel/network/packets/client/gui/GuiRedstonePacket.java b/src/main/java/kamkeel/network/packets/client/gui/GuiRedstonePacket.java index 3acf4e559..d12bbfd60 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/GuiRedstonePacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/GuiRedstonePacket.java @@ -8,7 +8,7 @@ import kamkeel.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/gui/GuiWaypointPacket.java b/src/main/java/kamkeel/network/packets/client/gui/GuiWaypointPacket.java index 91a4ad0d4..5905b517e 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/GuiWaypointPacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/GuiWaypointPacket.java @@ -8,7 +8,7 @@ import kamkeel.network.enums.EnumClientPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/gui/IsGuiOpenPacket.java b/src/main/java/kamkeel/network/packets/client/gui/IsGuiOpenPacket.java index 54f0c905c..20a04f1ca 100644 --- a/src/main/java/kamkeel/network/packets/client/gui/IsGuiOpenPacket.java +++ b/src/main/java/kamkeel/network/packets/client/gui/IsGuiOpenPacket.java @@ -7,7 +7,7 @@ import kamkeel.network.PacketHandler; import kamkeel.network.enums.EnumClientPacket; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.NoppesUtil; +import noppes.npcs.client.NoppesUtil; import java.io.IOException; diff --git a/src/main/java/kamkeel/network/packets/client/ContinueSoundsPacket.java b/src/main/java/kamkeel/network/packets/client/sound/ContinueSoundsPacket.java similarity index 95% rename from src/main/java/kamkeel/network/packets/client/ContinueSoundsPacket.java rename to src/main/java/kamkeel/network/packets/client/sound/ContinueSoundsPacket.java index 16dd9319c..f6de38442 100644 --- a/src/main/java/kamkeel/network/packets/client/ContinueSoundsPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sound/ContinueSoundsPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sound; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/PauseSoundsPacket.java b/src/main/java/kamkeel/network/packets/client/sound/PauseSoundsPacket.java similarity index 95% rename from src/main/java/kamkeel/network/packets/client/PauseSoundsPacket.java rename to src/main/java/kamkeel/network/packets/client/sound/PauseSoundsPacket.java index 8693a67f2..297e9e6b6 100644 --- a/src/main/java/kamkeel/network/packets/client/PauseSoundsPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sound/PauseSoundsPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sound; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/PlayMusicPacket.java b/src/main/java/kamkeel/network/packets/client/sound/PlayMusicPacket.java similarity index 95% rename from src/main/java/kamkeel/network/packets/client/PlayMusicPacket.java rename to src/main/java/kamkeel/network/packets/client/sound/PlayMusicPacket.java index c12770bc0..e0c8fe9b5 100644 --- a/src/main/java/kamkeel/network/packets/client/PlayMusicPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sound/PlayMusicPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sound; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/PlaySoundPacket.java b/src/main/java/kamkeel/network/packets/client/sound/PlaySoundPacket.java similarity index 96% rename from src/main/java/kamkeel/network/packets/client/PlaySoundPacket.java rename to src/main/java/kamkeel/network/packets/client/sound/PlaySoundPacket.java index 7f2996508..f0ed27cdc 100644 --- a/src/main/java/kamkeel/network/packets/client/PlaySoundPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sound/PlaySoundPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sound; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/PlaySoundToNoIdPacket.java b/src/main/java/kamkeel/network/packets/client/sound/PlaySoundToNoIdPacket.java similarity index 96% rename from src/main/java/kamkeel/network/packets/client/PlaySoundToNoIdPacket.java rename to src/main/java/kamkeel/network/packets/client/sound/PlaySoundToNoIdPacket.java index 00b052338..a2b53fee6 100644 --- a/src/main/java/kamkeel/network/packets/client/PlaySoundToNoIdPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sound/PlaySoundToNoIdPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sound; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/client/PlaySoundToPacket.java b/src/main/java/kamkeel/network/packets/client/sound/PlaySoundToPacket.java similarity index 96% rename from src/main/java/kamkeel/network/packets/client/PlaySoundToPacket.java rename to src/main/java/kamkeel/network/packets/client/sound/PlaySoundToPacket.java index da0baead2..5c651de5c 100644 --- a/src/main/java/kamkeel/network/packets/client/PlaySoundToPacket.java +++ b/src/main/java/kamkeel/network/packets/client/sound/PlaySoundToPacket.java @@ -1,4 +1,4 @@ -package kamkeel.network.packets.client; +package kamkeel.network.packets.client.sound; import io.netty.buffer.ByteBuf; import kamkeel.network.AbstractPacket; diff --git a/src/main/java/kamkeel/network/packets/large/LargeScrollDataPacket.java b/src/main/java/kamkeel/network/packets/large/LargeScrollDataPacket.java new file mode 100644 index 000000000..acdd6757d --- /dev/null +++ b/src/main/java/kamkeel/network/packets/large/LargeScrollDataPacket.java @@ -0,0 +1,49 @@ +package kamkeel.network.packets.large; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.LargeAbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import kamkeel.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.NoppesUtil; + +import java.io.IOException; +import java.util.Map; + +public final class LargeScrollDataPacket extends LargeAbstractPacket { + public static final String packetName = "Large|ScrollData"; + + private Map data; + + public LargeScrollDataPacket() {} + + public LargeScrollDataPacket(Map data) { + this.data = data; + } + + @Override + public Enum getType() { + return EnumClientPacket.SCROLL_DATA; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.LARGE_PACKET; + } + + @Override + public void writeData(ByteBuf out) throws IOException { + out.writeInt(data.size()); + for (Map.Entry entry : data.entrySet()) { + ByteBufUtils.writeString(out, entry.getKey()); + out.writeInt(entry.getValue()); + } + } + + @Override + public void handleData(ByteBuf data, EntityPlayer player) throws IOException { + NoppesUtil.setScrollData(data); + } +} diff --git a/src/main/java/kamkeel/network/packets/large/LargeScrollGroupPacket.java b/src/main/java/kamkeel/network/packets/large/LargeScrollGroupPacket.java new file mode 100644 index 000000000..95384acfb --- /dev/null +++ b/src/main/java/kamkeel/network/packets/large/LargeScrollGroupPacket.java @@ -0,0 +1,49 @@ +package kamkeel.network.packets.large; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.LargeAbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import kamkeel.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.NoppesUtil; + +import java.io.IOException; +import java.util.Map; + +public final class LargeScrollGroupPacket extends LargeAbstractPacket { + public static final String packetName = "Large|ScrollGroup"; + + private Map data; + + public LargeScrollGroupPacket() {} + + public LargeScrollGroupPacket(Map data) { + this.data = data; + } + + @Override + public Enum getType() { + return EnumClientPacket.SCROLL_GROUP; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.LARGE_PACKET; + } + + @Override + public void writeData(ByteBuf out) throws IOException { + out.writeInt(data.size()); + for (Map.Entry entry : data.entrySet()) { + ByteBufUtils.writeString(out, entry.getKey()); + out.writeInt(entry.getValue()); + } + } + + @Override + public void handleData(ByteBuf data, EntityPlayer player) throws IOException { + NoppesUtil.setScrollGroup(data); + } +} diff --git a/src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java b/src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java new file mode 100644 index 000000000..3fc99cff0 --- /dev/null +++ b/src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java @@ -0,0 +1,49 @@ +// src/main/java/kamkeel/network/packets/large/LargeScrollListPacket.java +package kamkeel.network.packets.large; + +import io.netty.buffer.ByteBuf; +import kamkeel.network.LargeAbstractPacket; +import kamkeel.network.PacketChannel; +import kamkeel.network.PacketHandler; +import kamkeel.network.enums.EnumClientPacket; +import kamkeel.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import noppes.npcs.client.NoppesUtil; + +import java.io.IOException; +import java.util.List; + +public final class LargeScrollListPacket extends LargeAbstractPacket { + public static final String packetName = "Large|ScrollList"; + + private List data; + + public LargeScrollListPacket() {} + + public LargeScrollListPacket(List data) { + this.data = data; + } + + @Override + public Enum getType() { + return EnumClientPacket.SCROLL_LIST; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.LARGE_PACKET; + } + + @Override + public void writeData(ByteBuf out) throws IOException { + out.writeInt(data.size()); + for (String entry : data) { + ByteBufUtils.writeString(out, entry); + } + } + + @Override + public void handleData(ByteBuf data, EntityPlayer player) throws IOException { + NoppesUtil.setScrollList(data); + } +} diff --git a/src/main/java/kamkeel/util/ByteBufUtils.java b/src/main/java/kamkeel/util/ByteBufUtils.java index 35be971ff..c5e4dee1d 100644 --- a/src/main/java/kamkeel/util/ByteBufUtils.java +++ b/src/main/java/kamkeel/util/ByteBufUtils.java @@ -16,6 +16,62 @@ import java.util.Map; public class ByteBufUtils extends cpw.mods.fml.common.network.ByteBufUtils { + // TODO: Modify this to check if it a large packet so we don't need the condition at the bottom or make two + // differnt methods one for fillBuffer normal and one fillLargeBuffer + public static boolean fillBuffer(ByteBuf buffer, Enum enu, Object... obs) throws IOException{ + buffer.writeInt(enu.ordinal()); + for(Object ob : obs){ + if(ob == null) + continue; + if(ob instanceof Map){ + Map map = (Map) ob; + + buffer.writeInt(map.size()); + for(String key : map.keySet()){ + int value = map.get(key); + buffer.writeInt(value); + writeString(buffer, key); + } + } + else if(ob instanceof MerchantRecipeList) + ((MerchantRecipeList)ob).func_151391_a(new PacketBuffer(buffer)); + else if(ob instanceof List){ + List list = (List) ob; + buffer.writeInt(list.size()); + for(String s : list) + writeString(buffer, s); + } + else if(ob instanceof Enum) + buffer.writeInt(((Enum) ob).ordinal()); + else if(ob instanceof Integer) + buffer.writeInt((Integer) ob); + else if(ob instanceof Boolean) + buffer.writeBoolean((Boolean) ob); + else if(ob instanceof String) + writeString(buffer, (String) ob); + else if(ob instanceof Float) + buffer.writeFloat((Float) ob); + else if(ob instanceof Long) + buffer.writeLong((Long) ob); + else if(ob instanceof Double) + buffer.writeDouble((Double) ob); + else if (ob instanceof byte[]) { + // Write byte array length followed by bytes + byte[] byteArray = (byte[]) ob; + buffer.writeShort((short) byteArray.length); + buffer.writeBytes(byteArray); + } + else if(ob instanceof NBTTagCompound) + writeNBT(buffer, (NBTTagCompound) ob); + } + if(buffer.array().length >= 32767){ + LogWriter.error("Packet " + enu + " was too big to be send"); + LogWriter.script( "Issue occurred with the following Packet - " + enu + ":\n" + Arrays.toString(obs)); + return false; + } + return true; + } + public static void writeIntArray(ByteBuf buffer, int[] arr) { buffer.writeInt(arr.length); for (int i : arr) {