diff options
author | Martin Robertz <dream-master@gmx.net> | 2017-12-19 17:09:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-19 17:09:33 +0100 |
commit | 1c44725f64bb2fb9cbea1b6a3ef4024999a0301f (patch) | |
tree | 8bb2f668885ad24ceace227b93737cb043553d86 | |
parent | bb8b175d6b27c21a095e13c776c814856c23a3d6 (diff) | |
parent | 73ba61d809115bdedacedba994cea8c75f72c4a9 (diff) | |
download | GT5-Unofficial-1c44725f64bb2fb9cbea1b6a3ef4024999a0301f.tar.gz GT5-Unofficial-1c44725f64bb2fb9cbea1b6a3ef4024999a0301f.tar.bz2 GT5-Unofficial-1c44725f64bb2fb9cbea1b6a3ef4024999a0301f.zip |
Merge pull request #63 from Antifluxfield/GTNH-GT6_cable_fix
Fix cable connection
6 files changed, 38 insertions, 10 deletions
diff --git a/src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java b/src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java index a8939096a6..becda3c32d 100644 --- a/src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java +++ b/src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java @@ -42,6 +42,11 @@ public interface IEnergyConnected extends IColoredTileEntity, IHasWorldObjectAnd public boolean outputsEnergyTo(byte aSide); /** + * Are we ready for energy state? + */ + public boolean energyStateReady(); + + /** * Utility for the Network */ public static class Util { diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java index f8498fe1e4..f1f7b8d76b 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java @@ -1324,4 +1324,9 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE public void onEntityCollidedWithBlock(World aWorld, int aX, int aY, int aZ, Entity collider) {
mMetaTileEntity.onEntityCollidedWithBlock(aWorld, aX, aY, aZ, collider);
}
+
+ @Override
+ public boolean energyStateReady() {
+ return true;
+ }
}
diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java index 5e36bb624c..fe92f313a7 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java @@ -56,6 +56,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE protected int mAverageEUInputIndex = 0, mAverageEUOutputIndex = 0; protected boolean mReleaseEnergy = false; protected int[] mAverageEUInput = new int[]{0, 0, 0, 0, 0}, mAverageEUOutput = new int[]{0, 0, 0, 0, 0}; + private boolean mEnergyStateReady = false; private boolean[] mActiveEUInputs = new boolean[]{false, false, false, false, false, false}, mActiveEUOutputs = new boolean[]{false, false, false, false, false, false}; private byte[] mSidedRedstone = new byte[]{15, 15, 15, 15, 15, 15}; private int[] mCoverSides = new int[]{0, 0, 0, 0, 0, 0}, mCoverData = new int[]{0, 0, 0, 0, 0, 0}, mTimeStatistics = new int[GregTech_API.TICKS_FOR_LAG_AVERAGING]; @@ -455,6 +456,8 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE } } } + // We're ready to tell about our energy state - Only used server side + mEnergyStateReady = true; } if (!hasValidMetaTileEntity()) { @@ -969,6 +972,12 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE } @Override + public boolean energyStateReady() { + if (!isServerSide()) return true; + else return mEnergyStateReady; + } + + @Override public boolean inputEnergyFrom(byte aSide) { if (aSide == 6) return true; if (isServerSide()) return (aSide >= 0 && aSide < 6 ? mActiveEUInputs[aSide] : false) && !mReleaseEnergy; 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 2766a9e52f..1b720c9503 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 @@ -361,9 +361,14 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile rConnect = 1;
}
}
- } else if (getBaseMetaTileEntity().getOffsetX(aSide, 1) >> 4 != getBaseMetaTileEntity().getXCoord() >> 4
- || getBaseMetaTileEntity().getOffsetZ(aSide, 1) >> 4 != getBaseMetaTileEntity().getZCoord() >> 4) { // if chunk unloaded
- rConnect = -1;
+ }
+ if (rConnect == 0) {
+ if (!getBaseMetaTileEntity().getWorld().getChunkProvider().chunkExists(getBaseMetaTileEntity().getOffsetX(aSide, 1) >> 4, getBaseMetaTileEntity().getOffsetZ(aSide, 1) >> 4)) { // if chunk unloaded
+ rConnect = -1;
+ }
+ if (tTileEntity instanceof IEnergyConnected && !((IEnergyConnected) tTileEntity).energyStateReady()) { //Energy state not ready
+ rConnect = -1;
+ }
}
if (rConnect > 0) {
super.connect(aSide);
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Fluid.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Fluid.java index f330aa5eef..e3e9531d97 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Fluid.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Fluid.java @@ -392,10 +392,12 @@ public class GT_MetaPipeEntity_Fluid extends MetaPipeEntity { }
}
}
- } else if (getBaseMetaTileEntity().getOffsetX(aSide, 1) >> 4 != getBaseMetaTileEntity().getXCoord() >> 4
- || getBaseMetaTileEntity().getOffsetZ(aSide, 1) >> 4 != getBaseMetaTileEntity().getZCoord() >> 4) { // if chunk unloaded
- rConnect = -1;
}
+ if (rConnect == 0) {
+ if (!getBaseMetaTileEntity().getWorld().getChunkProvider().chunkExists(getBaseMetaTileEntity().getOffsetX(aSide, 1) >> 4, getBaseMetaTileEntity().getOffsetZ(aSide, 1) >> 4)) { // if chunk unloaded
+ rConnect = -1;
+ }
+ }
if (rConnect > 0) {
if (GT_Mod.gregtechproxy.gt6Pipe && tFluidPipe != null) {
if ((mDisableInput & (1 << aSide)) == 0 || (tFluidPipe.mDisableInput & (1 << tSide)) == 0) {
@@ -600,7 +602,7 @@ public class GT_MetaPipeEntity_Fluid extends MetaPipeEntity { }
public boolean isInputDisabledAtSide(int aSide) {
- return (mDisableInput & (1 << aSide)) != 0;//... if not zero then it is
+ return (mDisableInput & (1 << aSide)) != 0;
}
@Override
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Item.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Item.java index 9ce470859b..f1ac1252df 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Item.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Item.java @@ -258,10 +258,12 @@ public class GT_MetaPipeEntity_Item extends MetaPipeEntity implements IMetaTileE } } } - } else if (getBaseMetaTileEntity().getOffsetX(aSide, 1) >> 4 != getBaseMetaTileEntity().getXCoord() >> 4 - || getBaseMetaTileEntity().getOffsetZ(aSide, 1) >> 4 != getBaseMetaTileEntity().getZCoord() >> 4) { // if chunk unloaded - rConnect = -1; } + if (rConnect == 0) { + if (!getBaseMetaTileEntity().getWorld().getChunkProvider().chunkExists(getBaseMetaTileEntity().getOffsetX(aSide, 1) >> 4, getBaseMetaTileEntity().getOffsetZ(aSide, 1) >> 4)) { // if chunk unloaded + rConnect = -1; + } + } if (rConnect > 0) { super.connect(aSide); } |