More Super Commits for Packet System

This commit is contained in:
Kam committed 2025-01-28 18:14:18 -05:00
1 parent 882bce2d4b
commit 5790926e51
31 files changed
+407 -225

No files matched your search

@@ -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<String, Integer> map) {
LargeScrollDataPacket packet = new LargeScrollDataPacket(map);
PacketHandler.Instance.sendToPlayer(packet, player);
}
public static void sendScrollGroup(EntityPlayerMP player, Map<String,Integer> map){
LargeScrollGroupPacket packet = new LargeScrollGroupPacket(map);
PacketHandler.Instance.sendToPlayer(packet, player);
}
}
@@ -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<Integer, ByteBuf> packetChunks = new HashMap<>();
private static final Map<Integer, Integer> 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;
}
@@ -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();
}
}
}
@@ -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,
@@ -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() {
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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);
}
}
@@ -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);
}
}
@@ -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);
}
}
@@ -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);
}
}
@@ -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);
}
}
@@ -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() {
@@ -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));
}
@@ -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;
@@ -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;
@@ -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;
@@ -1,4 +1,4 @@
package kamkeel.network.packets.client;
package kamkeel.network.packets.client.sound;
import io.netty.buffer.ByteBuf;
import kamkeel.network.AbstractPacket;
@@ -1,4 +1,4 @@
package kamkeel.network.packets.client;
package kamkeel.network.packets.client.sound;
import io.netty.buffer.ByteBuf;
import kamkeel.network.AbstractPacket;
@@ -1,4 +1,4 @@
package kamkeel.network.packets.client;
package kamkeel.network.packets.client.sound;
import io.netty.buffer.ByteBuf;
import kamkeel.network.AbstractPacket;
@@ -1,4 +1,4 @@
package kamkeel.network.packets.client;
package kamkeel.network.packets.client.sound;
import io.netty.buffer.ByteBuf;
import kamkeel.network.AbstractPacket;
@@ -1,4 +1,4 @@
package kamkeel.network.packets.client;
package kamkeel.network.packets.client.sound;
import io.netty.buffer.ByteBuf;
import kamkeel.network.AbstractPacket;
@@ -1,4 +1,4 @@
package kamkeel.network.packets.client;
package kamkeel.network.packets.client.sound;
import io.netty.buffer.ByteBuf;
import kamkeel.network.AbstractPacket;
@@ -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<String, Integer> data;
public LargeScrollDataPacket() {}
public LargeScrollDataPacket(Map<String, Integer> 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<String, Integer> 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);
}
}
@@ -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<String, Integer> data;
public LargeScrollGroupPacket() {}
public LargeScrollGroupPacket(Map<String, Integer> 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<String, Integer> 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);
}
}
@@ -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<String> data;
public LargeScrollListPacket() {}
public LargeScrollListPacket(List<String> 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);
}
}
@@ -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<String,Integer> map = (Map<String, Integer>) 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<String> list = (List<String>) 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) {