diff options
author | lordIcocain <62835225+lordIcocain@users.noreply.github.com> | 2023-09-23 18:31:15 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-23 17:31:15 +0200 |
commit | 6599b089a7d259ddf0313b10e26e00ab116d3699 (patch) | |
tree | 3c5cc263f4a92f0c201d865a9e924581eda6edd4 /src | |
parent | 66bd6b92334dae185c7fb42d04cae838db77ae1d (diff) | |
download | GT5-Unofficial-6599b089a7d259ddf0313b10e26e00ab116d3699.tar.gz GT5-Unofficial-6599b089a7d259ddf0313b10e26e00ab116d3699.tar.bz2 GT5-Unofficial-6599b089a7d259ddf0313b10e26e00ab116d3699.zip |
ME hatch`s additional connection mode and small fixes (#2291)
* ME hatch`s improvements (?)
* ForgeDirection.UNKNOWN not allowed
Better description
No check before getBoolean
* Add description in tooltip
Chat message using localization
Stocking bus data stick will copy/paste connection mode
* Chinese localization
* Another method localization
* code style
Diffstat (limited to 'src')
7 files changed, 115 insertions, 11 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java index b42e7a1a82..57a55fc17e 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java @@ -2386,7 +2386,6 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity @Override public IGridNode getGridNode(ForgeDirection forgeDirection) { - if (mFacing != forgeDirection) return null; final AENetworkProxy gp = getProxy(); return gp != null ? gp.getNode() : null; } diff --git a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_CraftingInput_ME.java b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_CraftingInput_ME.java index e7af09ef90..d0e56853ad 100644 --- a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_CraftingInput_ME.java +++ b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_CraftingInput_ME.java @@ -17,6 +17,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.Constants; @@ -325,6 +326,7 @@ public class GT_MetaTileEntity_Hatch_CraftingInput_ME extends GT_MetaTileEntity_ private String customName = null; private boolean supportFluids; + private boolean additionalConnection = false; public GT_MetaTileEntity_Hatch_CraftingInput_ME(int aID, String aName, String aNameRegional, boolean supportFluids) { @@ -336,7 +338,8 @@ public class GT_MetaTileEntity_Hatch_CraftingInput_ME extends GT_MetaTileEntity_ MAX_INV_COUNT, new String[] { "Advanced item input for Multiblocks", "Processes patterns directly from ME", supportFluids ? "It supports patterns including fluids" - : "It does not support patterns including fluids" }); + : "It does not support patterns including fluids", + "Change ME connection behavior by right-clicking with wire cutter" }); disableSort = true; this.supportFluids = supportFluids; } @@ -389,14 +392,33 @@ public class GT_MetaTileEntity_Hatch_CraftingInput_ME extends GT_MetaTileEntity_ return isOutputFacing(forgeDirection) ? AECableType.SMART : AECableType.NONE; } + public void setAdditionalConnectionOption() { + if (additionalConnection) { + gridProxy.setValidSides(EnumSet.complementOf(EnumSet.of(ForgeDirection.UNKNOWN))); + } else { + gridProxy.setValidSides(EnumSet.of(getBaseMetaTileEntity().getFrontFacing())); + } + } + @Override public void securityBreak() {} @Override + public boolean onWireCutterRightClick(ForgeDirection side, ForgeDirection wrenchingSide, EntityPlayer aPlayer, + float aX, float aY, float aZ) { + additionalConnection = !additionalConnection; + setAdditionalConnectionOption(); + aPlayer.addChatComponentMessage( + new ChatComponentTranslation("GT5U.hatch.additionalConnection." + additionalConnection)); + return true; + } + + @Override public AENetworkProxy getProxy() { if (gridProxy == null) { gridProxy = new AENetworkProxy(this, "proxy", ItemList.Hatch_CraftingInput_Bus_ME.get(1), true); gridProxy.setFlags(GridFlags.REQUIRE_CHANNEL); + setAdditionalConnectionOption(); if (getBaseMetaTileEntity().getWorld() != null) gridProxy.setOwner( getBaseMetaTileEntity().getWorld() .getPlayerEntityByName(getBaseMetaTileEntity().getOwnerName())); @@ -484,6 +506,7 @@ public class GT_MetaTileEntity_Hatch_CraftingInput_ME extends GT_MetaTileEntity_ } aNBT.setTag("internalInventory", internalInventoryNBT); if (customName != null) aNBT.setString("customName", customName); + aNBT.setBoolean("additionalConnection", additionalConnection); getProxy().writeToNBT(aNBT); } @@ -533,6 +556,7 @@ public class GT_MetaTileEntity_Hatch_CraftingInput_ME extends GT_MetaTileEntity_ } if (aNBT.hasKey("customName")) customName = aNBT.getString("customName"); + additionalConnection = aNBT.getBoolean("additionalConnection"); getProxy().readFromNBT(aNBT); } diff --git a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java index 39fd457647..34f038b2ea 100644 --- a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java +++ b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java @@ -4,6 +4,7 @@ import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ME_INPUT_HATCH; import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ME_INPUT_HATCH_ACTIVE; import java.util.ArrayList; +import java.util.EnumSet; import java.util.Iterator; import java.util.List; @@ -16,6 +17,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -77,6 +79,7 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch private boolean autoPullItemList = false; private int minAutoPullStackSize = 1; private static final int CONFIG_WINDOW_ID = 10; + private boolean additionalConnection = false; public GT_MetaTileEntity_Hatch_InputBus_ME(int aID, String aName, String aNameRegional) { super( @@ -90,6 +93,7 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch "Auto-Pull from ME mode will automatically stock the first 16 items in the ME system, updated every 5 seconds.", "Toggle by right-clicking with screwdriver, or use the GUI.", "Use the GUI to limit the minimum stack size for Auto-Pulling.", + "Change ME connection behavior by right-clicking with wire cutter", "Configuration data can be copy+pasted using a data stick." }); disableSort = true; } @@ -134,6 +138,24 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch return isOutputFacing(forgeDirection) ? AECableType.SMART : AECableType.NONE; } + public void setAdditionalConnectionOption() { + if (additionalConnection) { + gridProxy.setValidSides(EnumSet.complementOf(EnumSet.of(ForgeDirection.UNKNOWN))); + } else { + gridProxy.setValidSides(EnumSet.of(getBaseMetaTileEntity().getFrontFacing())); + } + } + + @Override + public boolean onWireCutterRightClick(ForgeDirection side, ForgeDirection wrenchingSide, EntityPlayer aPlayer, + float aX, float aY, float aZ) { + additionalConnection = !additionalConnection; + setAdditionalConnectionOption(); + aPlayer.addChatComponentMessage( + new ChatComponentTranslation("GT5U.hatch.additionalConnection." + additionalConnection)); + return true; + } + @Override public AENetworkProxy getProxy() { if (gridProxy == null) { @@ -144,6 +166,7 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch ItemList.Hatch_Output_Bus_ME.get(1), true); gridProxy.setFlags(GridFlags.REQUIRE_CHANNEL); + setAdditionalConnectionOption(); if (getBaseMetaTileEntity().getWorld() != null) gridProxy.setOwner( getBaseMetaTileEntity().getWorld() .getPlayerEntityByName(getBaseMetaTileEntity().getOwnerName())); @@ -173,6 +196,7 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch aNBT.setIntArray("sizes", sizes); aNBT.setBoolean("autoStock", autoPullItemList); aNBT.setInteger("minAutoPullStackSize", minAutoPullStackSize); + aNBT.setBoolean("additionalConnection", additionalConnection); getProxy().writeToNBT(aNBT); } @@ -205,6 +229,7 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch } autoPullItemList = aNBT.getBoolean("autoStock"); minAutoPullStackSize = aNBT.getInteger("minAutoPullStackSize"); + additionalConnection = aNBT.getBoolean("additionalConnection"); getProxy().readFromNBT(aNBT); } @@ -261,6 +286,7 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch if (GT_Utility.isStackInvalid(circuit)) circuit = null; setAutoPullItemList(nbt.getBoolean("autoPull")); minAutoPullStackSize = nbt.getInteger("minStackSize"); + additionalConnection = nbt.getBoolean("additionalConnection"); if (!autoPullItemList) { NBTTagList stockingItems = nbt.getTagList("itemsToStock", 10); for (int i = 0; i < stockingItems.tagCount(); i++) { @@ -268,6 +294,7 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch } } setInventorySlotContents(getCircuitSlot(), circuit); + setAdditionalConnectionOption(); aPlayer.addChatMessage(new ChatComponentText("Loaded Config From Data Stick")); return true; } @@ -283,6 +310,7 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch tag.setString("type", "stockingBus"); tag.setBoolean("autoPull", autoPullItemList); tag.setInteger("minStackSize", minAutoPullStackSize); + tag.setBoolean("additionalConnection", additionalConnection); tag.setTag("circuit", GT_Utility.saveItem(getStackInSlot(getCircuitSlot()))); NBTTagList stockingItems = new NBTTagList(); diff --git a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_OutputBus_ME.java b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_OutputBus_ME.java index ff284015ea..6b127c827d 100644 --- a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_OutputBus_ME.java +++ b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_OutputBus_ME.java @@ -4,6 +4,7 @@ import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ME_HATCH; import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ME_HATCH_ACTIVE; import java.util.ArrayList; +import java.util.EnumSet; import java.util.List; import javax.annotation.Nullable; @@ -13,8 +14,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.StatCollector; import net.minecraftforge.common.util.ForgeDirection; import appeng.api.AEApi; @@ -55,6 +56,7 @@ public class GT_MetaTileEntity_Hatch_OutputBus_ME extends GT_MetaTileEntity_Hatc long tickCounter = 0; boolean lastOutputFailed = false; boolean infiniteCache = true; + boolean additionalConnection = false; public GT_MetaTileEntity_Hatch_OutputBus_ME(int aID, String aName, String aNameRegional) { super( @@ -63,7 +65,8 @@ public class GT_MetaTileEntity_Hatch_OutputBus_ME extends GT_MetaTileEntity_Hatc aNameRegional, 1, new String[] { "Item Output for Multiblocks", "Stores directly into ME", - "Can cache infinite amount of items.", "Change cache behavior by right-clicking with screwdriver." }, + "Can cache infinite amount of items.", "Change cache behavior by right-clicking with screwdriver.", + "Change ME connection behavior by right-clicking with wire cutter" }, 0); } @@ -124,6 +127,14 @@ public class GT_MetaTileEntity_Hatch_OutputBus_ME extends GT_MetaTileEntity_Hatc return isOutputFacing(forgeDirection) ? AECableType.SMART : AECableType.NONE; } + public void setAdditionalConnectionOption() { + if (additionalConnection) { + gridProxy.setValidSides(EnumSet.complementOf(EnumSet.of(ForgeDirection.UNKNOWN))); + } else { + gridProxy.setValidSides(EnumSet.of(getBaseMetaTileEntity().getFrontFacing())); + } + } + @Override public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer) { return false; @@ -134,8 +145,17 @@ public class GT_MetaTileEntity_Hatch_OutputBus_ME extends GT_MetaTileEntity_Hatc if (!getBaseMetaTileEntity().getCoverInfoAtSide(side) .isGUIClickable()) return; infiniteCache = !infiniteCache; - GT_Utility - .sendChatToPlayer(aPlayer, StatCollector.translateToLocal("GT5U.hatch.infiniteCache." + infiniteCache)); + aPlayer.addChatComponentMessage(new ChatComponentTranslation("GT5U.hatch.infiniteCache." + infiniteCache)); + } + + @Override + public boolean onWireCutterRightClick(ForgeDirection side, ForgeDirection wrenchingSide, EntityPlayer aPlayer, + float aX, float aY, float aZ) { + additionalConnection = !additionalConnection; + setAdditionalConnectionOption(); + aPlayer.addChatComponentMessage( + new ChatComponentTranslation("GT5U.hatch.additionalConnection." + additionalConnection)); + return true; } @Override @@ -148,6 +168,7 @@ public class GT_MetaTileEntity_Hatch_OutputBus_ME extends GT_MetaTileEntity_Hatc ItemList.Hatch_Output_Bus_ME.get(1), true); gridProxy.setFlags(GridFlags.REQUIRE_CHANNEL); + setAdditionalConnectionOption(); if (getBaseMetaTileEntity().getWorld() != null) gridProxy.setOwner( getBaseMetaTileEntity().getWorld() .getPlayerEntityByName(getBaseMetaTileEntity().getOwnerName())); @@ -216,6 +237,8 @@ public class GT_MetaTileEntity_Hatch_OutputBus_ME extends GT_MetaTileEntity_Hatc tag.setLong("size", s.getStackSize()); items.appendTag(tag); } + aNBT.setBoolean("infiniteCache", infiniteCache); + aNBT.setBoolean("additionalConnection", additionalConnection); aNBT.setTag("cachedItems", items); getProxy().writeToNBT(aNBT); } @@ -254,6 +277,8 @@ public class GT_MetaTileEntity_Hatch_OutputBus_ME extends GT_MetaTileEntity_Hatc } } } + infiniteCache = aNBT.getBoolean("infiniteCache"); + additionalConnection = aNBT.getBoolean("additionalConnection"); getProxy().readFromNBT(aNBT); } diff --git a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Output_ME.java b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Output_ME.java index 000af7c8de..e2287ef7fa 100644 --- a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Output_ME.java +++ b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Output_ME.java @@ -4,6 +4,7 @@ import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ME_FLUID_HATCH; import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ME_FLUID_HATCH_ACTIVE; import java.util.ArrayList; +import java.util.EnumSet; import java.util.List; import javax.annotation.Nullable; @@ -12,8 +13,8 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.StatCollector; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidStack; @@ -59,6 +60,7 @@ public class GT_MetaTileEntity_Hatch_Output_ME extends GT_MetaTileEntity_Hatch_O long tickCounter = 0; boolean lastOutputFailed = false; boolean infiniteCache = true; + boolean additionalConnection = false; public GT_MetaTileEntity_Hatch_Output_ME(int aID, String aName, String aNameRegional) { super( @@ -67,7 +69,8 @@ public class GT_MetaTileEntity_Hatch_Output_ME extends GT_MetaTileEntity_Hatch_O aNameRegional, 1, new String[] { "Fluid Output for Multiblocks", "Stores directly into ME", - "Can cache infinite amount of fluids.", "Change cache behavior by right-clicking with screwdriver." }, + "Can cache infinite amount of fluids.", "Change cache behavior by right-clicking with screwdriver.", + "Change ME connection behavior by right-clicking with wire cutter" }, 0); } @@ -136,6 +139,14 @@ public class GT_MetaTileEntity_Hatch_Output_ME extends GT_MetaTileEntity_Hatch_O return isOutputFacing(side) ? AECableType.SMART : AECableType.NONE; } + public void setAdditionalConnectionOption() { + if (additionalConnection) { + gridProxy.setValidSides(EnumSet.complementOf(EnumSet.of(ForgeDirection.UNKNOWN))); + } else { + gridProxy.setValidSides(EnumSet.of(getBaseMetaTileEntity().getFrontFacing())); + } + } + @Override public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer) { return false; @@ -157,9 +168,17 @@ public class GT_MetaTileEntity_Hatch_Output_ME extends GT_MetaTileEntity_Hatch_O if (!getBaseMetaTileEntity().getCoverInfoAtSide(side) .isGUIClickable()) return; infiniteCache = !infiniteCache; - GT_Utility.sendChatToPlayer( - aPlayer, - StatCollector.translateToLocal("GT5U.hatch.infiniteCacheFluid." + infiniteCache)); + aPlayer.addChatComponentMessage(new ChatComponentTranslation("GT5U.hatch.infiniteCacheFluid." + infiniteCache)); + } + + @Override + public boolean onWireCutterRightClick(ForgeDirection side, ForgeDirection wrenchingSide, EntityPlayer aPlayer, + float aX, float aY, float aZ) { + additionalConnection = !additionalConnection; + setAdditionalConnectionOption(); + aPlayer.addChatComponentMessage( + new ChatComponentTranslation("GT5U.hatch.additionalConnection." + additionalConnection)); + return true; } @Override @@ -172,6 +191,7 @@ public class GT_MetaTileEntity_Hatch_Output_ME extends GT_MetaTileEntity_Hatch_O ItemList.Hatch_Output_ME.get(1), true); gridProxy.setFlags(GridFlags.REQUIRE_CHANNEL); + setAdditionalConnectionOption(); if (getBaseMetaTileEntity().getWorld() != null) gridProxy.setOwner( getBaseMetaTileEntity().getWorld() .getPlayerEntityByName(getBaseMetaTileEntity().getOwnerName())); @@ -244,6 +264,8 @@ public class GT_MetaTileEntity_Hatch_Output_ME extends GT_MetaTileEntity_Hatch_O fluids.appendTag(tag); } aNBT.setTag("cachedFluids", fluids); + aNBT.setBoolean("infiniteCache", infiniteCache); + aNBT.setBoolean("additionalConnection", additionalConnection); getProxy().writeToNBT(aNBT); } @@ -268,6 +290,8 @@ public class GT_MetaTileEntity_Hatch_Output_ME extends GT_MetaTileEntity_Hatch_O } } } + infiniteCache = aNBT.getBoolean("infiniteCache"); + additionalConnection = aNBT.getBoolean("additionalConnection"); getProxy().readFromNBT(aNBT); } diff --git a/src/main/resources/assets/gregtech/lang/en_US.lang b/src/main/resources/assets/gregtech/lang/en_US.lang index 810145245c..03afafc0ee 100644 --- a/src/main/resources/assets/gregtech/lang/en_US.lang +++ b/src/main/resources/assets/gregtech/lang/en_US.lang @@ -438,6 +438,8 @@ GT5U.hatch.infiniteCache.true=ME Output bus will infinitely cache item, until yo GT5U.hatch.infiniteCache.false=ME Output bus will stop accepting items when offline for more than 2 seconds GT5U.hatch.infiniteCacheFluid.true=ME Output hatch will infinitely cache fluid, until you connect it to ME GT5U.hatch.infiniteCacheFluid.false=ME Output hatch will stop accepting fluid when offline for more than 2 seconds +GT5U.hatch.additionalConnection.true=ME channels connect to any side +GT5U.hatch.additionalConnection.false=ME channels connect to front side only GT5U.multiblock.pollution=Pollution reduced to GT5U.multiblock.energy=Stored Energy diff --git a/src/main/resources/assets/gregtech/lang/zh_CN.lang b/src/main/resources/assets/gregtech/lang/zh_CN.lang index 6416d536b8..f86709e96a 100644 --- a/src/main/resources/assets/gregtech/lang/zh_CN.lang +++ b/src/main/resources/assets/gregtech/lang/zh_CN.lang @@ -217,6 +217,8 @@ GT5U.hatch.disableLimited.true=限制模式:§c关闭§r GT5U.hatch.disableLimited.false=限制模式:§c开启§r GT5U.hatch.infiniteCache.true=ME输出总线将无限缓存物品,直到连接上ME网络 GT5U.hatch.infiniteCache.false=ME输出总线离线超过2秒后将停止接收物品 +GT5U.hatch.additionalConnection.true=可从任意方向连入ME网络 +GT5U.hatch.additionalConnection.false=仅可从正面连入ME网络 GT5U.multiblock.pollution=污染减少到 GT5U.multiblock.energy=存储能量 |