diff options
author | Glease <4586901+Glease@users.noreply.github.com> | 2023-03-13 12:16:40 +0800 |
---|---|---|
committer | Glease <4586901+Glease@users.noreply.github.com> | 2023-03-13 12:16:40 +0800 |
commit | 00e5036a931222a1ef70bcbde8087560fa002817 (patch) | |
tree | 24387079270ac1f0bc10c03b3bb4f10319908a7c /src/main/java | |
parent | ff242451cd57db0e9786435313ee34254094ec95 (diff) | |
download | GT5-Unofficial-00e5036a931222a1ef70bcbde8087560fa002817.tar.gz GT5-Unofficial-00e5036a931222a1ef70bcbde8087560fa002817.tar.bz2 GT5-Unofficial-00e5036a931222a1ef70bcbde8087560fa002817.zip |
compress prospecting packet using deflater
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/com/detrav/net/DetravNetwork.java | 36 | ||||
-rw-r--r-- | src/main/java/com/detrav/net/DetravPacket.java | 5 | ||||
-rw-r--r-- | src/main/java/com/detrav/net/ProspectingPacket.java | 24 |
3 files changed, 33 insertions, 32 deletions
diff --git a/src/main/java/com/detrav/net/DetravNetwork.java b/src/main/java/com/detrav/net/DetravNetwork.java index ecd9559f39..75e0a267ab 100644 --- a/src/main/java/com/detrav/net/DetravNetwork.java +++ b/src/main/java/com/detrav/net/DetravNetwork.java @@ -5,14 +5,14 @@ import java.util.List; import net.minecraft.entity.player.EntityPlayerMP; -import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteStreams; - import cpw.mods.fml.common.network.FMLEmbeddedChannel; import cpw.mods.fml.common.network.FMLOutboundHandler; 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 io.netty.buffer.ByteBufInputStream; +import io.netty.buffer.ByteBufOutputStream; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; @@ -27,7 +27,6 @@ public class DetravNetwork extends MessageToMessageCodec<FMLProxyPacket, DetravP static public DetravNetwork INSTANCE; private final EnumMap<Side, FMLEmbeddedChannel> mChannel; - private DetravPacket[] mSubChannels; public DetravNetwork() { INSTANCE = this; @@ -36,38 +35,37 @@ public class DetravNetwork extends MessageToMessageCodec<FMLProxyPacket, DetravP @Override protected void encode(ChannelHandlerContext ctx, DetravPacket msg, List<Object> out) throws Exception { - out.add( - new FMLProxyPacket( - Unpooled.buffer().writeByte(msg.getPacketID()).writeBytes(msg.encode()).copy(), - (String) ctx.channel().attr(NetworkRegistry.FML_CHANNEL).get())); + ByteBuf buf = Unpooled.buffer(); + buf.writeByte(msg.getPacketID()); + msg.encode(new ByteBufOutputStream(buf)); + out.add(new FMLProxyPacket(buf, ctx.channel().attr(NetworkRegistry.FML_CHANNEL).get())); } - @SuppressWarnings("UnstableApiUsage") @Override protected void decode(ChannelHandlerContext ctx, FMLProxyPacket msg, List<Object> out) throws Exception { - ByteArrayDataInput aData = ByteStreams.newDataInput(msg.payload().array()); - aData.readByte(); // Sub Channel - Ignore - out.add(ProspectingPacket.decode(aData)); + ByteBuf payload = msg.payload(); + payload.readByte(); // Sub Channel - Ignore + out.add(ProspectingPacket.decode(new ByteBufInputStream(payload))); } public void sendToPlayer(DetravPacket aPacket, EntityPlayerMP aPlayer) { - ((FMLEmbeddedChannel) this.mChannel.get(Side.SERVER)).attr(FMLOutboundHandler.FML_MESSAGETARGET) + this.mChannel.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET) .set(FMLOutboundHandler.OutboundTarget.PLAYER); - ((FMLEmbeddedChannel) this.mChannel.get(Side.SERVER)).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS) - .set(aPlayer); - ((FMLEmbeddedChannel) this.mChannel.get(Side.SERVER)).writeAndFlush(aPacket); + this.mChannel.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(aPlayer); + this.mChannel.get(Side.SERVER).writeAndFlush(aPacket); } public void sendToServer(DetravPacket aPacket) { - ((FMLEmbeddedChannel) this.mChannel.get(Side.CLIENT)).attr(FMLOutboundHandler.FML_MESSAGETARGET) + this.mChannel.get(Side.CLIENT).attr(FMLOutboundHandler.FML_MESSAGETARGET) .set(FMLOutboundHandler.OutboundTarget.TOSERVER); - ((FMLEmbeddedChannel) this.mChannel.get(Side.CLIENT)).writeAndFlush(aPacket); + this.mChannel.get(Side.CLIENT).writeAndFlush(aPacket); } @ChannelHandler.Sharable static final class HandlerShared extends SimpleChannelInboundHandler<DetravPacket> { - protected void channelRead0(ChannelHandlerContext ctx, DetravPacket aPacket) throws Exception { + @Override + protected void channelRead0(ChannelHandlerContext ctx, DetravPacket aPacket) { aPacket.process(); } } diff --git a/src/main/java/com/detrav/net/DetravPacket.java b/src/main/java/com/detrav/net/DetravPacket.java index 06e968b1ef..8659549045 100644 --- a/src/main/java/com/detrav/net/DetravPacket.java +++ b/src/main/java/com/detrav/net/DetravPacket.java @@ -1,5 +1,8 @@ package com.detrav.net; +import java.io.IOException; +import java.io.OutputStream; + /** * Created by wital_000 on 20.03.2016. */ @@ -7,7 +10,7 @@ public abstract class DetravPacket { public abstract int getPacketID(); - public abstract byte[] encode(); + public abstract void encode(OutputStream out) throws IOException; public abstract void process(); } diff --git a/src/main/java/com/detrav/net/ProspectingPacket.java b/src/main/java/com/detrav/net/ProspectingPacket.java index 4d6fd72b82..beb8d9d3d7 100644 --- a/src/main/java/com/detrav/net/ProspectingPacket.java +++ b/src/main/java/com/detrav/net/ProspectingPacket.java @@ -1,6 +1,9 @@ package com.detrav.net; +import java.io.*; import java.util.HashMap; +import java.util.zip.DeflaterInputStream; +import java.util.zip.DeflaterOutputStream; import net.minecraft.util.StatCollector; import net.minecraftforge.fluids.FluidRegistry; @@ -12,9 +15,6 @@ import com.detrav.gui.textures.DetravMapTexture; import com.detrav.utils.GTppHelper; import com.github.bartimaeusnek.bartworks.system.material.Werkstoff; import com.google.common.base.Objects; -import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteArrayDataOutput; -import com.google.common.io.ByteStreams; import gregtech.api.GregTech_API; import gregtech.api.enums.Materials; @@ -100,7 +100,8 @@ public class ProspectingPacket extends DetravPacket { packet.metaMap.put(meta, name); } - public static Object decode(ByteArrayDataInput aData) { + public static Object decode(InputStream in) throws IOException { + DataInput aData = new DataInputStream(new DeflaterInputStream(in)); ProspectingPacket packet = new ProspectingPacket( aData.readInt(), aData.readInt(), @@ -134,10 +135,9 @@ public class ProspectingPacket extends DetravPacket { return 0; } - @SuppressWarnings("UnstableApiUsage") @Override - public byte[] encode() { - ByteArrayDataOutput tOut = ByteStreams.newDataOutput(1); + public void encode(OutputStream out) throws IOException { + DataOutputStream tOut = new DataOutputStream(new DeflaterOutputStream(out)); tOut.writeInt(chunkX); tOut.writeInt(chunkZ); tOut.writeInt(posX); @@ -149,18 +149,18 @@ public class ProspectingPacket extends DetravPacket { int aSize = (size * 2 + 1) * 16; int checkOut = 0; for (int i = 0; i < aSize; i++) for (int j = 0; j < aSize; j++) { - if (map[i][j] == null) tOut.writeByte(0); + HashMap<Byte, Short> data = map[i][j]; + if (data == null) tOut.writeByte(0); else { - tOut.writeByte(map[i][j].keySet().size()); - for (byte key : map[i][j].keySet()) { + tOut.writeByte(data.keySet().size()); + for (byte key : data.keySet()) { tOut.writeByte(key); - tOut.writeShort(map[i][j].get(key)); + tOut.writeShort(data.get(key)); checkOut++; } } } tOut.writeInt(checkOut); - return tOut.toByteArray(); } @Override |