mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-12 04:57:27 +00:00
More Super Commits for Packet System
This commit is contained in:
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,
|
||||
|
||||
+3
-3
@@ -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);
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -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() {
|
||||
+11
-5
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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) {
|
||||
|
||||
Reference in new issue
Block a user