Files
CustomNPC-Plus/src/main/java/noppes/npcs/Server.java
T

65 lines
2.6 KiB
Java
Raw Normal View History

2018-09-13 12:03:28 -04:00
package noppes.npcs;
import io.netty.buffer.ByteBuf;
2025-01-30 12:44:39 -05:00
import kamkeel.npcs.util.ByteBufUtils;
2018-09-13 12:03:28 -04:00
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.PacketBuffer;
import net.minecraft.village.MerchantRecipeList;
2023-01-12 21:33:06 -05:00
import java.io.IOException;
2024-10-06 14:28:51 -04:00
import java.util.Arrays;
2023-01-12 21:33:06 -05:00
import java.util.List;
import java.util.Map;
2018-09-13 12:03:28 -04:00
public class Server {
2025-03-12 20:12:01 -04:00
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;
2018-09-13 12:03:28 -04:00
2025-03-12 20:12:01 -04:00
buffer.writeInt(map.size());
for (String key : map.keySet()) {
int value = map.get(key);
buffer.writeInt(value);
ByteBufUtils.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)
ByteBufUtils.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)
ByteBufUtils.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);
2024-03-28 18:16:17 -04:00
else if (ob instanceof byte[]) {
// Write byte array length followed by bytes
byte[] byteArray = (byte[]) ob;
buffer.writeShort((short) byteArray.length);
buffer.writeBytes(byteArray);
2025-03-12 20:12:01 -04:00
} else if (ob instanceof NBTTagCompound)
ByteBufUtils.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));
2024-10-06 14:28:51 -04:00
return false;
2025-03-12 20:12:01 -04:00
}
2018-09-13 12:03:28 -04:00
return true;
2025-03-12 20:12:01 -04:00
}
2018-09-13 12:03:28 -04:00
}