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> --- src/main/java/gregtech/api/net/GT_Packet.java | 6 +++ .../api/net/GT_Packet_ClientPreference.java | 52 ++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/main/java/gregtech/api/net/GT_Packet_ClientPreference.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 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())); + } +} -- 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