aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2017-12-19 17:09:33 +0100
committerGitHub <noreply@github.com>2017-12-19 17:09:33 +0100
commit1c44725f64bb2fb9cbea1b6a3ef4024999a0301f (patch)
tree8bb2f668885ad24ceace227b93737cb043553d86
parentbb8b175d6b27c21a095e13c776c814856c23a3d6 (diff)
parent73ba61d809115bdedacedba994cea8c75f72c4a9 (diff)
downloadGT5-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
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java5
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java5
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java9
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java11
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Fluid.java10
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Item.java8
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);
}