From 189ae4c82675db3bbd894860ea6e465ad679f874 Mon Sep 17 00:00:00 2001 From: Jason Mitchell Date: Sun, 16 Sep 2018 15:23:14 -0700 Subject: Work with subclassed GT cables (ie: gt++ cables) --- .../api/interfaces/metatileentity/IMetaTileEntityCable.java | 4 +++- .../gregtech/api/interfaces/tileentity/IEnergyConnected.java | 9 +++++++-- .../java/gregtech/api/metatileentity/BaseMetaTileEntity.java | 1 + src/main/java/gregtech/api/metatileentity/MetaPipeEntity.java | 4 ++-- .../metatileentity/implementations/GT_MetaPipeEntity_Cable.java | 2 +- 5 files changed, 14 insertions(+), 6 deletions(-) (limited to 'src/main') diff --git a/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntityCable.java b/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntityCable.java index 86232e6439..ead9c8bf8f 100644 --- a/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntityCable.java +++ b/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntityCable.java @@ -9,5 +9,7 @@ public interface IMetaTileEntityCable extends IMetaTileEntity { @Deprecated public long transferElectricity(byte aSide, long aVoltage, long aAmperage, ArrayList aAlreadyPassedTileEntityList); - public long transferElectricity(byte aSide, long aVoltage, long aAmperage, HashSet aAlreadyPassedSet); + default public long transferElectricity(byte aSide, long aVoltage, long aAmperage, HashSet aAlreadyPassedSet) { + return transferElectricity(aSide, aVoltage, aAmperage, new ArrayList<>(aAlreadyPassedSet)); + } } \ No newline at end of file diff --git a/src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java b/src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java index e707c15850..8c9bac5c01 100644 --- a/src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java +++ b/src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java @@ -3,6 +3,7 @@ package gregtech.api.interfaces.tileentity; import cofh.api.energy.IEnergyReceiver; import gregtech.GT_Mod; import gregtech.api.GregTech_API; +import gregtech.api.util.GT_Log; import gregtech.api.util.GT_Utility; import gregtech.common.GT_Pollution; import ic2.api.energy.tile.IEnergySink; @@ -35,13 +36,17 @@ public interface IEnergyConnected extends IColoredTileEntity, IHasWorldObjectAnd * Sided Energy Input */ public boolean inputEnergyFrom(byte aSide); - public boolean inputEnergyFrom(byte aSide, boolean waitForActive); + default public boolean inputEnergyFrom(byte aSide, boolean waitForActive) { + return inputEnergyFrom(aSide); + } /** * Sided Energy Output */ public boolean outputsEnergyTo(byte aSide); - public boolean outputsEnergyTo(byte aSide, boolean waitForActive); + default public boolean outputsEnergyTo(byte aSide, boolean waitForActive) { + return outputsEnergyTo(aSide); + } /** * Utility for the Network diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java index 5ffae94456..d99ce1bc41 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java @@ -988,6 +988,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE return inputEnergyFrom(aSide, true); } + @Override public boolean inputEnergyFrom(byte aSide, boolean waitForActive) { if (aSide == 6) return true; if (isServerSide() && waitForActive) return ((aSide >= 0 && aSide < 6) && mActiveEUInputs[aSide]) && !mReleaseEnergy; diff --git a/src/main/java/gregtech/api/metatileentity/MetaPipeEntity.java b/src/main/java/gregtech/api/metatileentity/MetaPipeEntity.java index 421b0e3e30..7129c174df 100644 --- a/src/main/java/gregtech/api/metatileentity/MetaPipeEntity.java +++ b/src/main/java/gregtech/api/metatileentity/MetaPipeEntity.java @@ -780,7 +780,7 @@ public abstract class MetaPipeEntity implements IMetaTileEntity, IConnectable { if ((alwaysLookConnected || letsIn || letsOut)) { // Are we trying to connect to a pipe? let's do it! IMetaTileEntity tPipe = tTileEntity instanceof IGregTechTileEntity ? ((IGregTechTileEntity) tTileEntity).getMetaTileEntity() : null; - if (getClass().isInstance(tPipe)) { + if (getClass().isInstance(tPipe) || (tPipe != null && tPipe.getClass().isInstance(this))) { connectAtSide(aSide); if (!((MetaPipeEntity) tPipe).isConnectedAtSide(tSide)) { // Make sure pipes all get together -- connect back to us if we're connecting to a pipe @@ -824,7 +824,7 @@ public abstract class MetaPipeEntity implements IMetaTileEntity, IConnectable { byte tSide = GT_Utility.getOppositeSide(aSide); IGregTechTileEntity tTileEntity = getBaseMetaTileEntity().getIGregTechTileEntityAtSide(aSide); IMetaTileEntity tPipe = tTileEntity == null ? null : tTileEntity.getMetaTileEntity(); - if (this.getClass().isInstance(tPipe) && ((MetaPipeEntity) tPipe).isConnectedAtSide(tSide)) + if ((this.getClass().isInstance(tPipe) || (tPipe != null && tPipe.getClass().isInstance(this))) && ((MetaPipeEntity) tPipe).isConnectedAtSide(tSide)) ((MetaPipeEntity) tPipe).disconnect(tSide); } diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java index 98e596713e..5d672547d8 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java @@ -458,7 +458,7 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile // GT Machine handling if ((tTileEntity instanceof IEnergyConnected) && (((IEnergyConnected) tTileEntity).inputEnergyFrom(tSide, false) || ((IEnergyConnected) tTileEntity).outputsEnergyTo(tSide, false))) - return true; + return true; // Solar Panel Compat if (coverBehavior instanceof GT_Cover_SolarPanel) return true; -- cgit