aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/gregtech/common/GT_Network.java46
1 files changed, 34 insertions, 12 deletions
diff --git a/src/main/java/gregtech/common/GT_Network.java b/src/main/java/gregtech/common/GT_Network.java
index c17ffcecbb..96ca384949 100644
--- a/src/main/java/gregtech/common/GT_Network.java
+++ b/src/main/java/gregtech/common/GT_Network.java
@@ -35,22 +35,45 @@ public class GT_Network extends MessageToMessageCodec<FMLProxyPacket, GT_Packet>
private final GT_Packet[] mSubChannels;
public GT_Network() {
- this.mChannel = NetworkRegistry.INSTANCE.newChannel("GregTech", this, new HandlerShared());
- // last known packet id is 13
- this.mSubChannels = new GT_Packet[]{new GT_Packet_TileEntity(), new GT_Packet_Sound(), new GT_Packet_Block_Event(), new GT_Packet_Ores(), new GT_Packet_Pollution(), new MessageSetFlaskCapacity(), new GT_Packet_TileEntityCover(), new GT_Packet_TileEntityCoverGUI(), new MessageUpdateFluidDisplayItem(), new GT_Packet_ClientPreference(), new GT_Packet_WirelessRedstoneCover(), new GT_Packet_TileEntityCoverNew(), new GT_Packet_SetConfigurationCircuit(), new GT_Packet_UpdateItem()};
+ this("GregTech",
+ new GT_Packet_TileEntity(),
+ new GT_Packet_Sound(),
+ new GT_Packet_Block_Event(),
+ new GT_Packet_Ores(),
+ new GT_Packet_Pollution(),
+ new MessageSetFlaskCapacity(),
+ new GT_Packet_TileEntityCover(),
+ new GT_Packet_TileEntityCoverGUI(),
+ new MessageUpdateFluidDisplayItem(),
+ new GT_Packet_ClientPreference(),
+ new GT_Packet_WirelessRedstoneCover(),
+ new GT_Packet_TileEntityCoverNew(),
+ new GT_Packet_SetConfigurationCircuit(),
+ new GT_Packet_UpdateItem()
+ );
}
-
+
+ public GT_Network(String channelName, GT_Packet... packetTypes) {
+ this.mChannel = NetworkRegistry.INSTANCE.newChannel(channelName, this, new HandlerShared());
+ this.mSubChannels = new GT_Packet[packetTypes.length];
+ for (GT_Packet packetType : packetTypes) {
+ final int pId = packetType.getPacketID();
+ if (this.mSubChannels[pId] == null)
+ this.mSubChannels[pId] = packetType;
+ else
+ throw new IllegalArgumentException("Duplicate Packet ID! " + pId);
+ }
+ }
+
@Override
- protected void encode(ChannelHandlerContext aContext, GT_Packet aPacket, List<Object> aOutput)
- throws Exception {
+ protected void encode(ChannelHandlerContext aContext, GT_Packet aPacket, List<Object> aOutput) throws Exception {
ByteBuf tBuf = Unpooled.buffer().writeByte(aPacket.getPacketID());
aPacket.encode(tBuf);
aOutput.add(new FMLProxyPacket(tBuf, aContext.channel().attr(NetworkRegistry.FML_CHANNEL).get()));
}
@Override
- protected void decode(ChannelHandlerContext aContext, FMLProxyPacket aPacket, List<Object> aOutput)
- throws Exception {
+ protected void decode(ChannelHandlerContext aContext, FMLProxyPacket aPacket, List<Object> aOutput) throws Exception {
ByteArrayDataInput aData = ByteStreams.newDataInput(aPacket.payload().array());
GT_Packet tPacket = this.mSubChannels[aData.readByte()].decode(aData);
tPacket.setINetHandler(aPacket.handler());
@@ -102,12 +125,11 @@ public class GT_Network extends MessageToMessageCodec<FMLProxyPacket, GT_Packet>
}
@ChannelHandler.Sharable
- static final class HandlerShared
- extends SimpleChannelInboundHandler<GT_Packet> {
+ static final class HandlerShared extends SimpleChannelInboundHandler<GT_Packet> {
@Override
protected void channelRead0(ChannelHandlerContext ctx, GT_Packet aPacket) {
- EntityPlayer aPlayer = GT_Values.GT.getThePlayer();
- aPacket.process(aPlayer == null ? null : GT_Values.GT.getThePlayer().worldObj);
+ final EntityPlayer aPlayer = GT_Values.GT.getThePlayer();
+ aPacket.process(aPlayer == null ? null : aPlayer.worldObj);
}
}
}