From 4c8cf9986d75f91b13281de1d9d476d6dd392d50 Mon Sep 17 00:00:00 2001 From: Léa Gris Date: Tue, 27 Apr 2021 23:13:38 +0200 Subject: fix(textfiles): add missing neline at end of files git and diff tools will complain if text file does not end with a newline. Fixed all text files in the repository with Linux bash shell: ```sh git ls-files -z | while IFS= read -rd '' f; do mime="$(file --brief --mime "$f")"; if [ -z "${mime##text/*}" ]; then tail -c1 "$f" | read -r _ || printf '\n' >>"$f"; fi; done ``` --- src/main/java/gregtech/api/net/GT_Packet.java | 2 +- src/main/java/gregtech/api/net/GT_Packet_Block_Event.java | 2 +- src/main/java/gregtech/api/net/GT_Packet_Pollution.java | 2 +- src/main/java/gregtech/api/net/GT_Packet_Sound.java | 2 +- src/main/java/gregtech/api/net/GT_Packet_TileEntity.java | 2 +- src/main/java/gregtech/api/net/GT_Packet_TileEntityCover.java | 2 +- src/main/java/gregtech/api/net/GT_Packet_TileEntityCoverGUI.java | 2 +- src/main/java/gregtech/api/net/IGT_NetworkHandler.java | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) (limited to 'src/main/java/gregtech/api/net') diff --git a/src/main/java/gregtech/api/net/GT_Packet.java b/src/main/java/gregtech/api/net/GT_Packet.java index 6fdd013d8f..e2b7b247b2 100644 --- a/src/main/java/gregtech/api/net/GT_Packet.java +++ b/src/main/java/gregtech/api/net/GT_Packet.java @@ -26,4 +26,4 @@ public abstract class GT_Packet { public abstract GT_Packet decode(ByteArrayDataInput aData); public abstract void process(IBlockAccess aWorld); -} \ No newline at end of file +} diff --git a/src/main/java/gregtech/api/net/GT_Packet_Block_Event.java b/src/main/java/gregtech/api/net/GT_Packet_Block_Event.java index d8cab48bd0..5a804b9511 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_Block_Event.java +++ b/src/main/java/gregtech/api/net/GT_Packet_Block_Event.java @@ -55,4 +55,4 @@ public class GT_Packet_Block_Event extends GT_Packet { public byte getPacketID() { return 2; } -} \ No newline at end of file +} diff --git a/src/main/java/gregtech/api/net/GT_Packet_Pollution.java b/src/main/java/gregtech/api/net/GT_Packet_Pollution.java index 7f717c1a47..0a365bf818 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_Pollution.java +++ b/src/main/java/gregtech/api/net/GT_Packet_Pollution.java @@ -48,4 +48,4 @@ public class GT_Packet_Pollution extends GT_Packet { public byte getPacketID() { return 4; } -} \ No newline at end of file +} diff --git a/src/main/java/gregtech/api/net/GT_Packet_Sound.java b/src/main/java/gregtech/api/net/GT_Packet_Sound.java index 5490d0d390..be381dbf69 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_Sound.java +++ b/src/main/java/gregtech/api/net/GT_Packet_Sound.java @@ -52,4 +52,4 @@ public class GT_Packet_Sound extends GT_Packet { public byte getPacketID() { return 1; } -} \ No newline at end of file +} diff --git a/src/main/java/gregtech/api/net/GT_Packet_TileEntity.java b/src/main/java/gregtech/api/net/GT_Packet_TileEntity.java index 457bd7f21d..6d71cbd818 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_TileEntity.java +++ b/src/main/java/gregtech/api/net/GT_Packet_TileEntity.java @@ -104,4 +104,4 @@ public class GT_Packet_TileEntity extends GT_Packet { public byte getPacketID() { return 0; } -} \ No newline at end of file +} diff --git a/src/main/java/gregtech/api/net/GT_Packet_TileEntityCover.java b/src/main/java/gregtech/api/net/GT_Packet_TileEntityCover.java index bc688f47ed..df64444622 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_TileEntityCover.java +++ b/src/main/java/gregtech/api/net/GT_Packet_TileEntityCover.java @@ -96,4 +96,4 @@ public class GT_Packet_TileEntityCover extends GT_Packet { } } } -} \ No newline at end of file +} diff --git a/src/main/java/gregtech/api/net/GT_Packet_TileEntityCoverGUI.java b/src/main/java/gregtech/api/net/GT_Packet_TileEntityCoverGUI.java index 58ebf95ac6..642e9102b8 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_TileEntityCoverGUI.java +++ b/src/main/java/gregtech/api/net/GT_Packet_TileEntityCoverGUI.java @@ -122,4 +122,4 @@ public class GT_Packet_TileEntityCoverGUI extends GT_Packet { } } } -} \ No newline at end of file +} diff --git a/src/main/java/gregtech/api/net/IGT_NetworkHandler.java b/src/main/java/gregtech/api/net/IGT_NetworkHandler.java index 488e25591f..d35fedf7f9 100644 --- a/src/main/java/gregtech/api/net/IGT_NetworkHandler.java +++ b/src/main/java/gregtech/api/net/IGT_NetworkHandler.java @@ -12,4 +12,4 @@ public interface IGT_NetworkHandler { public void sendToServer(GT_Packet aPacket); public void sendPacketToAllPlayersInRange(World aWorld, GT_Packet aPacket, int aX, int aZ); -} \ No newline at end of file +} -- cgit From ce0818a785bfbe928ca08e451e0b2d486cd32cdf Mon Sep 17 00:00:00 2001 From: Glease <4586901+Glease@users.noreply.github.com> Date: Wed, 19 May 2021 01:57:54 +0800 Subject: Get rid of intermediate byte array while sending packet --- src/main/java/gregtech/api/net/GT_Packet.java | 20 ++++++++++ .../gregtech/api/net/GT_Packet_Block_Event.java | 21 +++++----- src/main/java/gregtech/api/net/GT_Packet_New.java | 28 +++++++++++++ .../java/gregtech/api/net/GT_Packet_Pollution.java | 16 +++----- .../java/gregtech/api/net/GT_Packet_Sound.java | 34 ++++++++++------ .../gregtech/api/net/GT_Packet_TileEntity.java | 43 +++++++++----------- .../api/net/GT_Packet_TileEntityCover.java | 26 ++++++------ .../api/net/GT_Packet_TileEntityCoverGUI.java | 28 ++++++------- .../java/gregtech/api/net/IGT_NetworkHandler.java | 9 +++-- src/main/java/gregtech/common/GT_Network.java | 46 ++++++++++++++-------- .../gregtech/common/blocks/GT_Packet_Ores.java | 24 +++++------ .../common/net/MessageSetFlaskCapacity.java | 19 ++++----- .../common/net/MessageUpdateFluidDisplayItem.java | 21 +++++----- 13 files changed, 186 insertions(+), 149 deletions(-) create mode 100644 src/main/java/gregtech/api/net/GT_Packet_New.java (limited to 'src/main/java/gregtech/api/net') diff --git a/src/main/java/gregtech/api/net/GT_Packet.java b/src/main/java/gregtech/api/net/GT_Packet.java index e2b7b247b2..4bf435ca0c 100644 --- a/src/main/java/gregtech/api/net/GT_Packet.java +++ b/src/main/java/gregtech/api/net/GT_Packet.java @@ -1,8 +1,13 @@ package gregtech.api.net; import com.google.common.io.ByteArrayDataInput; +import io.netty.buffer.ByteBuf; import net.minecraft.world.IBlockAccess; +/** + * @deprecated Use {@link GT_Packet_New} instead + */ +@Deprecated public abstract class GT_Packet { public GT_Packet(boolean aIsReference) { // @@ -17,13 +22,28 @@ public abstract class GT_Packet { /** * @return encoded byte Stream + * @deprecated Use {@link #encode(ByteBuf)} instead */ + @Deprecated public abstract byte[] encode(); + /** + * Encode the data into given byte buffer without creating an intermediate byte array. + * Default implementation just throw {@link UnsupportedOperationException}. + */ + public void encode(ByteBuf aOut) { + throw new UnsupportedOperationException(); + } + /** * @return encoded byte Stream */ public abstract GT_Packet decode(ByteArrayDataInput aData); + /** + * Process the packet + * + * @param aWorld null if message is received on server side, the client world if message is received on client side + */ public abstract void process(IBlockAccess aWorld); } diff --git a/src/main/java/gregtech/api/net/GT_Packet_Block_Event.java b/src/main/java/gregtech/api/net/GT_Packet_Block_Event.java index 5a804b9511..9060144e22 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_Block_Event.java +++ b/src/main/java/gregtech/api/net/GT_Packet_Block_Event.java @@ -1,15 +1,14 @@ package gregtech.api.net; import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteArrayDataOutput; -import com.google.common.io.ByteStreams; +import io.netty.buffer.ByteBuf; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; /** * Used to transfer Block Events in a much better fashion */ -public class GT_Packet_Block_Event extends GT_Packet { +public class GT_Packet_Block_Event extends GT_Packet_New { private int mX, mZ; private short mY; private byte mID, mValue; @@ -28,18 +27,16 @@ public class GT_Packet_Block_Event extends GT_Packet { } @Override - public byte[] encode() { - ByteArrayDataOutput tOut = ByteStreams.newDataOutput(10); - tOut.writeInt(mX); - tOut.writeShort(mY); - tOut.writeInt(mZ); - tOut.writeByte(mID); - tOut.writeByte(mValue); - return tOut.toByteArray(); + public void encode(ByteBuf aOut) { + aOut.writeInt(mX); + aOut.writeShort(mY); + aOut.writeInt(mZ); + aOut.writeByte(mID); + aOut.writeByte(mValue); } @Override - public GT_Packet decode(ByteArrayDataInput aData) { + public GT_Packet_New decode(ByteArrayDataInput aData) { return new GT_Packet_Block_Event(aData.readInt(), aData.readShort(), aData.readInt(), aData.readByte(), aData.readByte()); } diff --git a/src/main/java/gregtech/api/net/GT_Packet_New.java b/src/main/java/gregtech/api/net/GT_Packet_New.java new file mode 100644 index 0000000000..59f6dc7251 --- /dev/null +++ b/src/main/java/gregtech/api/net/GT_Packet_New.java @@ -0,0 +1,28 @@ +package gregtech.api.net; + +import com.google.common.io.ByteArrayDataInput; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; + +@SuppressWarnings("deprecation") +public abstract class GT_Packet_New extends GT_Packet { + public GT_Packet_New(boolean aIsReference) { + super(aIsReference); + } + + @Override + @Deprecated + public final byte[] encode() { + ByteBuf tOut = Unpooled.buffer(); + encode(tOut); + byte[] bytes = new byte[tOut.readableBytes()]; + tOut.readBytes(bytes); + return bytes; + } + + @Override + public abstract void encode(ByteBuf aOut); + + @Override + public abstract GT_Packet_New decode(ByteArrayDataInput aData); +} diff --git a/src/main/java/gregtech/api/net/GT_Packet_Pollution.java b/src/main/java/gregtech/api/net/GT_Packet_Pollution.java index 0a365bf818..20efe41679 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_Pollution.java +++ b/src/main/java/gregtech/api/net/GT_Packet_Pollution.java @@ -2,12 +2,11 @@ package gregtech.api.net; import com.google.common.io.ByteArrayDataInput; import gregtech.common.GT_Client; +import io.netty.buffer.ByteBuf; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.IBlockAccess; -import java.nio.ByteBuffer; - -public class GT_Packet_Pollution extends GT_Packet { +public class GT_Packet_Pollution extends GT_Packet_New { private ChunkCoordIntPair chunk; private int pollution; @@ -22,17 +21,12 @@ public class GT_Packet_Pollution extends GT_Packet { } @Override - public byte[] encode() { - return ByteBuffer - .allocate(12) - .putInt(chunk.chunkXPos) - .putInt(chunk.chunkZPos) - .putInt(pollution) - .array(); + public void encode(ByteBuf aOut) { + aOut.writeInt(chunk.chunkXPos).writeInt(chunk.chunkZPos).writeInt(pollution); } @Override - public GT_Packet decode(ByteArrayDataInput aData) { + public GT_Packet_New decode(ByteArrayDataInput aData) { return new GT_Packet_Pollution( new ChunkCoordIntPair(aData.readInt(), aData.readInt()), aData.readInt() diff --git a/src/main/java/gregtech/api/net/GT_Packet_Sound.java b/src/main/java/gregtech/api/net/GT_Packet_Sound.java index be381dbf69..be66400609 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_Sound.java +++ b/src/main/java/gregtech/api/net/GT_Packet_Sound.java @@ -1,12 +1,16 @@ package gregtech.api.net; import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteArrayDataOutput; -import com.google.common.io.ByteStreams; +import gregtech.api.util.GT_Log; import gregtech.api.util.GT_Utility; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBufOutputStream; import net.minecraft.world.IBlockAccess; -public class GT_Packet_Sound extends GT_Packet { +import java.io.DataOutput; +import java.io.IOException; + +public class GT_Packet_Sound extends GT_Packet_New { private int mX, mZ; private short mY; private String mSoundName; @@ -27,19 +31,23 @@ public class GT_Packet_Sound extends GT_Packet { } @Override - public byte[] encode() { - ByteArrayDataOutput tOut = ByteStreams.newDataOutput(10); - tOut.writeUTF(mSoundName); - tOut.writeFloat(mSoundStrength); - tOut.writeFloat(mSoundPitch); - tOut.writeInt(mX); - tOut.writeShort(mY); - tOut.writeInt(mZ); - return tOut.toByteArray(); + public void encode(ByteBuf aOut) { + DataOutput tOut = new ByteBufOutputStream(aOut); + try { + tOut.writeUTF(mSoundName); + tOut.writeFloat(mSoundStrength); + tOut.writeFloat(mSoundPitch); + tOut.writeInt(mX); + tOut.writeShort(mY); + tOut.writeInt(mZ); + } catch (IOException e) { + // this really shouldn't happen, but whatever + e.printStackTrace(GT_Log.err); + } } @Override - public GT_Packet decode(ByteArrayDataInput aData) { + public GT_Packet_New decode(ByteArrayDataInput aData) { return new GT_Packet_Sound(aData.readUTF(), aData.readFloat(), aData.readFloat(), aData.readInt(), aData.readShort(), aData.readInt()); } diff --git a/src/main/java/gregtech/api/net/GT_Packet_TileEntity.java b/src/main/java/gregtech/api/net/GT_Packet_TileEntity.java index 6d71cbd818..051be672ab 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_TileEntity.java +++ b/src/main/java/gregtech/api/net/GT_Packet_TileEntity.java @@ -1,14 +1,13 @@ package gregtech.api.net; import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteArrayDataOutput; -import com.google.common.io.ByteStreams; import gregtech.api.metatileentity.BaseMetaPipeEntity; import gregtech.api.metatileentity.BaseMetaTileEntity; +import io.netty.buffer.ByteBuf; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; -public class GT_Packet_TileEntity extends GT_Packet { +public class GT_Packet_TileEntity extends GT_Packet_New { private int mX, mZ, mC0, mC1, mC2, mC3, mC4, mC5; private short mY, mID; private byte mTexture, mTexturePage, mUpdate, mRedstone, mColor; @@ -58,32 +57,28 @@ public class GT_Packet_TileEntity extends GT_Packet { } @Override - public byte[] encode() { - ByteArrayDataOutput tOut = ByteStreams.newDataOutput(41); + public void encode(ByteBuf aOut) { + aOut.writeInt(mX); + aOut.writeShort(mY); + aOut.writeInt(mZ); + aOut.writeShort(mID); - tOut.writeInt(mX); - tOut.writeShort(mY); - tOut.writeInt(mZ); - tOut.writeShort(mID); + aOut.writeInt(mC0); + aOut.writeInt(mC1); + aOut.writeInt(mC2); + aOut.writeInt(mC3); + aOut.writeInt(mC4); + aOut.writeInt(mC5); - tOut.writeInt(mC0); - tOut.writeInt(mC1); - tOut.writeInt(mC2); - tOut.writeInt(mC3); - tOut.writeInt(mC4); - tOut.writeInt(mC5); - - tOut.writeByte(mTexture); - tOut.writeByte(mTexturePage); - tOut.writeByte(mUpdate); - tOut.writeByte(mRedstone); - tOut.writeByte(mColor); - - return tOut.toByteArray(); + aOut.writeByte(mTexture); + aOut.writeByte(mTexturePage); + aOut.writeByte(mUpdate); + aOut.writeByte(mRedstone); + aOut.writeByte(mColor); } @Override - public GT_Packet decode(ByteArrayDataInput aData) { + public GT_Packet_New decode(ByteArrayDataInput aData) { return new GT_Packet_TileEntity(aData.readInt(), aData.readShort(), aData.readInt(), aData.readShort(), aData.readInt(), aData.readInt(), aData.readInt(), aData.readInt(), aData.readInt(), aData.readInt(), aData.readByte(), aData.readByte(), aData.readByte(), aData.readByte(), aData.readByte()); } diff --git a/src/main/java/gregtech/api/net/GT_Packet_TileEntityCover.java b/src/main/java/gregtech/api/net/GT_Packet_TileEntityCover.java index df64444622..29220e05ab 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_TileEntityCover.java +++ b/src/main/java/gregtech/api/net/GT_Packet_TileEntityCover.java @@ -1,10 +1,9 @@ package gregtech.api.net; import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteArrayDataOutput; -import com.google.common.io.ByteStreams; import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import io.netty.buffer.ByteBuf; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -14,7 +13,7 @@ import net.minecraftforge.common.DimensionManager; * Client -> Server: Update cover data */ -public class GT_Packet_TileEntityCover extends GT_Packet { +public class GT_Packet_TileEntityCover extends GT_Packet_New { protected int mX; protected short mY; protected int mZ; @@ -57,23 +56,20 @@ public class GT_Packet_TileEntityCover extends GT_Packet { } @Override - public byte[] encode() { - ByteArrayDataOutput tOut = ByteStreams.newDataOutput(4+2+4+1+4+4+4); - tOut.writeInt(mX); - tOut.writeShort(mY); - tOut.writeInt(mZ); + public void encode(ByteBuf aOut) { + aOut.writeInt(mX); + aOut.writeShort(mY); + aOut.writeInt(mZ); - tOut.writeByte(side); - tOut.writeInt(coverID); - tOut.writeInt(coverData); + aOut.writeByte(side); + aOut.writeInt(coverID); + aOut.writeInt(coverData); - tOut.writeInt(dimID); - - return tOut.toByteArray(); + aOut.writeInt(dimID); } @Override - public GT_Packet decode(ByteArrayDataInput aData) { + public GT_Packet_New decode(ByteArrayDataInput aData) { return new GT_Packet_TileEntityCover( aData.readInt(), aData.readShort(), diff --git a/src/main/java/gregtech/api/net/GT_Packet_TileEntityCoverGUI.java b/src/main/java/gregtech/api/net/GT_Packet_TileEntityCoverGUI.java index 642e9102b8..2a8091144d 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_TileEntityCoverGUI.java +++ b/src/main/java/gregtech/api/net/GT_Packet_TileEntityCoverGUI.java @@ -1,12 +1,11 @@ package gregtech.api.net; import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteArrayDataOutput; -import com.google.common.io.ByteStreams; import gregtech.api.enums.GT_Values; import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.common.GT_Proxy; +import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityClientPlayerMP; import net.minecraft.entity.player.EntityPlayerMP; @@ -18,7 +17,7 @@ import net.minecraft.world.World; * Server -> Client: Show GUI */ -public class GT_Packet_TileEntityCoverGUI extends GT_Packet { +public class GT_Packet_TileEntityCoverGUI extends GT_Packet_New { protected int mX; protected short mY; protected int mZ; @@ -79,24 +78,21 @@ public class GT_Packet_TileEntityCoverGUI extends GT_Packet { } @Override - public byte[] encode() { - ByteArrayDataOutput tOut = ByteStreams.newDataOutput(4+2+4+1+4+4+4+4); - tOut.writeInt(mX); - tOut.writeShort(mY); - tOut.writeInt(mZ); + public void encode(ByteBuf aOut) { + aOut.writeInt(mX); + aOut.writeShort(mY); + aOut.writeInt(mZ); - tOut.writeByte(side); - tOut.writeInt(coverID); - tOut.writeInt(coverData); + aOut.writeByte(side); + aOut.writeInt(coverID); + aOut.writeInt(coverData); - tOut.writeInt(dimID); - tOut.writeInt(playerID); - - return tOut.toByteArray(); + aOut.writeInt(dimID); + aOut.writeInt(playerID); } @Override - public GT_Packet decode(ByteArrayDataInput aData) { + public GT_Packet_New decode(ByteArrayDataInput aData) { return new GT_Packet_TileEntityCoverGUI( aData.readInt(), aData.readShort(), diff --git a/src/main/java/gregtech/api/net/IGT_NetworkHandler.java b/src/main/java/gregtech/api/net/IGT_NetworkHandler.java index d35fedf7f9..2949ec6791 100644 --- a/src/main/java/gregtech/api/net/IGT_NetworkHandler.java +++ b/src/main/java/gregtech/api/net/IGT_NetworkHandler.java @@ -4,12 +4,13 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.world.World; +@SuppressWarnings("deprecation") public interface IGT_NetworkHandler { - public void sendToPlayer(GT_Packet aPacket, EntityPlayerMP aPlayer); + void sendToPlayer(GT_Packet aPacket, EntityPlayerMP aPlayer); - public void sendToAllAround(GT_Packet aPacket, TargetPoint aPosition); + void sendToAllAround(GT_Packet aPacket, TargetPoint aPosition); - public void sendToServer(GT_Packet aPacket); + void sendToServer(GT_Packet aPacket); - public void sendPacketToAllPlayersInRange(World aWorld, GT_Packet aPacket, int aX, int aZ); + void sendPacketToAllPlayersInRange(World aWorld, GT_Packet aPacket, int aX, int aZ); } diff --git a/src/main/java/gregtech/common/GT_Network.java b/src/main/java/gregtech/common/GT_Network.java index b0e6f5d35e..840416d9eb 100644 --- a/src/main/java/gregtech/common/GT_Network.java +++ b/src/main/java/gregtech/common/GT_Network.java @@ -12,6 +12,7 @@ import gregtech.api.net.*; import gregtech.common.blocks.GT_Packet_Ores; import gregtech.common.net.MessageSetFlaskCapacity; import gregtech.common.net.MessageUpdateFluidDisplayItem; +import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; @@ -28,6 +29,7 @@ import java.util.List; import static gregtech.GT_Mod.GT_FML_LOGGER; @ChannelHandler.Sharable +@SuppressWarnings("deprecation") public class GT_Network extends MessageToMessageCodec implements IGT_NetworkHandler { private final EnumMap mChannel; private final GT_Packet[] mSubChannels; @@ -37,40 +39,50 @@ public class GT_Network extends MessageToMessageCodec 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()}; } + @Override protected void encode(ChannelHandlerContext aContext, GT_Packet aPacket, List aOutput) throws Exception { - aOutput.add(new FMLProxyPacket(Unpooled.buffer().writeByte(aPacket.getPacketID()).writeBytes(aPacket.encode()).copy(), (String) aContext.channel().attr(NetworkRegistry.FML_CHANNEL).get())); + 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 aOutput) throws Exception { ByteArrayDataInput aData = ByteStreams.newDataInput(aPacket.payload().array()); aOutput.add(this.mSubChannels[aData.readByte()].decode(aData)); } + @Override public void sendToPlayer(GT_Packet aPacket, EntityPlayerMP aPlayer) { - if(aPacket==null){ - GT_FML_LOGGER.info("packet null");return; - } - if(aPlayer==null){ - GT_FML_LOGGER.info("player null");return; - } - ((FMLEmbeddedChannel) 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); + if (aPacket == null) { + GT_FML_LOGGER.info("packet null"); + return; + } + if (aPlayer == null) { + GT_FML_LOGGER.info("player null"); + return; + } + this.mChannel.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.PLAYER); + this.mChannel.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(aPlayer); + this.mChannel.get(Side.SERVER).writeAndFlush(aPacket); } + @Override public void sendToAllAround(GT_Packet aPacket, NetworkRegistry.TargetPoint aPosition) { - ((FMLEmbeddedChannel) this.mChannel.get(Side.SERVER)).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALLAROUNDPOINT); - ((FMLEmbeddedChannel) this.mChannel.get(Side.SERVER)).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(aPosition); - ((FMLEmbeddedChannel) this.mChannel.get(Side.SERVER)).writeAndFlush(aPacket); + this.mChannel.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALLAROUNDPOINT); + this.mChannel.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(aPosition); + this.mChannel.get(Side.SERVER).writeAndFlush(aPacket); } + @Override public void sendToServer(GT_Packet aPacket) { - ((FMLEmbeddedChannel) 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).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.TOSERVER); + this.mChannel.get(Side.CLIENT).writeAndFlush(aPacket); } + @Override public void sendPacketToAllPlayersInRange(World aWorld, GT_Packet aPacket, int aX, int aZ) { if (!aWorld.isRemote) { for (Object tObject : aWorld.playerEntities) { @@ -89,8 +101,8 @@ public class GT_Network extends MessageToMessageCodec @ChannelHandler.Sharable static final class HandlerShared extends SimpleChannelInboundHandler { - protected void channelRead0(ChannelHandlerContext ctx, GT_Packet aPacket) - throws Exception { + @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); } diff --git a/src/main/java/gregtech/common/blocks/GT_Packet_Ores.java b/src/main/java/gregtech/common/blocks/GT_Packet_Ores.java index 4889c87dad..616c13f346 100644 --- a/src/main/java/gregtech/common/blocks/GT_Packet_Ores.java +++ b/src/main/java/gregtech/common/blocks/GT_Packet_Ores.java @@ -1,14 +1,13 @@ package gregtech.common.blocks; import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteArrayDataOutput; -import com.google.common.io.ByteStreams; -import gregtech.api.net.GT_Packet; +import gregtech.api.net.GT_Packet_New; +import io.netty.buffer.ByteBuf; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class GT_Packet_Ores extends GT_Packet { +public class GT_Packet_Ores extends GT_Packet_New { private int mX; private int mZ; private short mY; @@ -26,18 +25,15 @@ public class GT_Packet_Ores extends GT_Packet { this.mMetaData = aMetaData; } - public byte[] encode() { - ByteArrayDataOutput tOut = ByteStreams.newDataOutput(12); - - tOut.writeInt(this.mX); - tOut.writeShort(this.mY); - tOut.writeInt(this.mZ); - tOut.writeShort(this.mMetaData); - - return tOut.toByteArray(); + @Override + public void encode(ByteBuf aOut) { + aOut.writeInt(this.mX); + aOut.writeShort(this.mY); + aOut.writeInt(this.mZ); + aOut.writeShort(this.mMetaData); } - public GT_Packet decode(ByteArrayDataInput aData) { + public GT_Packet_New decode(ByteArrayDataInput aData) { return new GT_Packet_Ores(aData.readInt(), aData.readShort(), aData.readInt(), aData.readShort()); } diff --git a/src/main/java/gregtech/common/net/MessageSetFlaskCapacity.java b/src/main/java/gregtech/common/net/MessageSetFlaskCapacity.java index 7a0df96c13..c65d7f2be4 100644 --- a/src/main/java/gregtech/common/net/MessageSetFlaskCapacity.java +++ b/src/main/java/gregtech/common/net/MessageSetFlaskCapacity.java @@ -1,10 +1,9 @@ package gregtech.common.net; import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteArrayDataOutput; -import com.google.common.io.ByteStreams; -import gregtech.api.net.GT_Packet; +import gregtech.api.net.GT_Packet_New; import gregtech.common.items.GT_VolumetricFlask; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -12,7 +11,7 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; -public final class MessageSetFlaskCapacity extends GT_Packet { +public final class MessageSetFlaskCapacity extends GT_Packet_New { private int capacity, dimID, playerID; public MessageSetFlaskCapacity() { @@ -39,16 +38,14 @@ public final class MessageSetFlaskCapacity extends GT_Packet { } @Override - public byte[] encode() { - ByteArrayDataOutput tOut = ByteStreams.newDataOutput(10); - tOut.writeInt(capacity); - tOut.writeInt(dimID); - tOut.writeInt(playerID); - return tOut.toByteArray(); + public void encode(ByteBuf aOut) { + aOut.writeInt(capacity); + aOut.writeInt(dimID); + aOut.writeInt(playerID); } @Override - public GT_Packet decode(ByteArrayDataInput aData) { + public GT_Packet_New decode(ByteArrayDataInput aData) { return new MessageSetFlaskCapacity(aData.readInt(), aData.readInt(), aData.readInt()); } diff --git a/src/main/java/gregtech/common/net/MessageUpdateFluidDisplayItem.java b/src/main/java/gregtech/common/net/MessageUpdateFluidDisplayItem.java index 46af08134d..619f528502 100644 --- a/src/main/java/gregtech/common/net/MessageUpdateFluidDisplayItem.java +++ b/src/main/java/gregtech/common/net/MessageUpdateFluidDisplayItem.java @@ -1,17 +1,16 @@ package gregtech.common.net; import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteArrayDataOutput; -import com.google.common.io.ByteStreams; import gregtech.api.interfaces.IHasFluidDisplayItem; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.net.GT_Packet; +import gregtech.api.net.GT_Packet_New; +import io.netty.buffer.ByteBuf; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraft.world.WorldServer; import net.minecraftforge.common.DimensionManager; -public class MessageUpdateFluidDisplayItem extends GT_Packet { +public class MessageUpdateFluidDisplayItem extends GT_Packet_New { private int mBlockX, mBlockY, mBlockZ, mDim; public MessageUpdateFluidDisplayItem() { @@ -32,17 +31,15 @@ public class MessageUpdateFluidDisplayItem extends GT_Packet { } @Override - public byte[] encode() { - ByteArrayDataOutput os = ByteStreams.newDataOutput(32); - os.writeInt(mBlockX); - os.writeInt(mBlockY); - os.writeInt(mBlockZ); - os.writeInt(mDim); - return os.toByteArray(); + public void encode(ByteBuf aOut) { + aOut.writeInt(mBlockX); + aOut.writeInt(mBlockY); + aOut.writeInt(mBlockZ); + aOut.writeInt(mDim); } @Override - public GT_Packet decode(ByteArrayDataInput aData) { + public GT_Packet_New decode(ByteArrayDataInput aData) { return new MessageUpdateFluidDisplayItem(aData.readInt(), aData.readInt(), aData.readInt(), aData.readInt()); } -- cgit From d8c5d33c7df2402c8a5b4595957cad22d8771dc3 Mon Sep 17 00:00:00 2001 From: Glease <4586901+Glease@users.noreply.github.com> Date: Tue, 25 May 2021 05:07:26 +0800 Subject: Allow client send preference to server Signed-off-by: Glease <4586901+Glease@users.noreply.github.com> --- .../GT_MetaTileEntity_BasicMachine.java | 6 +++ src/main/java/gregtech/api/net/GT_Packet.java | 6 +++ .../api/net/GT_Packet_ClientPreference.java | 52 ++++++++++++++++++++++ .../gregtech/api/util/GT_ClientPreference.java | 17 +++++++ src/main/java/gregtech/common/GT_Client.java | 20 ++++++++- src/main/java/gregtech/common/GT_Network.java | 6 ++- src/main/java/gregtech/common/GT_Proxy.java | 12 +++++ 7 files changed, 116 insertions(+), 3 deletions(-) create mode 100644 src/main/java/gregtech/api/net/GT_Packet_ClientPreference.java create mode 100644 src/main/java/gregtech/api/util/GT_ClientPreference.java (limited to 'src/main/java/gregtech/api/net') diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java index 84bce3e7c6..834344d2d2 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java @@ -15,6 +15,7 @@ import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Recipe.GT_Recipe_Map; import gregtech.api.util.GT_Utility; +import gregtech.api.util.GT_ClientPreference; import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Cleanroom; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -417,6 +418,11 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B @Override public void initDefaultModes(NBTTagCompound aNBT) { mMainFacing = -1; + if (!getBaseMetaTileEntity().getWorld().isRemote) { + GT_ClientPreference tPreference = GT_Mod.gregtechproxy.getClientPreference(getBaseMetaTileEntity().getOwnerUuid()); + if (tPreference != null) + mDisableFilter = !tPreference.isSingleBlockInitialFilterEnabled(); + } } @Override diff --git a/src/main/java/gregtech/api/net/GT_Packet.java b/src/main/java/gregtech/api/net/GT_Packet.java index 4bf435ca0c..48cc171d61 100644 --- a/src/main/java/gregtech/api/net/GT_Packet.java +++ b/src/main/java/gregtech/api/net/GT_Packet.java @@ -2,6 +2,7 @@ package gregtech.api.net; import com.google.common.io.ByteArrayDataInput; import io.netty.buffer.ByteBuf; +import net.minecraft.network.INetHandler; import net.minecraft.world.IBlockAccess; /** @@ -46,4 +47,9 @@ public abstract class GT_Packet { * @param aWorld null if message is received on server side, the client world if message is received on client side */ public abstract void process(IBlockAccess aWorld); + + /** + * This will be called just before {@link #process(IBlockAccess)} to inform the handler about the source and type of connection + */ + public void setINetHandler(INetHandler aHandler) {} } diff --git a/src/main/java/gregtech/api/net/GT_Packet_ClientPreference.java b/src/main/java/gregtech/api/net/GT_Packet_ClientPreference.java new file mode 100644 index 0000000000..d90f4e65d4 --- /dev/null +++ b/src/main/java/gregtech/api/net/GT_Packet_ClientPreference.java @@ -0,0 +1,52 @@ +package gregtech.api.net; + +import com.google.common.io.ByteArrayDataInput; +import gregtech.GT_Mod; +import gregtech.api.util.GT_ClientPreference; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.network.INetHandler; +import net.minecraft.network.NetHandlerPlayServer; +import net.minecraft.world.IBlockAccess; + +public class GT_Packet_ClientPreference extends GT_Packet_New { + private GT_ClientPreference mPreference; + private EntityPlayerMP mPlayer; + + public GT_Packet_ClientPreference() { + super(true); + } + + public GT_Packet_ClientPreference(GT_ClientPreference mPreference) { + super(false); + this.mPreference = mPreference; + } + + @Override + public byte getPacketID() { + return 9; + } + + @Override + public void setINetHandler(INetHandler aHandler) { + if (aHandler instanceof NetHandlerPlayServer) { + mPlayer = ((NetHandlerPlayServer) aHandler).playerEntity; + } + } + + @Override + public void process(IBlockAccess aWorld) { + if (mPlayer != null) + GT_Mod.gregtechproxy.setClientPreference(mPlayer.getUniqueID(), mPreference); + } + + @Override + public void encode(ByteBuf aOut) { + aOut.writeBoolean(mPreference.isSingleBlockInitialFilterEnabled()); + } + + @Override + public GT_Packet_New decode(ByteArrayDataInput aData) { + return new GT_Packet_ClientPreference(new GT_ClientPreference(aData.readBoolean())); + } +} diff --git a/src/main/java/gregtech/api/util/GT_ClientPreference.java b/src/main/java/gregtech/api/util/GT_ClientPreference.java new file mode 100644 index 0000000000..dbd458dc7a --- /dev/null +++ b/src/main/java/gregtech/api/util/GT_ClientPreference.java @@ -0,0 +1,17 @@ +package gregtech.api.util; + +public class GT_ClientPreference { + private final boolean mSingleBlockInitialFilter; + + public GT_ClientPreference(boolean mSingleBlockInitialFilter) { + this.mSingleBlockInitialFilter = mSingleBlockInitialFilter; + } + + public GT_ClientPreference(GT_Config aClientDataFile) { + this.mSingleBlockInitialFilter = aClientDataFile.get("preference", "mSingleBlockInitialFilter", false); + } + + public boolean isSingleBlockInitialFilterEnabled() { + return mSingleBlockInitialFilter; + } +} diff --git a/src/main/java/gregtech/common/GT_Client.java b/src/main/java/gregtech/common/GT_Client.java index 536475437b..d66972e882 100644 --- a/src/main/java/gregtech/common/GT_Client.java +++ b/src/main/java/gregtech/common/GT_Client.java @@ -9,6 +9,7 @@ import codechicken.lib.vec.Rotation; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent; +import cpw.mods.fml.common.network.FMLNetworkEvent; import gregtech.GT_Mod; import gregtech.api.GregTech_API; import gregtech.api.enums.GT_Values; @@ -18,6 +19,7 @@ import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.interfaces.tileentity.ITurnable; import gregtech.api.metatileentity.BaseMetaPipeEntity; +import gregtech.api.net.GT_Packet_ClientPreference; import gregtech.api.objects.GT_ItemStack; import gregtech.api.util.*; import gregtech.common.entities.GT_Entity_Arrow; @@ -27,6 +29,7 @@ import gregtech.common.render.*; import ic2.api.tile.IWrenchable; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.WorldClient; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -36,6 +39,7 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; import net.minecraftforge.client.event.DrawBlockHighlightEvent; +import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.oredict.OreDictionary; import org.lwjgl.opengl.GL11; @@ -85,6 +89,8 @@ public class GT_Client extends GT_Proxy private int mLastUpdatedBlockZ; private boolean isFirstClientPlayerTick; private String mMessage; + private GT_ClientPreference mPreference; + private boolean mFirstTick = false; public GT_Client() { mCapeRenderer = new GT_CapeRenderer(mCapeList); mAnimationTick = 0L; @@ -303,6 +309,8 @@ public class GT_Client extends GT_Proxy (new Thread(this)).start(); mPollutionRenderer.preLoad(); + + mPreference = new GT_ClientPreference(GregTech_API.sClientDataFile); } @Override @@ -390,7 +398,13 @@ public class GT_Client extends GT_Proxy } catch (Throwable e) { }**/ } - + + @Override + @SubscribeEvent + public void onClientConnectedToServerEvent(FMLNetworkEvent.ClientConnectedToServerEvent aEvent) { + mFirstTick = true; + } + @SubscribeEvent public void receiveRenderSpecialsEvent(net.minecraftforge.client.event.RenderPlayerEvent.Specials.Pre aEvent) { mCapeRenderer.receiveRenderSpecialsEvent(aEvent); @@ -399,6 +413,10 @@ public class GT_Client extends GT_Proxy @SubscribeEvent public void onPlayerTickEventClient(TickEvent.PlayerTickEvent aEvent) { if ((aEvent.side.isClient()) && (aEvent.phase == TickEvent.Phase.END) && (!aEvent.player.isDead)) { + if (mFirstTick) { + mFirstTick = false; + GT_Values.NW.sendToServer(new GT_Packet_ClientPreference(mPreference)); + } afterSomeTime++; if(afterSomeTime>=100L) { afterSomeTime=0; diff --git a/src/main/java/gregtech/common/GT_Network.java b/src/main/java/gregtech/common/GT_Network.java index 840416d9eb..b721e44eba 100644 --- a/src/main/java/gregtech/common/GT_Network.java +++ b/src/main/java/gregtech/common/GT_Network.java @@ -36,7 +36,7 @@ public class GT_Network extends MessageToMessageCodec public GT_Network() { this.mChannel = NetworkRegistry.INSTANCE.newChannel("GregTech", this, new HandlerShared()); - 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()}; + 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()}; } @Override @@ -51,7 +51,9 @@ public class GT_Network extends MessageToMessageCodec protected void decode(ChannelHandlerContext aContext, FMLProxyPacket aPacket, List aOutput) throws Exception { ByteArrayDataInput aData = ByteStreams.newDataInput(aPacket.payload().array()); - aOutput.add(this.mSubChannels[aData.readByte()].decode(aData)); + GT_Packet tPacket = this.mSubChannels[aData.readByte()].decode(aData); + tPacket.setINetHandler(aPacket.handler()); + aOutput.add(tPacket); } @Override diff --git a/src/main/java/gregtech/common/GT_Proxy.java b/src/main/java/gregtech/common/GT_Proxy.java index 325e5b4d68..636d78be51 100644 --- a/src/main/java/gregtech/common/GT_Proxy.java +++ b/src/main/java/gregtech/common/GT_Proxy.java @@ -101,6 +101,9 @@ import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; import java.util.stream.Collectors; import java.util.concurrent.locks.ReentrantLock; @@ -257,6 +260,7 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler { // Locking public static ReentrantLock TICK_LOCK = new ReentrantLock(); + private final ConcurrentMap mClientPrefernces = new ConcurrentHashMap<>(); static { oreDictBurnTimes.put("dustTinyWood", 11); @@ -1592,6 +1596,14 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler { } } + public GT_ClientPreference getClientPreference(UUID aPlayerID) { + return mClientPrefernces.get(aPlayerID); + } + + public void setClientPreference(UUID aPlayerID, GT_ClientPreference aPreference) { + mClientPrefernces.put(aPlayerID, aPreference); + } + @Override public Object getServerGuiElement(int aID, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ) { if(aID>=1000){ -- cgit From ec47d0dfccbdf56a802a3a382a0513d643c708a4 Mon Sep 17 00:00:00 2001 From: Glease <4586901+Glease@users.noreply.github.com> Date: Tue, 25 May 2021 11:25:43 +0800 Subject: Add input bus initial filter preference Signed-off-by: Glease <4586901+Glease@users.noreply.github.com> --- .../implementations/GT_MetaTileEntity_Hatch_InputBus.java | 11 +++++++++++ .../java/gregtech/api/net/GT_Packet_ClientPreference.java | 3 ++- src/main/java/gregtech/api/util/GT_ClientPreference.java | 9 ++++++++- 3 files changed, 21 insertions(+), 2 deletions(-) (limited to 'src/main/java/gregtech/api/net') diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java index 2afb865f1c..ebda3cccbc 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java @@ -1,5 +1,6 @@ package gregtech.api.metatileentity.implementations; +import gregtech.GT_Mod; import gregtech.api.gui.GT_Container_1by1; import gregtech.api.gui.GT_Container_2by2; import gregtech.api.gui.GT_Container_3by3; @@ -12,6 +13,7 @@ import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.render.TextureFactory; +import gregtech.api.util.GT_ClientPreference; import gregtech.api.util.GT_LanguageManager; import gregtech.api.util.GT_Recipe.GT_Recipe_Map; import gregtech.api.util.GT_Utility; @@ -99,6 +101,15 @@ public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch { } } + @Override + public void initDefaultModes(NBTTagCompound aNBT) { + if (!getBaseMetaTileEntity().getWorld().isRemote) { + GT_ClientPreference tPreference = GT_Mod.gregtechproxy.getClientPreference(getBaseMetaTileEntity().getOwnerUuid()); + if (tPreference != null) + disableFilter = !tPreference.isInputBusInitialFilterEnabled(); + } + } + @Override public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { switch (mInventory.length) { diff --git a/src/main/java/gregtech/api/net/GT_Packet_ClientPreference.java b/src/main/java/gregtech/api/net/GT_Packet_ClientPreference.java index d90f4e65d4..a97cfb207b 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_ClientPreference.java +++ b/src/main/java/gregtech/api/net/GT_Packet_ClientPreference.java @@ -43,10 +43,11 @@ public class GT_Packet_ClientPreference extends GT_Packet_New { @Override public void encode(ByteBuf aOut) { aOut.writeBoolean(mPreference.isSingleBlockInitialFilterEnabled()); + aOut.writeBoolean(mPreference.isInputBusInitialFilterEnabled()); } @Override public GT_Packet_New decode(ByteArrayDataInput aData) { - return new GT_Packet_ClientPreference(new GT_ClientPreference(aData.readBoolean())); + return new GT_Packet_ClientPreference(new GT_ClientPreference(aData.readBoolean(), aData.readBoolean())); } } diff --git a/src/main/java/gregtech/api/util/GT_ClientPreference.java b/src/main/java/gregtech/api/util/GT_ClientPreference.java index dbd458dc7a..e679f4ece6 100644 --- a/src/main/java/gregtech/api/util/GT_ClientPreference.java +++ b/src/main/java/gregtech/api/util/GT_ClientPreference.java @@ -2,16 +2,23 @@ package gregtech.api.util; public class GT_ClientPreference { private final boolean mSingleBlockInitialFilter; + private final boolean mInputBusInitialFilter; - public GT_ClientPreference(boolean mSingleBlockInitialFilter) { + public GT_ClientPreference(boolean mSingleBlockInitialFilter, boolean mInputBusInitialFilter) { this.mSingleBlockInitialFilter = mSingleBlockInitialFilter; + this.mInputBusInitialFilter = mInputBusInitialFilter; } public GT_ClientPreference(GT_Config aClientDataFile) { this.mSingleBlockInitialFilter = aClientDataFile.get("preference", "mSingleBlockInitialFilter", false); + this.mInputBusInitialFilter = aClientDataFile.get("preference", "mInputBusInitialFilter", true); } public boolean isSingleBlockInitialFilterEnabled() { return mSingleBlockInitialFilter; } + + public boolean isInputBusInitialFilterEnabled() { + return mInputBusInitialFilter; + } } -- cgit From 51fcb8af2bd2022d9a9111e2874e508d4059d8d0 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 5 Jun 2021 15:27:41 -0700 Subject: Made fixes based on Glease's suggestions --- .../api/net/GT_Packet_WirelessRedstoneCover.java | 75 ++++++++++++++++++++++ src/main/java/gregtech/common/GT_Network.java | 2 +- .../covers/GT_Cover_RedstoneWirelessBase.java | 11 ++-- 3 files changed, 82 insertions(+), 6 deletions(-) create mode 100644 src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java (limited to 'src/main/java/gregtech/api/net') diff --git a/src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java b/src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java new file mode 100644 index 0000000000..c4196f17aa --- /dev/null +++ b/src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java @@ -0,0 +1,75 @@ +package gregtech.api.net; + +import com.google.common.io.ByteArrayDataInput; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.network.INetHandler; +import net.minecraft.network.NetHandlerPlayServer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.DimensionManager; + +public class GT_Packet_WirelessRedstoneCover extends GT_Packet_TileEntityCover { + private static final int PRIVATE_MASK = 0xFFFE0000; + private static final int PUBLIC_MASK = 0x0000FFFF; + private static final int CHECKBOX_MASK = 0x00010000; + + protected int mX; + protected short mY; + protected int mZ; + + protected byte side; + protected int coverID, coverData, dimID; + + private EntityPlayerMP mPlayer; + + public GT_Packet_WirelessRedstoneCover() { + super(); + } + + public GT_Packet_WirelessRedstoneCover(int mX, short mY, int mZ, byte coverSide, int coverID, int coverData, int dimID) { + super(mX, mY, mZ, coverSide, coverID, coverData, dimID); + } + public GT_Packet_WirelessRedstoneCover(byte coverSide, int coverID, int coverData, ICoverable tile) { + super(coverSide, coverID, coverData, tile); + } + + @Override + public byte getPacketID() { + return 10; + } + + @Override + public void setINetHandler(INetHandler aHandler) { + if (aHandler instanceof NetHandlerPlayServer) { + mPlayer = ((NetHandlerPlayServer) aHandler).playerEntity; + } + } + + @Override + public GT_Packet_New decode(ByteArrayDataInput aData) { + return new GT_Packet_WirelessRedstoneCover( + aData.readInt(), + aData.readShort(), + aData.readInt(), + + aData.readByte(), + aData.readInt(), + aData.readInt(), + + aData.readInt()); + } + + @Override + public void process(IBlockAccess aWorld) { + World world = DimensionManager.getWorld(dimID); + if (world != null && world.blockExists(mX, mY, mZ)) { + TileEntity tile = world.getTileEntity(mX, mY, mZ); + if (tile instanceof IGregTechTileEntity && !((IGregTechTileEntity) tile).isDead()) { + ((IGregTechTileEntity) tile).receiveCoverData(side, coverID, (mPlayer.getUniqueID().hashCode() & PRIVATE_MASK) | (coverData & PUBLIC_MASK | CHECKBOX_MASK)); + } + } + } +} diff --git a/src/main/java/gregtech/common/GT_Network.java b/src/main/java/gregtech/common/GT_Network.java index b721e44eba..c9c57676ad 100644 --- a/src/main/java/gregtech/common/GT_Network.java +++ b/src/main/java/gregtech/common/GT_Network.java @@ -36,7 +36,7 @@ public class GT_Network extends MessageToMessageCodec public GT_Network() { this.mChannel = NetworkRegistry.INSTANCE.newChannel("GregTech", this, new HandlerShared()); - 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()}; + 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()}; } @Override diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java index c0244b1dbc..e71461a817 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java @@ -63,14 +63,15 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior { tAdjustVal = 1024; } - aCoverVariable += tAdjustVal; + int tCoverVariable = (aCoverVariable & PUBLIC_MASK) + tAdjustVal; - if ((aCoverVariable & PUBLIC_MASK) < 0) - { + if (tCoverVariable < 0) { aCoverVariable = aCoverVariable & (PRIVATE_MASK | CHECKBOX_MASK); } - //aCoverVariable = aCoverVariable | (aCoverVariable & PUBLIC_MASK); + if (tCoverVariable > MAX_CHANNEL) { + aCoverVariable = (aCoverVariable & (PRIVATE_MASK | CHECKBOX_MASK)) | MAX_CHANNEL; + } } GT_Utility.sendChatToPlayer(aPlayer, trans("081", "Frequency: ") + aCoverVariable); return aCoverVariable; @@ -236,7 +237,7 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior { if ((coverVariable & CHECKBOX_MASK) > 0) { //clear out upper 15 bits and replace them with the upper 15 bits of the hashed player name - coverVariable = (coverVariable & (PUBLIC_MASK | CHECKBOX_MASK)) | (lastPlayer.getDisplayName().hashCode() & PRIVATE_MASK); + coverVariable = (coverVariable & (PUBLIC_MASK | CHECKBOX_MASK)) | (lastPlayer.getUniqueID().hashCode() & PRIVATE_MASK); } else { //clear out upper 16 bits -- cgit From 5c68f72256dd5641a113a345700d307312b8693c Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 6 Jun 2021 07:54:55 -0700 Subject: Uses GT_WirelessRedstoneCover packets now --- .../api/net/GT_Packet_WirelessRedstoneCover.java | 44 ++++++++---- .../covers/GT_Cover_RedstoneWirelessBase.java | 84 +++++++++++----------- 2 files changed, 73 insertions(+), 55 deletions(-) (limited to 'src/main/java/gregtech/api/net') diff --git a/src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java b/src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java index c4196f17aa..64ac09c59e 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java +++ b/src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java @@ -3,6 +3,7 @@ package gregtech.api.net; import com.google.common.io.ByteArrayDataInput; import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.INetHandler; import net.minecraft.network.NetHandlerPlayServer; @@ -13,27 +14,25 @@ import net.minecraftforge.common.DimensionManager; public class GT_Packet_WirelessRedstoneCover extends GT_Packet_TileEntityCover { private static final int PRIVATE_MASK = 0xFFFE0000; - private static final int PUBLIC_MASK = 0x0000FFFF; - private static final int CHECKBOX_MASK = 0x00010000; - - protected int mX; - protected short mY; - protected int mZ; - - protected byte side; - protected int coverID, coverData, dimID; private EntityPlayerMP mPlayer; + private int mPublicChannel; + private int mCheckBoxValue; public GT_Packet_WirelessRedstoneCover() { super(); } - public GT_Packet_WirelessRedstoneCover(int mX, short mY, int mZ, byte coverSide, int coverID, int coverData, int dimID) { + public GT_Packet_WirelessRedstoneCover(int mX, short mY, int mZ, byte coverSide, int coverID, int coverData, int dimID, int publicChannel, int checkBoxValue) { super(mX, mY, mZ, coverSide, coverID, coverData, dimID); + mPublicChannel = publicChannel; + mCheckBoxValue = checkBoxValue; } - public GT_Packet_WirelessRedstoneCover(byte coverSide, int coverID, int coverData, ICoverable tile) { + + public GT_Packet_WirelessRedstoneCover(byte coverSide, int coverID, int coverData, ICoverable tile, int publicChannel, int checkBoxValue) { super(coverSide, coverID, coverData, tile); + mPublicChannel = publicChannel; + mCheckBoxValue = checkBoxValue; } @Override @@ -48,6 +47,22 @@ public class GT_Packet_WirelessRedstoneCover extends GT_Packet_TileEntityCover { } } + @Override + public void encode(ByteBuf aOut) { + aOut.writeInt(mX); + aOut.writeShort(mY); + aOut.writeInt(mZ); + + aOut.writeByte(side); + aOut.writeInt(coverID); + aOut.writeInt(coverData); + + aOut.writeInt(dimID); + + aOut.writeInt(mPublicChannel); + aOut.writeInt(mCheckBoxValue); + } + @Override public GT_Packet_New decode(ByteArrayDataInput aData) { return new GT_Packet_WirelessRedstoneCover( @@ -59,6 +74,9 @@ public class GT_Packet_WirelessRedstoneCover extends GT_Packet_TileEntityCover { aData.readInt(), aData.readInt(), + aData.readInt(), + + aData.readInt(), aData.readInt()); } @@ -68,7 +86,9 @@ public class GT_Packet_WirelessRedstoneCover extends GT_Packet_TileEntityCover { if (world != null && world.blockExists(mX, mY, mZ)) { TileEntity tile = world.getTileEntity(mX, mY, mZ); if (tile instanceof IGregTechTileEntity && !((IGregTechTileEntity) tile).isDead()) { - ((IGregTechTileEntity) tile).receiveCoverData(side, coverID, (mPlayer.getUniqueID().hashCode() & PRIVATE_MASK) | (coverData & PUBLIC_MASK | CHECKBOX_MASK)); + int tPrivateChannel = (mCheckBoxValue > 0) ? mPlayer.getUniqueID().hashCode() & PRIVATE_MASK : 0; + int tCoverData = tPrivateChannel | mCheckBoxValue | mPublicChannel; + ((IGregTechTileEntity) tile).receiveCoverData(side, coverID, tCoverData); } } } diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java index e71461a817..fac6fa1d34 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java @@ -9,6 +9,7 @@ import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; import gregtech.api.interfaces.IGuiScreen; import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.net.GT_Packet_TileEntityCover; +import gregtech.api.net.GT_Packet_WirelessRedstoneCover; import gregtech.api.util.GT_CoverBehavior; import gregtech.api.util.GT_Utility; import net.minecraft.client.gui.GuiButton; @@ -63,15 +64,17 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior { tAdjustVal = 1024; } - int tCoverVariable = (aCoverVariable & PUBLIC_MASK) + tAdjustVal; + int tPublicChannel = (aCoverVariable & PUBLIC_MASK) + tAdjustVal; - if (tCoverVariable < 0) { - aCoverVariable = aCoverVariable & (PRIVATE_MASK | CHECKBOX_MASK); + if (tPublicChannel < 0) { + aCoverVariable = aCoverVariable & ~PUBLIC_MASK; } - - if (tCoverVariable > MAX_CHANNEL) { + else if (tPublicChannel > MAX_CHANNEL) { aCoverVariable = (aCoverVariable & (PRIVATE_MASK | CHECKBOX_MASK)) | MAX_CHANNEL; } + else { + aCoverVariable = (aCoverVariable & (PRIVATE_MASK | CHECKBOX_MASK)) | tPublicChannel; + } } GT_Utility.sendChatToPlayer(aPlayer, trans("081", "Frequency: ") + aCoverVariable); return aCoverVariable; @@ -175,19 +178,19 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior { if (box.isFocused()) { int step = Math.max(1, Math.abs(delta / 120)); step = (isShiftKeyDown() ? 1000 : isCtrlKeyDown() ? 50 : 1) * (delta > 0 ? step : -step); - long i; + long tCoverVariable; try { - i = Long.parseLong(box.getText()); + tCoverVariable = Long.parseLong(box.getText()); } catch (NumberFormatException e) { return; } - i = i + step; - if (i > MAX_CHANNEL) - i = MAX_CHANNEL; - else if (i < 0) - i = 0; + tCoverVariable = tCoverVariable + step; + if (tCoverVariable > MAX_CHANNEL) + tCoverVariable = MAX_CHANNEL; + else if (tCoverVariable < 0) + tCoverVariable = 0; - box.setText(String.valueOf(i)); + box.setText(String.valueOf(tCoverVariable)); return; } } @@ -195,28 +198,31 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior { @Override public void applyTextBox(GT_GuiIntegerTextBox box) { - int i; + int tPublicChannel; String s = box.getText().trim(); try { - i = Integer.parseInt(s); + tPublicChannel = Integer.parseInt(s); } catch (NumberFormatException e) { resetTextBox(box); return; } - if (i > MAX_CHANNEL) - i = MAX_CHANNEL; - else if (i < 0) - i = 0; + if (tPublicChannel > MAX_CHANNEL) + tPublicChannel = MAX_CHANNEL; + else if (tPublicChannel < 0) + tPublicChannel = 0; + + int tCheckBoxValue = ((GT_GuiIconCheckButton)this.buttonList.get(0)).isChecked() ? CHECKBOX_MASK : 0; - coverVariable = (coverVariable & (PRIVATE_MASK | CHECKBOX_MASK)) | (i & PUBLIC_MASK); - fBox.setText(Integer.toString(coverVariable & PUBLIC_MASK)); - GT_Values.NW.sendToServer(new GT_Packet_TileEntityCover(side, coverID, coverVariable, tile)); + coverVariable = tCheckBoxValue | tPublicChannel; + + fBox.setText(Integer.toString(tPublicChannel)); + GT_Values.NW.sendToServer(new GT_Packet_WirelessRedstoneCover(side, coverID, coverVariable, tile, tPublicChannel, tCheckBoxValue)); } @Override public void resetTextBox(GT_GuiIntegerTextBox box) { - box.setText(String.valueOf(coverVariable & PUBLIC_MASK)); + box.setText(String.valueOf(0)); } @Override @@ -226,25 +232,18 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior { tBtn.setChecked(!tBtn.isChecked()); - if (tBtn.isChecked()) { - //set bit 16 - coverVariable = coverVariable | CHECKBOX_MASK; - } - else { - //un-set bit 16 - coverVariable = coverVariable & ~CHECKBOX_MASK; - } + int tPublicChannel = 0; + String tText = fBox.getText().trim(); - if ((coverVariable & CHECKBOX_MASK) > 0) { - //clear out upper 15 bits and replace them with the upper 15 bits of the hashed player name - coverVariable = (coverVariable & (PUBLIC_MASK | CHECKBOX_MASK)) | (lastPlayer.getUniqueID().hashCode() & PRIVATE_MASK); - } - else { - //clear out upper 16 bits - coverVariable = coverVariable & PUBLIC_MASK; + if (tText.length() > 0) { + tPublicChannel = Integer.parseInt(tText); } - GT_Values.NW.sendToServer(new GT_Packet_TileEntityCover(side, coverID, coverVariable, tile)); + int tCheckBoxValue = tBtn.isChecked() ? CHECKBOX_MASK : 0; + + coverVariable = tCheckBoxValue | tPublicChannel; + + GT_Values.NW.sendToServer(new GT_Packet_WirelessRedstoneCover(side, coverID, coverVariable, tile, tPublicChannel, tCheckBoxValue)); } private class GT_GuiShortTextBox extends GT_GuiIntegerTextBox { @@ -255,17 +254,16 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior { @Override public boolean textboxKeyTyped(char c, int key) { - String tText = getText().trim(); int tValue = 0; super.textboxKeyTyped(c, key); int cursorPos = this.getCursorPosition(); - String newText = getText().trim(); - if (newText.length() > 0) { + String tText = getText().trim(); + if (tText.length() > 0) { try { - tValue = Integer.parseInt(newText); + tValue = Integer.parseInt(tText); } catch (NumberFormatException ignored) {} if (tValue > MAX_CHANNEL) -- cgit From c970e80681704707144033ecd2f9190b67857cae Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 7 Jun 2021 08:53:23 -0700 Subject: removed covervariable as a parameter and applied proper masking --- .../gregtech/api/net/GT_Packet_WirelessRedstoneCover.java | 14 +++++++------- .../common/covers/GT_Cover_RedstoneWirelessBase.java | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'src/main/java/gregtech/api/net') diff --git a/src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java b/src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java index 64ac09c59e..3ce0b48821 100644 --- a/src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java +++ b/src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java @@ -14,6 +14,8 @@ import net.minecraftforge.common.DimensionManager; public class GT_Packet_WirelessRedstoneCover extends GT_Packet_TileEntityCover { private static final int PRIVATE_MASK = 0xFFFE0000; + private static final int PUBLIC_MASK = 0x0000FFFF; + private static final int CHECKBOX_MASK = 0x00010000; private EntityPlayerMP mPlayer; private int mPublicChannel; @@ -23,14 +25,14 @@ public class GT_Packet_WirelessRedstoneCover extends GT_Packet_TileEntityCover { super(); } - public GT_Packet_WirelessRedstoneCover(int mX, short mY, int mZ, byte coverSide, int coverID, int coverData, int dimID, int publicChannel, int checkBoxValue) { - super(mX, mY, mZ, coverSide, coverID, coverData, dimID); + public GT_Packet_WirelessRedstoneCover(int mX, short mY, int mZ, byte coverSide, int coverID, int dimID, int publicChannel, int checkBoxValue) { + super(mX, mY, mZ, coverSide, coverID, 0, dimID); mPublicChannel = publicChannel; mCheckBoxValue = checkBoxValue; } - public GT_Packet_WirelessRedstoneCover(byte coverSide, int coverID, int coverData, ICoverable tile, int publicChannel, int checkBoxValue) { - super(coverSide, coverID, coverData, tile); + public GT_Packet_WirelessRedstoneCover(byte coverSide, int coverID, ICoverable tile, int publicChannel, int checkBoxValue) { + super(coverSide, coverID, 0, tile); mPublicChannel = publicChannel; mCheckBoxValue = checkBoxValue; } @@ -55,7 +57,6 @@ public class GT_Packet_WirelessRedstoneCover extends GT_Packet_TileEntityCover { aOut.writeByte(side); aOut.writeInt(coverID); - aOut.writeInt(coverData); aOut.writeInt(dimID); @@ -72,7 +73,6 @@ public class GT_Packet_WirelessRedstoneCover extends GT_Packet_TileEntityCover { aData.readByte(), aData.readInt(), - aData.readInt(), aData.readInt(), @@ -87,7 +87,7 @@ public class GT_Packet_WirelessRedstoneCover extends GT_Packet_TileEntityCover { TileEntity tile = world.getTileEntity(mX, mY, mZ); if (tile instanceof IGregTechTileEntity && !((IGregTechTileEntity) tile).isDead()) { int tPrivateChannel = (mCheckBoxValue > 0) ? mPlayer.getUniqueID().hashCode() & PRIVATE_MASK : 0; - int tCoverData = tPrivateChannel | mCheckBoxValue | mPublicChannel; + int tCoverData = tPrivateChannel | (mCheckBoxValue & CHECKBOX_MASK) | (mPublicChannel & PUBLIC_MASK); ((IGregTechTileEntity) tile).receiveCoverData(side, coverID, tCoverData); } } diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java index fac6fa1d34..7070b7ad18 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java @@ -217,7 +217,7 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior { coverVariable = tCheckBoxValue | tPublicChannel; fBox.setText(Integer.toString(tPublicChannel)); - GT_Values.NW.sendToServer(new GT_Packet_WirelessRedstoneCover(side, coverID, coverVariable, tile, tPublicChannel, tCheckBoxValue)); + GT_Values.NW.sendToServer(new GT_Packet_WirelessRedstoneCover(side, coverID, tile, tPublicChannel, tCheckBoxValue)); } @Override @@ -243,7 +243,7 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior { coverVariable = tCheckBoxValue | tPublicChannel; - GT_Values.NW.sendToServer(new GT_Packet_WirelessRedstoneCover(side, coverID, coverVariable, tile, tPublicChannel, tCheckBoxValue)); + GT_Values.NW.sendToServer(new GT_Packet_WirelessRedstoneCover(side, coverID, tile, tPublicChannel, tCheckBoxValue)); } private class GT_GuiShortTextBox extends GT_GuiIntegerTextBox { -- cgit