aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common
diff options
context:
space:
mode:
authorRichard Hendricks <richardhendricks@pobox.com>2018-08-29 22:46:16 -0500
committerRichard Hendricks <richardhendricks@pobox.com>2018-08-29 22:46:16 -0500
commit7e6fb0abeef22b80f16da5f63e7849525823579e (patch)
tree1b27a15fe4e10218be34cdb381cff7d49f1690f4 /src/main/java/gregtech/common
parent404cca89e1f69872e4a0300eaee3f9deb69a62c1 (diff)
downloadGT5-Unofficial-7e6fb0abeef22b80f16da5f63e7849525823579e.tar.gz
GT5-Unofficial-7e6fb0abeef22b80f16da5f63e7849525823579e.tar.bz2
GT5-Unofficial-7e6fb0abeef22b80f16da5f63e7849525823579e.zip
Java does not handle integer division in the expected way when going negative. Have to use Math.floorDiv() instead.
Diffstat (limited to 'src/main/java/gregtech/common')
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java34
1 files changed, 32 insertions, 2 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java
index b1480791e3..5ae49aba2a 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java
@@ -12,6 +12,7 @@ import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import java.util.ArrayList;
+import java.lang.Math; //Java was written by idiots
import static gregtech.api.enums.GT_Values.VN;
import static gregtech.api.enums.GT_Values.debugDriller;
@@ -111,20 +112,49 @@ public abstract class GT_MetaTileEntity_OilDrillBase extends GT_MetaTileEntity_D
tFluid = undergroundOilReadInformation(getBaseMetaTileEntity());
if (tFluid == null) return false;
mOilId = tFluid.getFluidID();
+ if (debugDriller) {
+ GT_Log.out.println(
+ " mOilId null, adding fluid = " + mOilId
+ );
+ }
}
tOil = new FluidStack(FluidRegistry.getFluid(mOilId), 0);
if (mOilFieldChunks.isEmpty()) {
Chunk tChunk = getBaseMetaTileEntity().getWorld().getChunkFromBlockCoords(getBaseMetaTileEntity().getXCoord(), getBaseMetaTileEntity().getZCoord());
int range = getRangeInChunks();
- int xChunk = (tChunk.xPosition / range) * range;
- int zChunk = (tChunk.zPosition / range) * range;
+ int xChunk = Math.floorDiv(tChunk.xPosition,range) * range; //Java was written by idiots. For negative values, / returns rounded towards zero. Fucking morons.
+ int zChunk = Math.floorDiv(tChunk.zPosition,range) * range;
+ if (debugDriller) {
+ GT_Log.out.println(
+ "tChunk.xPosition = " + tChunk.xPosition +
+ " tChunk.zPosition = " + tChunk.zPosition +
+ " xChunk = " + xChunk +
+ " zChunk = " + zChunk
+ );
+ }
for (int i = 0; i < range; i++) {
for (int j = 0; j < range; j++) {
+ if (debugDriller) {
+ GT_Log.out.println(
+ " getChunkX = " + (xChunk + i) +
+ " getChunkZ = " + (zChunk + j)
+ );
+ }
tChunk = getBaseMetaTileEntity().getWorld().getChunkFromChunkCoords(xChunk + i, zChunk + j);
tFluid = undergroundOilReadInformation(tChunk);
+ if (debugDriller) {
+ GT_Log.out.println(
+ " Fluid in chunk = " + tFluid.getFluid().getID()
+ );
+ }
if (tOil.isFluidEqual(tFluid) && tFluid.amount > 0) {
mOilFieldChunks.add(tChunk);
+ if (debugDriller) {
+ GT_Log.out.println(
+ " Matching fluid, quantity = " + tFluid.amount
+ );
+ }
}
}
}