diff --git a/src/main/java/gregtech/api/interfaces/IMEConnectable.java b/src/main/java/gregtech/api/interfaces/IMEConnectable.java new file mode 100644 index 00000000000..0e6e130b4ba --- /dev/null +++ b/src/main/java/gregtech/api/interfaces/IMEConnectable.java @@ -0,0 +1,13 @@ +package gregtech.api.interfaces; + +/** + * A hatch that has a connection to an ME cable. + * Used by the matter manipulator to copy this setting. + */ +public interface IMEConnectable { + + /** If this hatch can accept connects on the side, or just the front. */ + boolean connectsToAllSides(); + + void setConnectsToAllSides(boolean connects); +} diff --git a/src/main/java/gregtech/common/tileentities/machines/MTEHatchCraftingInputME.java b/src/main/java/gregtech/common/tileentities/machines/MTEHatchCraftingInputME.java index 841739ffca7..5806559d4d0 100644 --- a/src/main/java/gregtech/common/tileentities/machines/MTEHatchCraftingInputME.java +++ b/src/main/java/gregtech/common/tileentities/machines/MTEHatchCraftingInputME.java @@ -88,6 +88,7 @@ import gregtech.api.enums.ItemList; import gregtech.api.gui.modularui.GTUITextures; import gregtech.api.interfaces.IConfigurationCircuitSupport; +import gregtech.api.interfaces.IMEConnectable; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.modularui.IAddGregtechLogo; import gregtech.api.interfaces.modularui.IAddUIWidgets; @@ -104,7 +105,7 @@ public class MTEHatchCraftingInputME extends MTEHatchInputBus implements IConfigurationCircuitSupport, IAddGregtechLogo, IAddUIWidgets, IPowerChannelState, ICraftingProvider, - IGridProxyable, IDualInputHatch, ICustomNameObject, IInterfaceViewable { + IGridProxyable, IDualInputHatch, ICustomNameObject, IInterfaceViewable, IMEConnectable { // Each pattern slot in the crafting input hatch has its own internal inventory public static class PatternSlot implements IDualInputInventory { @@ -477,6 +478,17 @@ public boolean onWireCutterRightClick(ForgeDirection side, ForgeDirection wrench return true; } + @Override + public boolean connectsToAllSides() { + return additionalConnection; + } + + @Override + public void setConnectsToAllSides(boolean connects) { + additionalConnection = connects; + updateValidGridProxySides(); + } + @Override public AENetworkProxy getProxy() { if (gridProxy == null) { diff --git a/src/main/java/gregtech/common/tileentities/machines/MTEHatchInputBusME.java b/src/main/java/gregtech/common/tileentities/machines/MTEHatchInputBusME.java index fcffcd41af5..f0ce6a800f7 100644 --- a/src/main/java/gregtech/common/tileentities/machines/MTEHatchInputBusME.java +++ b/src/main/java/gregtech/common/tileentities/machines/MTEHatchInputBusME.java @@ -62,6 +62,7 @@ import gregtech.api.gui.modularui.GTUITextures; import gregtech.api.interfaces.IConfigurationCircuitSupport; import gregtech.api.interfaces.IDataCopyable; +import gregtech.api.interfaces.IMEConnectable; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.modularui.IAddGregtechLogo; import gregtech.api.interfaces.modularui.IAddUIWidgets; @@ -79,8 +80,9 @@ import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; -public class MTEHatchInputBusME extends MTEHatchInputBus implements IConfigurationCircuitSupport, - IRecipeProcessingAwareHatch, IAddGregtechLogo, IAddUIWidgets, IPowerChannelState, ISmartInputHatch, IDataCopyable { +public class MTEHatchInputBusME extends MTEHatchInputBus + implements IConfigurationCircuitSupport, IRecipeProcessingAwareHatch, IAddGregtechLogo, IAddUIWidgets, + IPowerChannelState, ISmartInputHatch, IDataCopyable, IMEConnectable { protected static final int SLOT_COUNT = 16; public static final String COPIED_DATA_IDENTIFIER = "stockingBus"; @@ -179,6 +181,17 @@ public boolean onWireCutterRightClick(ForgeDirection side, ForgeDirection wrench return true; } + @Override + public boolean connectsToAllSides() { + return additionalConnection; + } + + @Override + public void setConnectsToAllSides(boolean connects) { + additionalConnection = connects; + updateValidGridProxySides(); + } + @Override public AENetworkProxy getProxy() { if (gridProxy == null) { diff --git a/src/main/java/gregtech/common/tileentities/machines/MTEHatchInputME.java b/src/main/java/gregtech/common/tileentities/machines/MTEHatchInputME.java index 5e7fd23d95e..c9921c3e18d 100644 --- a/src/main/java/gregtech/common/tileentities/machines/MTEHatchInputME.java +++ b/src/main/java/gregtech/common/tileentities/machines/MTEHatchInputME.java @@ -66,6 +66,7 @@ import gregtech.api.enums.ItemList; import gregtech.api.gui.modularui.GTUITextures; import gregtech.api.interfaces.IDataCopyable; +import gregtech.api.interfaces.IMEConnectable; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.modularui.IAddGregtechLogo; import gregtech.api.interfaces.modularui.IAddUIWidgets; @@ -83,7 +84,7 @@ import mcp.mobius.waila.api.IWailaDataAccessor; public class MTEHatchInputME extends MTEHatchInput implements IPowerChannelState, IAddGregtechLogo, IAddUIWidgets, - IRecipeProcessingAwareHatch, ISmartInputHatch, IDataCopyable { + IRecipeProcessingAwareHatch, ISmartInputHatch, IDataCopyable, IMEConnectable { private static final int SLOT_COUNT = 16; public static final String COPIED_DATA_IDENTIFIER = "stockingHatch"; @@ -333,6 +334,17 @@ public boolean onWireCutterRightClick(ForgeDirection side, ForgeDirection wrench return true; } + @Override + public boolean connectsToAllSides() { + return additionalConnection; + } + + @Override + public void setConnectsToAllSides(boolean connects) { + additionalConnection = connects; + updateValidGridProxySides(); + } + @Override public AENetworkProxy getProxy() { if (gridProxy == null) { diff --git a/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputBusME.java b/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputBusME.java index 5a250eae001..e07ed5ec271 100644 --- a/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputBusME.java +++ b/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputBusME.java @@ -49,6 +49,7 @@ import gregtech.GTMod; import gregtech.api.enums.ItemList; import gregtech.api.gui.modularui.GTUIInfos; +import gregtech.api.interfaces.IMEConnectable; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; @@ -58,7 +59,7 @@ import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; -public class MTEHatchOutputBusME extends MTEHatchOutputBus implements IPowerChannelState { +public class MTEHatchOutputBusME extends MTEHatchOutputBus implements IPowerChannelState, IMEConnectable { protected static final long DEFAULT_CAPACITY = 1_600; protected long baseCapacity = DEFAULT_CAPACITY; @@ -203,6 +204,17 @@ public boolean onWireCutterRightClick(ForgeDirection side, ForgeDirection wrench return true; } + @Override + public boolean connectsToAllSides() { + return additionalConnection; + } + + @Override + public void setConnectsToAllSides(boolean connects) { + additionalConnection = connects; + updateValidGridProxySides(); + } + @Override public AENetworkProxy getProxy() { if (gridProxy == null) { diff --git a/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputME.java b/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputME.java index a9208d0e63a..5c98c28063f 100644 --- a/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputME.java +++ b/src/main/java/gregtech/common/tileentities/machines/MTEHatchOutputME.java @@ -56,6 +56,7 @@ import gregtech.api.enums.GTValues; import gregtech.api.enums.ItemList; import gregtech.api.gui.modularui.GTUIInfos; +import gregtech.api.interfaces.IMEConnectable; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; @@ -65,7 +66,7 @@ import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; -public class MTEHatchOutputME extends MTEHatchOutput implements IPowerChannelState { +public class MTEHatchOutputME extends MTEHatchOutput implements IPowerChannelState, IMEConnectable { private static final long DEFAULT_CAPACITY = 128_000; private long baseCapacity = DEFAULT_CAPACITY; @@ -236,6 +237,17 @@ public boolean onWireCutterRightClick(ForgeDirection side, ForgeDirection wrench return true; } + @Override + public boolean connectsToAllSides() { + return additionalConnection; + } + + @Override + public void setConnectsToAllSides(boolean connects) { + additionalConnection = connects; + updateValidGridProxySides(); + } + @Override public AENetworkProxy getProxy() { if (gridProxy == null) {