aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/tileentities/machines
diff options
context:
space:
mode:
authorrepo_alt <wvk17@yandex.ru>2020-05-12 23:06:24 +0300
committerrepo_alt <wvk17@yandex.ru>2020-05-12 23:06:24 +0300
commite53731263db8068d708461ad5fa77446dc5539b7 (patch)
tree3301b5b250782ec5127586e0a22050a1084f43b7 /src/main/java/gregtech/common/tileentities/machines
parent314e20fea0792e6483e9c4f9f83f0340dbf765a5 (diff)
downloadGT5-Unofficial-e53731263db8068d708461ad5fa77446dc5539b7.tar.gz
GT5-Unofficial-e53731263db8068d708461ad5fa77446dc5539b7.tar.bz2
GT5-Unofficial-e53731263db8068d708461ad5fa77446dc5539b7.zip
Refactored drilling area center to be in the corner of the chunk, so that miner would be digging whole number of standard 3x3 veins (if placed properly)
Diffstat (limited to 'src/main/java/gregtech/common/tileentities/machines')
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java2
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java51
2 files changed, 37 insertions, 16 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java
index 03aedd436e..b480f4f5a6 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java
@@ -44,6 +44,8 @@ public abstract class GT_MetaTileEntity_DrillerBase extends GT_MetaTileEntity_Mu
private ForgeDirection back;
private int xDrill, yDrill, zDrill, xPipe, zPipe, yHead;
+ protected int getXDrill() { return xDrill; }
+ protected int getZDrill() { return zDrill; }
protected int workState;
protected static final int STATE_DOWNWARD = 0, STATE_AT_BOTTOM = 1, STATE_UPWARD = 2;
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java
index 1815562374..3c59bee520 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java
@@ -83,7 +83,7 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile
if (chunkRadiusConfig > getRadiusInChunks())
chunkRadiusConfig = 1;
}
- GT_Utility.sendChatToPlayer(aPlayer, StatCollector.translateToLocal("GT5U.machines.workareaset") + " " + (chunkRadiusConfig << 4) + " " + StatCollector.translateToLocal("GT5U.machines.radius"));//TODO Add translation support
+ GT_Utility.sendChatToPlayer(aPlayer, StatCollector.translateToLocal("GT5U.machines.workareaset") + " " + (chunkRadiusConfig << 4) + " " + StatCollector.translateToLocal("GT5U.machines.radius"));
}
@Override
@@ -134,7 +134,7 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile
return super.workingAtBottom(aStack, xDrill, yDrill, zDrill, xPipe, zPipe, yHead, oldYHead);
if (mCurrentChunk == null) {
- createInitialWorkingChunk(xDrill, zDrill);
+ createInitialWorkingChunk();
return true;
}
@@ -155,10 +155,13 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile
return processOreList();
}
- private void createInitialWorkingChunk(int xDrill, int zDrill) {
- final int centerX = xDrill >> 4;
- final int centerZ = zDrill >> 4;
- mCurrentChunk = new ChunkCoordIntPair(centerX - chunkRadiusConfig, centerZ - chunkRadiusConfig);
+ private void createInitialWorkingChunk() {
+ final int centerX = getXDrill() >> 4;
+ final int centerZ = getZDrill() >> 4;
+ // use corner closest to the drill as mining area center
+ final int leftRight = (getXDrill() - (centerX << 4)) < 8 ? 0 : 1;
+ final int topBottom = (getZDrill() - (centerZ << 4)) < 8 ? 0 : 1;
+ mCurrentChunk = new ChunkCoordIntPair(centerX - chunkRadiusConfig + leftRight, centerZ - chunkRadiusConfig + topBottom);
GT_ChunkManager.requestChunkLoad((TileEntity)getBaseMetaTileEntity(), mCurrentChunk);
mWorkChunkNeedsReload = false;
}
@@ -172,26 +175,42 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile
GT_ChunkManager.releaseTicket((TileEntity)getBaseMetaTileEntity());
return result;
}
+
private boolean moveToNextChunk(int centerX, int centerZ){
if (mCurrentChunk == null)
return false;
+ // use corner closest to the drill as mining area center
+ final int left = centerX - chunkRadiusConfig + ((getXDrill() - (centerX << 4)) < 8 ? 0 : 1);
+ final int right = left + chunkRadiusConfig * 2;
+ final int bottom = centerZ + chunkRadiusConfig + ((getZDrill() - (centerZ << 4)) < 8 ? 0 : 1);
+
int nextChunkX = mCurrentChunk.chunkXPos + 1;
int nextChunkZ = mCurrentChunk.chunkZPos;
- if (nextChunkX > (centerX + chunkRadiusConfig)){
- nextChunkX = centerX - chunkRadiusConfig;
+
+ // step to the next chunk
+ if (nextChunkX >= right) {
+ nextChunkX = left;
++nextChunkZ;
}
- if (nextChunkZ > (centerZ + chunkRadiusConfig)) {
+ // skip center chunk - dug in workingDownward()
+ if (nextChunkX == centerX && nextChunkZ == centerZ) {
+ ++nextChunkX;
+
+ if (nextChunkX >= right) {
+ nextChunkX = left;
+ ++nextChunkZ;
+ }
+ }
+
+ if (nextChunkZ >= bottom) {
mCurrentChunk = null;
return false;
}
- // skip center chunk - dug in workingDownward()
- if (nextChunkX == centerX && nextChunkZ == centerZ)
- ++nextChunkX;
mCurrentChunk = new ChunkCoordIntPair(nextChunkX, nextChunkZ);
GT_ChunkManager.requestChunkLoad((TileEntity)getBaseMetaTileEntity(), new ChunkCoordIntPair(nextChunkX, nextChunkZ));
return true;
}
+
@Override
protected boolean checkHatches(){
return !mMaintenanceHatches.isEmpty() && !mInputHatches.isEmpty() && !mOutputBusses.isEmpty() && !mEnergyHatches.isEmpty();
@@ -318,7 +337,7 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile
protected String[] getDescriptionInternal(String tierSuffix) {
String casings = getCasingBlockItem().get(0).getDisplayName();
- int d = getRadiusInChunks() * 2 + 1;
+ int d = getRadiusInChunks() * 2;
return new String[]{
"Controller Block for the Ore Drilling Plant " + (tierSuffix != null ? tierSuffix : ""),
"Size(WxHxD): 3x7x3, Controller (Front middle bottom)",
@@ -332,14 +351,14 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile
"1x " + VN[getMinTier()] + "+ Energy Hatch (Any bottom layer casing)",
"Use Screwdriver to configure block radius",
"Use Soldering iron to turn off chunk mode",
- "Maximum radius is " + (getRadiusInChunks() << 4) + " blocks in block mode",
- "Or " + getRadiusInChunks() + " chunks in chunk mode (" + d +"x" + d + " chunks)",
+ "Maximum radius is " + (getRadiusInChunks() << 4) + " blocks",
+ "In chunk mode working area center is the chunk corner nearest to the drill",
"Fortune bonus of " + (mTier + 3)};
}
@Override
public String[] getInfoData() {
- final int diameter = chunkRadiusConfig * 2 + (mChunkLoadingEnabled ? 1 : 0);
+ final int diameter = chunkRadiusConfig * 2;
return new String[]{
EnumChatFormatting.BLUE+StatCollector.translateToLocal("GT5U.machines.minermulti")+EnumChatFormatting.RESET,
StatCollector.translateToLocal("GT5U.machines.workarea")+": " + EnumChatFormatting.GREEN + diameter + "x" + diameter +