aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/tileentities
diff options
context:
space:
mode:
authorbotn365 <42187820+botn365@users.noreply.github.com>2020-02-25 20:09:38 +0100
committerGitHub <noreply@github.com>2020-02-25 20:09:38 +0100
commitc2f7c7716a43b64b9c2741b9d90b6164fb50b1ef (patch)
tree087b121f0d40b58914411438574eaf0fe63ed8e0 /src/main/java/gregtech/common/tileentities
parent14ea6a3ba9de16dd6fbd731b7b0f80ed109d4541 (diff)
parent5680fbc57fedb9c3aec07bdbf6efc67e64832564 (diff)
downloadGT5-Unofficial-c2f7c7716a43b64b9c2741b9d90b6164fb50b1ef.tar.gz
GT5-Unofficial-c2f7c7716a43b64b9c2741b9d90b6164fb50b1ef.tar.bz2
GT5-Unofficial-c2f7c7716a43b64b9c2741b9d90b6164fb50b1ef.zip
Merge pull request #1 from GTNewHorizons/experimental
sync
Diffstat (limited to 'src/main/java/gregtech/common/tileentities')
-rw-r--r--src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java55
-rw-r--r--src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java16
-rw-r--r--src/main/java/gregtech/common/tileentities/generators/GT_MetaTileEntity_MagicalEnergyAbsorber.java1
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_AdvSeismicProspector.java62
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Disassembler.java2
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java88
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Pump.java92
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java30
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_BrickedBlastFurnace.java2
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Cleanroom.java2
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DieselEngine.java3
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java50
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine.java1
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine_Plasma.java3
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java44
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java221
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PyrolyseOven.java16
-rw-r--r--src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java299
-rw-r--r--src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java192
-rw-r--r--src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_SuperChest.java235
20 files changed, 841 insertions, 573 deletions
diff --git a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java
index 8f8fa352a8..d7fd69edb2 100644
--- a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java
+++ b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java
@@ -8,14 +8,17 @@ import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Log;
import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_Utility;
import gregtech.common.gui.GT_Container_Boiler;
import gregtech.common.gui.GT_GUIContainer_Boiler;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidHandler;
+
public class GT_MetaTileEntity_Boiler_Solar
extends GT_MetaTileEntity_Boiler {
public GT_MetaTileEntity_Boiler_Solar(int aID, String aName, String aNameRegional) {
@@ -89,9 +92,44 @@ public class GT_MetaTileEntity_Boiler_Solar
this.mRunTime = aNBT.getInteger("mRunTime");
}
+ @Override
+ public String[] getInfoData() {
+ return new String[]{
+ "Heat Capacity: " + EnumChatFormatting.GREEN + GT_Utility.formatNumbers(this.mTemperature * 100 / maxProgresstime()) + " % " + EnumChatFormatting.RESET
+ + " Hot time: " + EnumChatFormatting.RED + GT_Utility.formatNumbers(this.mRunTime*25/20)+EnumChatFormatting.RESET+" s",
+ "Min output: " + EnumChatFormatting.RED + GT_Utility.formatNumbers(this.basicMaxOuput*20/25)+EnumChatFormatting.RESET+ " L/s"
+ + " Max output: " + EnumChatFormatting.RED + GT_Utility.formatNumbers(this.basicOutput*20/25)+EnumChatFormatting.RESET+" L/s",
+ "Current Output: " + EnumChatFormatting.YELLOW + GT_Utility.formatNumbers(getCalcificationOutput()*20/25) +EnumChatFormatting.RESET+" L/s"};
+ }
+
+ @Override
+ public boolean isGivingInformation() {
+ return true;
+ }
+
protected int basicOutput = 150;
protected int basicMaxOuput = 50;
- protected int basicTemperatureMod = 1;
+ protected int basicTemperatureMod = 5;
+ protected int basicLossTimerLimit = 45;
+
+ // Calcification start time is 43200*25/20=54,000s or 15 hours of game time.
+ static final int CALCIFICATION_TIME = 43200;
+
+ public int getCalcificationOutput() { // Returns how much output the boiler can do.
+ if (this.mTemperature < 100 ) {
+ return 0;
+ }
+ if (this.mRunTime > CALCIFICATION_TIME) {
+ // Calcification takes about 2/3 CALCIFICATION_TIME to completely calcify on basic solar. For HP solar, it takes about 2x CALCIFICATION_TIME
+ return Math.max(this.basicMaxOuput, this.basicOutput - ((this.mRunTime - CALCIFICATION_TIME) / (CALCIFICATION_TIME/150))); // Every 288*25 ticks, or 6 minutes, lose 1 L output.
+ } else {
+ return this.basicOutput;
+ }
+ }
+
+ public int getBasicOutput() {
+ return this.basicOutput;
+ }
public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
if ((aBaseMetaTileEntity.isServerSide()) && (aTick > 20L)) {
@@ -99,7 +137,7 @@ public class GT_MetaTileEntity_Boiler_Solar
this.mTemperature = 20;
this.mLossTimer = 0;
}
- if (++this.mLossTimer > 45) {
+ if (++this.mLossTimer > basicLossTimerLimit) {
this.mTemperature -= basicTemperatureMod;
this.mLossTimer = 0;
}
@@ -116,7 +154,7 @@ public class GT_MetaTileEntity_Boiler_Solar
}
}
}
- if (aTick % 25L == 0L) {
+ if (aTick % 25L == 0L) { // Every 25 ticks since 1L of water = 150L of steam. So for 120L, have to use 25 instead of 20.
if (this.mTemperature > 100) {
if ((this.mFluid == null) || (!GT_ModHandler.isWater(this.mFluid)) || (this.mFluid.amount <= 0)) {
this.mHadNoWater = true;
@@ -126,12 +164,11 @@ public class GT_MetaTileEntity_Boiler_Solar
aBaseMetaTileEntity.doExplosion(2048L);
return;
}
- this.mFluid.amount -= basicTemperatureMod;
+ this.mFluid.amount -= (basicOutput/150);
mRunTime += 1;
- int tOutput = basicOutput;
- if (mRunTime > 10000) {
- tOutput = Math.max(basicMaxOuput, basicOutput - ((mRunTime - 10000) / 100));
- }
+
+ int tOutput = getCalcificationOutput();
+
if (this.mSteam == null) {
this.mSteam = GT_ModHandler.getSteam(tOutput);
} else if (GT_ModHandler.isSteam(this.mSteam)) {
@@ -153,7 +190,7 @@ public class GT_MetaTileEntity_Boiler_Solar
boolean bRain = aBaseMetaTileEntity.getWorld().isRaining() && aBaseMetaTileEntity.getBiome().rainfall > 0.0F;
mProcessingEnergy += bRain && aBaseMetaTileEntity.getWorld().skylightSubtracted >= 4 || !aBaseMetaTileEntity.getSkyAtSide((byte) 1) ? 0 : !bRain && aBaseMetaTileEntity.getWorld().isDaytime() ? 8*basicTemperatureMod : basicTemperatureMod;
}
- if ((this.mTemperature < 500) && (this.mProcessingEnergy > 0) && (aTick % 12L == 0L)) {
+ if ((this.mTemperature < maxProgresstime()) && (this.mProcessingEnergy > 0) && (aTick % 12L == 0L)) {
this.mProcessingEnergy -= basicTemperatureMod;
this.mTemperature += basicTemperatureMod;
}
diff --git a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java
index 376ce4784c..594d338204 100644
--- a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java
+++ b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java
@@ -14,22 +14,22 @@ public class GT_MetaTileEntity_Boiler_Solar_Steel extends GT_MetaTileEntity_Boil
public GT_MetaTileEntity_Boiler_Solar_Steel(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
basicOutput = 450;
- basicMaxOuput = 120;
- basicTemperatureMod = 3;
+ basicMaxOuput = 150;
+ basicLossTimerLimit = 75; // Cools down slower than normal boiler
}
public GT_MetaTileEntity_Boiler_Solar_Steel(String aName, int aTier, String aDescription, ITexture[][][] aTextures) {
super(aName, aTier, aDescription, aTextures);
basicOutput = 450;
- basicMaxOuput = 120;
- basicTemperatureMod = 3;
+ basicMaxOuput = 150;
+ basicLossTimerLimit = 75;
}
public GT_MetaTileEntity_Boiler_Solar_Steel(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
super(aName, aTier, aDescription, aTextures);
basicOutput = 450;
- basicMaxOuput = 120;
- basicTemperatureMod = 3;
+ basicMaxOuput = 150;
+ basicLossTimerLimit = 75;
}
public ITexture[][][] getTextureSet(ITexture[] aTextures) {
@@ -68,10 +68,6 @@ public class GT_MetaTileEntity_Boiler_Solar_Steel extends GT_MetaTileEntity_Boil
return 32000;
}
- public int maxProgresstime() {
- return 1500;
- }
-
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
return new GT_MetaTileEntity_Boiler_Solar_Steel(this.mName, this.mTier, this.mDescriptionArray, this.mTextures);
}
diff --git a/src/main/java/gregtech/common/tileentities/generators/GT_MetaTileEntity_MagicalEnergyAbsorber.java b/src/main/java/gregtech/common/tileentities/generators/GT_MetaTileEntity_MagicalEnergyAbsorber.java
index 0f73cb46d3..b92307002e 100644
--- a/src/main/java/gregtech/common/tileentities/generators/GT_MetaTileEntity_MagicalEnergyAbsorber.java
+++ b/src/main/java/gregtech/common/tileentities/generators/GT_MetaTileEntity_MagicalEnergyAbsorber.java
@@ -7,7 +7,6 @@ import gregtech.api.enums.TC_Aspects;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gregtech.api.metatileentity.BaseMetaPipeEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicGenerator;
import gregtech.api.objects.GT_RenderedTexture;
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_AdvSeismicProspector.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_AdvSeismicProspector.java
index b52e57901b..5c0e2cbf25 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_AdvSeismicProspector.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_AdvSeismicProspector.java
@@ -33,8 +33,6 @@ import static gregtech.common.GT_UndergroundOil.undergroundOilReadInformation;
public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_BasicMachine {
boolean ready = false;
int radius;
- int near;
- int middle;
int step;
int cX;
int cZ;
@@ -55,9 +53,6 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba
new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_BOTTOM_ROCK_BREAKER_ACTIVE),
new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_BOTTOM_ROCK_BREAKER) });
radius = aRadius;
- near = radius / 3;
- near = near + near % 2; // making near value even;
- middle = near * 2;
step = aStep;
}
@@ -74,24 +69,19 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba
+ "x"
+ radius*2
+ " ONLY blocks below prospector",
- "Near < " + near,
- "Middle < " + middle,
- "Far >= " + middle,
- "Oil prospecting area 3x3 oilfields"};
+ "Oil prospecting area 3x3 oilfields, each is 8x8 chunks"};
}
protected GT_MetaTileEntity_AdvSeismicProspector(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures,
- String aGUIName, String aNEIName, int aNear, int aMiddle, int aRadius, int aStep) {
+ String aGUIName, String aNEIName, int aRadius, int aStep) {
super(aName, aTier, 1, aDescription, aTextures, 1, 1, aGUIName, aNEIName);
radius = aRadius;
- near = aNear;
- middle = aMiddle;
step = aStep;
}
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
return new GT_MetaTileEntity_AdvSeismicProspector(this.mName, this.mTier, this.mDescriptionArray, this.mTextures,
- this.mGUIName, this.mNEIName, this.near, this.middle, this.radius, this.step);
+ this.mGUIName, this.mNEIName, this.radius, this.step);
}
@Override
@@ -113,10 +103,9 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba
this.ready = false;
// prospecting ores
- HashMap<String, Integer> tNearOres = new HashMap<String, Integer>();
- HashMap<String, Integer> tMiddleOres = new HashMap<String, Integer>();
- HashMap<String, Integer> tFarOres = new HashMap<String, Integer>();
- prospectOres(tNearOres, tMiddleOres, tFarOres);
+ HashMap<String, Integer> tOres = new HashMap<String, Integer>(36);
+
+ prospectOres(tOres);
// prospecting oils
ArrayList<String> tOils = new ArrayList<String>();
@@ -129,10 +118,8 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba
this.getBaseMetaTileEntity().getZCoord(),
this.getBaseMetaTileEntity().getWorld().provider.dimensionId,
tOils,
- GT_Utility.sortByValueToList(tNearOres),
- GT_Utility.sortByValueToList(tMiddleOres),
- GT_Utility.sortByValueToList(tFarOres),
- near, middle, radius);
+ GT_Utility.sortByValueToList(tOres),
+ radius);
}
}
@@ -145,8 +132,8 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba
Chunk tChunk = getBaseMetaTileEntity().getWorld().getChunkFromBlockCoords(getBaseMetaTileEntity().getXCoord(), getBaseMetaTileEntity().getZCoord());
int oilfieldSize = 8;
- int xChunk = (tChunk.xPosition / oilfieldSize) * oilfieldSize - ((tChunk.xPosition < 0 && tChunk.xPosition % oilfieldSize != 0) ? oilfieldSize : 0);
- int zChunk = (tChunk.zPosition / oilfieldSize) * oilfieldSize - ((tChunk.zPosition < 0 && tChunk.zPosition % oilfieldSize != 0) ? oilfieldSize : 0);
+ int xChunk = Math.floorDiv(tChunk.xPosition , oilfieldSize) * oilfieldSize - ((tChunk.xPosition < 0 && tChunk.xPosition % oilfieldSize != 0) ? oilfieldSize : 0);
+ int zChunk = Math.floorDiv(tChunk.zPosition , oilfieldSize) * oilfieldSize - ((tChunk.zPosition < 0 && tChunk.zPosition % oilfieldSize != 0) ? oilfieldSize : 0);
LinkedHashMap<ChunkCoordIntPair, FluidStack> tFluids = new LinkedHashMap<>();
int oilFieldCount = 0;
@@ -186,28 +173,35 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba
// aOils.put(x + "," + z + "," + (tFluid.amount / 5000) + "," + tFluid.getLocalizedName(), tFluid.amount / 5000);
//}
- private void prospectOres(Map<String, Integer> aNearOres, Map<String, Integer> aMiddleOres, Map<String, Integer> aFarOres) {
+ private void prospectOres(Map<String, Integer> aOres) {
int tLeftXBound = this.getBaseMetaTileEntity().getXCoord() - radius;
int tRightXBound = tLeftXBound + 2*radius;
int tLeftZBound = this.getBaseMetaTileEntity().getZCoord() - radius;
int tRightZBound = tLeftZBound + 2*radius;
- for (int i = tLeftXBound; i <= tRightXBound; i += step)
+ for (int i = tLeftXBound; i <= tRightXBound; i += step) {
+ if ( (Math.abs(i)/16-1)%3!=0 ) {
+ continue;
+ }
for (int k = tLeftZBound; k <= tRightZBound; k += step) {
+ if ( (Math.abs(k)/16-1)%3!=0 ) {
+ continue;
+ }
+
int di = Math.abs(i - this.getBaseMetaTileEntity().getXCoord());
int dk = Math.abs(k - this.getBaseMetaTileEntity().getZCoord());
- cX = (i/16)*16;
- cZ = (k/16)*16;
+ cX = (Math.floorDiv(i,16))*16;
+
+ cZ = (Math.floorDiv(k,16))*16;
+
+ String separator = (cX +8)+ "," + (cZ + 8) + " --------";
+ aOres.put(separator, 1);
+ prospectHole(i, k, aOres);
- if (di <= near && dk <= near)
- prospectHole(i, k, aNearOres);
- else if (di <= middle && dk <= middle)
- prospectHole(i, k, aMiddleOres);
- else
- prospectHole(i, k, aFarOres);
}
+ }
}
private void prospectHole(int i, int k, Map<String, Integer> aOres) {
@@ -245,7 +239,7 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba
}
private static void countOre(Map<String, Integer> map, String ore, int cCX, int cCZ) {
- ore = ore + " at " + (cCX +8)+ "," + (cCZ + 8);
+ ore = (cCX +8)+ "," + (cCZ + 8) + " has " + ore;
Integer oldCount = map.get(ore);
oldCount = (oldCount == null) ? 0 : oldCount;
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Disassembler.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Disassembler.java
index 8efebe98a5..8b947a740b 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Disassembler.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Disassembler.java
@@ -1,7 +1,6 @@
package gregtech.common.tileentities.machines.basic;
import gregtech.api.enums.GT_Values;
-import gregtech.api.enums.ItemList;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
@@ -9,7 +8,6 @@ import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Utility;
-import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java
index 26024cafee..9757974cee 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java
@@ -13,10 +13,13 @@ import gregtech.api.util.GT_Utility;
import gregtech.common.blocks.GT_Block_Ores_Abstract;
import gregtech.common.blocks.GT_TileEntity_Ores;
import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
import net.minecraftforge.common.util.FakePlayer;
import java.util.ArrayList;
@@ -35,17 +38,36 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine {
final static int[] SPEED = new int[]{160, 160, 80, 40, 20}; //Miner cycle time per tier
final static int[] ENERGY = new int[]{8, 8, 32, 128, 512}; //Miner energy consumption per tier
+ private int radiusConfig; //Miner configured radius
+
public GT_MetaTileEntity_Miner(int aID, String aName, String aNameRegional, int aTier) {
- super(aID, aName, aNameRegional, aTier, 1, new String[]{"Digging ore instead of you", ENERGY[aTier] + " EU/t, " + SPEED[aTier] / 20 + " sec per block",
- "Work area " + (RADIUS[aTier] * 2 + 1) + "x" + (RADIUS[aTier] * 2 + 1), "Fortune bonus of " + aTier * 2}, 2, 2, "Miner.png", "", new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_SIDE_ACTIVE")), new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_SIDE")), new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_FRONT_ACTIVE")), new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_FRONT")), new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_TOP_ACTIVE")), new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_TOP")), new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_BOTTOM_ACTIVE")), new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_BOTTOM")));
+ super(aID, aName, aNameRegional, aTier, 1,
+ new String[]{
+ "Digging ore instead of you",
+ "Use Screwdriver to regulate work area",
+ ENERGY[aTier] + " EU/t, " + SPEED[aTier] / 20 + " sec per block",
+ "Maximum work area " + (RADIUS[aTier] * 2 + 1) + "x" + (RADIUS[aTier] * 2 + 1),
+ "Fortune bonus of " + aTier},
+ 2, 2, "Miner.png", "",
+ new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_SIDE_ACTIVE")),
+ new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_SIDE")),
+ new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_FRONT_ACTIVE")),
+ new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_FRONT")),
+ new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_TOP_ACTIVE")),
+ new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_TOP")),
+ new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_BOTTOM_ACTIVE")),
+ new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_BOTTOM")));
+ radiusConfig = RADIUS[mTier];
}
public GT_MetaTileEntity_Miner(String aName, int aTier, String aDescription, ITexture[][][] aTextures, String aGUIName, String aNEIName) {
super(aName, aTier, 1, aDescription, aTextures, 1, 1, aGUIName, aNEIName);
+ radiusConfig = RADIUS[mTier];
}
public GT_MetaTileEntity_Miner(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures, String aGUIName, String aNEIName) {
super(aName, aTier, 1, aDescription, aTextures, 2, 2, aGUIName, aNEIName);
+ radiusConfig = RADIUS[mTier];
}
@@ -68,6 +90,27 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine {
}
@Override
+ public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ super.onScrewdriverRightClick(aSide, aPlayer, aX, aY, aZ);
+ if (aSide != getBaseMetaTileEntity().getFrontFacing() && aSide != mMainFacing) {
+ if (aPlayer.isSneaking()) {
+ if (radiusConfig >= 0) {
+ radiusConfig--;
+ }
+ if (radiusConfig < 0)
+ radiusConfig = RADIUS[mTier];
+ } else {
+ if (radiusConfig <= RADIUS[mTier]) {
+ radiusConfig++;
+ }
+ if (radiusConfig > RADIUS[mTier])
+ radiusConfig = 0;
+ }
+ GT_Utility.sendChatToPlayer(aPlayer, StatCollector.translateToLocal("GT5U.machines.workareaset") + " " + (radiusConfig * 2 + 1) + "x" + (radiusConfig * 2 + 1));//TODO Add translation support
+ }
+ }
+
+ @Override
public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
super.onPostTick(aBaseMetaTileEntity, aTick);
if (aBaseMetaTileEntity.isServerSide()) {
@@ -107,17 +150,17 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine {
moveOneDown(aBaseMetaTileEntity);
return;
}
- if (drillZ > RADIUS[mTier]) {
+ if (drillZ > radiusConfig) {
moveOneDown(aBaseMetaTileEntity);
return;
}
- while (drillZ <= RADIUS[mTier]) {
- while (drillX <= RADIUS[mTier]) {
+ while (drillZ <= radiusConfig) {
+ while (drillX <= radiusConfig) {
Block block = aBaseMetaTileEntity.getBlockOffset(drillX, drillY, drillZ);
int blockMeta = aBaseMetaTileEntity.getMetaIDOffset(drillX, drillY, drillZ);
if (block instanceof GT_Block_Ores_Abstract) {
TileEntity tTileEntity = getBaseMetaTileEntity().getTileEntityOffset(drillX, drillY, drillZ);
- if (tTileEntity != null && tTileEntity instanceof GT_TileEntity_Ores && ((GT_TileEntity_Ores) tTileEntity).mNatural) {
+ if (tTileEntity instanceof GT_TileEntity_Ores && ((GT_TileEntity_Ores) tTileEntity).mNatural) {
mineBlock(aBaseMetaTileEntity, drillX, drillY, drillZ);
return;
}
@@ -130,7 +173,7 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine {
}
drillX++;
}
- drillX = -RADIUS[mTier];
+ drillX = -radiusConfig;
drillZ++;
}
}
@@ -141,6 +184,7 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine {
public long maxEUStore() {
return mTier == 1 ? 4096 : V[mTier] * 64;
}
+
public boolean moveOneDown(IGregTechTileEntity aBaseMetaTileEntity) {
int xCoord = aBaseMetaTileEntity.getXCoord();
int zCoord = aBaseMetaTileEntity.getZCoord();
@@ -191,7 +235,14 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine {
private ArrayList<ItemStack> getBlockDrops(final Block oreBlock, int posX, int posY, int posZ) {
final int blockMeta = getBaseMetaTileEntity().getMetaID(posX, posY, posZ);
- return oreBlock.getDrops(getBaseMetaTileEntity().getWorld(), posX, posY, posZ, blockMeta, mTier*2 + 1);
+ return oreBlock.getDrops(getBaseMetaTileEntity().getWorld(), posX, posY, posZ, blockMeta, mTier);
+ }
+
+ @Override
+ public void setItemNBT(NBTTagCompound aNBT) {
+ super.setItemNBT(aNBT);
+ aNBT.setByte("mTier", mTier);
+ aNBT.setInteger("radiusConfig", radiusConfig);
}
@Override
@@ -201,6 +252,7 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine {
aNBT.setInteger("drillX", drillX);
aNBT.setInteger("drillY", drillY);
aNBT.setInteger("drillZ", drillZ);
+ aNBT.setInteger("radiusConfig", radiusConfig);
}
@Override
@@ -210,15 +262,29 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine {
drillX = aNBT.getInteger("drillX");
drillY = aNBT.getInteger("drillY");
drillZ = aNBT.getInteger("drillZ");
+ if (aNBT.hasKey("radiusConfig"))
+ radiusConfig = aNBT.getInteger("radiusConfig");
}
private FakePlayer mFakePlayer = null;
protected FakePlayer getFakePlayer(IGregTechTileEntity aBaseTile) {
- if (mFakePlayer == null) mFakePlayer = GT_Utility.getFakePlayer(aBaseTile);
- mFakePlayer.setWorld(aBaseTile.getWorld());
- mFakePlayer.setPosition(aBaseTile.getXCoord(), aBaseTile.getYCoord(), aBaseTile.getZCoord());
+ if (mFakePlayer == null)
+ mFakePlayer = GT_Utility.getFakePlayer(aBaseTile);
+ if (mFakePlayer != null) {
+ mFakePlayer.setWorld(aBaseTile.getWorld());
+ mFakePlayer.setPosition(aBaseTile.getXCoord(), aBaseTile.getYCoord(), aBaseTile.getZCoord());
+ }
return mFakePlayer;
}
+
+ @Override
+ public String[] getInfoData() {
+ return new String[]{
+ EnumChatFormatting.BLUE+StatCollector.translateToLocal("GT5U.machines.miner")+EnumChatFormatting.RESET,
+ StatCollector.translateToLocal("GT5U.machines.workarea")+": " + EnumChatFormatting.GREEN + (radiusConfig * 2 + 1)+
+ EnumChatFormatting.RESET+" " + StatCollector.translateToLocal("GT5U.machines.blocks")
+ };
+ }
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Pump.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Pump.java
index dcb516efa5..e4a2ffe771 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Pump.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Pump.java
@@ -18,6 +18,8 @@ import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
import net.minecraft.world.ChunkPosition;
import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.common.util.ForgeDirection;
@@ -25,12 +27,7 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidBlock;
import net.minecraftforge.fluids.IFluidHandler;
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
+import java.util.*;
import static gregtech.api.enums.GT_Values.D1;
import static gregtech.api.enums.GT_Values.V;
@@ -48,26 +45,31 @@ public class GT_MetaTileEntity_Pump extends GT_MetaTileEntity_Hatch {
return (16 * ((long) Math.pow(4, aTier)));
}
- public ArrayDeque<ChunkPosition> mPumpList = new ArrayDeque<ChunkPosition>();
+ public ArrayDeque<ChunkPosition> mPumpList = new ArrayDeque<>();
public boolean wasPumping = false;
public int mPumpTimer = 0;
public int mPumpCountBelow = 0;
public Block mPrimaryPumpedBlock = null;
public Block mSecondaryPumpedBlock = null;
+ private int radiusConfig; //Pump configured radius
+
public GT_MetaTileEntity_Pump(int aID, String aName, String aNameRegional, int aTier) {
super(aID, aName, aNameRegional, aTier, 3,
new String[]{"The best way to empty Oceans! Outputs on top",
- "Pumping Area: " + (GT_MetaTileEntity_Pump.getMaxDistanceForTier((byte)aTier) * 2 + 1) + "x" +
- (GT_MetaTileEntity_Pump.getMaxDistanceForTier((byte)aTier) * 2 + 1)});
+ "Maximum pumping area: " + (getMaxDistanceForTier((byte) aTier) * 2 + 1) + "x" + (getMaxDistanceForTier((byte) aTier) * 2 + 1),
+ "Use Screwdriver to regulate pumping area"});
+ radiusConfig = getMaxDistanceForTier(mTier);
}
public GT_MetaTileEntity_Pump(String aName, int aTier, String aDescription, ITexture[][][] aTextures) {
super(aName, aTier, 3, aDescription, aTextures);
+ radiusConfig = getMaxDistanceForTier(mTier);
}
public GT_MetaTileEntity_Pump(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
super(aName, aTier, 3, aDescription