aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2019-12-17 08:06:35 +0100
committerGitHub <noreply@github.com>2019-12-17 08:06:35 +0100
commit85fa155374035857f00582515f841db34c546b92 (patch)
tree0274c27ac313916e00c68aa8256d9509954ca779
parentaa3840acd0eb1b6e2a5705182b17b27a8fa6e721 (diff)
parent19acdbddcc7c560890dde3eb8053cf66adc91b05 (diff)
downloadGT5-Unofficial-85fa155374035857f00582515f841db34c546b92.tar.gz
GT5-Unofficial-85fa155374035857f00582515f841db34c546b92.tar.bz2
GT5-Unofficial-85fa155374035857f00582515f841db34c546b92.zip
Merge pull request #219 from GTNewHorizons/feature/minor-fixes-2020Q1
Feature/minor fixes 2020 q1
-rw-r--r--src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java51
-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/machines/basic/GT_MetaTileEntity_Miner.java20
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Pump.java56
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine_Plasma.java1
5 files changed, 99 insertions, 45 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..398bf4869c 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,40 @@ 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;
+
+ 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 void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
if ((aBaseMetaTileEntity.isServerSide()) && (aTick > 20L)) {
@@ -99,7 +133,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 +150,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 +160,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 +186,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/machines/basic/GT_MetaTileEntity_Miner.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java
index 5f4c60ca1f..22bb275ea2 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
@@ -36,7 +36,7 @@ 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 = RADIUS[mTier]; //Miner configured radius
+ private int radiusConfig; //Miner configured radius
public GT_MetaTileEntity_Miner(int aID, String aName, String aNameRegional, int aTier) {
super(aID, aName, aNameRegional, aTier, 1,
@@ -55,14 +55,17 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine {
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];
}
@@ -89,13 +92,17 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine {
super.onScrewdriverRightClick(aSide, aPlayer, aX, aY, aZ);
if (aSide != getBaseMetaTileEntity().getFrontFacing() && aSide != mMainFacing) {
if (aPlayer.isSneaking()) {
- if (radiusConfig > 1) {
+ if (radiusConfig >= 0) {
radiusConfig--;
}
+ if (radiusConfig < 0)
+ radiusConfig = RADIUS[mTier];
} else {
- if (radiusConfig < RADIUS[mTier]) {
+ if (radiusConfig <= RADIUS[mTier]) {
radiusConfig++;
}
+ if (radiusConfig > RADIUS[mTier])
+ radiusConfig = 0;
}
GT_Utility.sendChatToPlayer(aPlayer, "Work area set to " + (radiusConfig * 2 + 1) + "x" + (radiusConfig * 2 + 1));//TODO Add translation support
}
@@ -230,6 +237,13 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine {
}
@Override
+ public void setItemNBT(NBTTagCompound aNBT) {
+ super.setItemNBT(aNBT);
+ aNBT.setByte("mTier", mTier);
+ aNBT.setInteger("radiusConfig", radiusConfig);
+ }
+
+ @Override
public void saveNBTData(NBTTagCompound aNBT) {
super.saveNBTData(aNBT);
aNBT.setBoolean("isPickingPipe", isPickingPipes);
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 8357dfe187..bf11df1b7c 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
@@ -25,12 +25,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,28 +43,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 = getMaxDistanceForTier(mTier); //Pump configured radius
+ 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",
- "Maximum pumping area: " + (getMaxDistanceForTier((byte)aTier) * 2 + 1) + "x" + (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, aTextures);
+ radiusConfig = getMaxDistanceForTier(mTier);
}
@Override
@@ -102,16 +100,27 @@ public class GT_MetaTileEntity_Pump extends GT_MetaTileEntity_Hatch {
}
@Override
+ public void setItemNBT(NBTTagCompound aNBT) {
+ super.setItemNBT(aNBT);
+ aNBT.setInteger("radiusConfig", radiusConfig);
+ }
+
+ @Override
public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
super.onScrewdriverRightClick(aSide, aPlayer, aX, aY, aZ);
+ int max = getMaxPumpableDistance();
if (aPlayer.isSneaking()) {
- if (radiusConfig > 1) {
+ if (radiusConfig >= 0) {
radiusConfig--;
}
+ if (radiusConfig < 0)
+ radiusConfig = max;
} else {
- if (radiusConfig < getMaxPumpableDistance()) {
+ if (radiusConfig <= max) {
radiusConfig++;
}
+ if (radiusConfig > max)
+ radiusConfig = 0;
}
GT_Utility.sendChatToPlayer(aPlayer, "Pumping area set to " + (radiusConfig * 2 + 1) + "x" + (radiusConfig * 2 + 1));//TODO Add translation support
@@ -372,9 +381,9 @@ public class GT_MetaTileEntity_Pump extends GT_MetaTileEntity_Hatch {
private void rebuildPumpQueue(int aX, int yStart, int aZ, int yEnd) {
int mDist = this.radiusConfig;
doTickProfilingInThisTick = false;
- ArrayDeque<ChunkPosition> fluidsToSearch = new ArrayDeque<ChunkPosition>();
- ArrayDeque<ChunkPosition> fluidsFound = new ArrayDeque<ChunkPosition>();
- Set<ChunkPosition> checked = new HashSet<ChunkPosition>();
+ ArrayDeque<ChunkPosition> fluidsToSearch = new ArrayDeque<>();
+ ArrayDeque<ChunkPosition> fluidsFound = new ArrayDeque<>();
+ Set<ChunkPosition> checked = new HashSet<>();
this.clearQueue(false);
for (int aY = yStart ; this.mPumpList.isEmpty() && aY >= yEnd ; aY--) {
@@ -383,22 +392,23 @@ public class GT_MetaTileEntity_Pump extends GT_MetaTileEntity_Hatch {
fluidsToSearch.add(new ChunkPosition(aX, aY, aZ));
while (!fluidsToSearch.isEmpty()) {
- Iterator<ChunkPosition> i$ = fluidsToSearch.iterator();
- while(i$.hasNext()) {
- ChunkPosition tPos = i$.next();
-
+ for (ChunkPosition tPos : fluidsToSearch) {
// Look all around
- if (tPos.chunkPosX < aX + mDist) queueFluid(tPos.chunkPosX + 1, tPos.chunkPosY, tPos.chunkPosZ, fluidsFound, checked);
- if (tPos.chunkPosX > aX - mDist) queueFluid(tPos.chunkPosX - 1, tPos.chunkPosY, tPos.chunkPosZ, fluidsFound, checked);
- if (tPos.chunkPosZ < aZ + mDist) queueFluid(tPos.chunkPosX, tPos.chunkPosY, tPos.chunkPosZ + 1, fluidsFound, checked);
- if (tPos.chunkPosZ > aZ - mDist) queueFluid(tPos.chunkPosX, tPos.chunkPosY, tPos.chunkPosZ - 1, fluidsFound, checked);
+ if (tPos.chunkPosX < aX + mDist)
+ queueFluid(tPos.chunkPosX + 1, tPos.chunkPosY, tPos.chunkPosZ, fluidsFound, checked);
+ if (tPos.chunkPosX > aX - mDist)
+ queueFluid(tPos.chunkPosX - 1, tPos.chunkPosY, tPos.chunkPosZ, fluidsFound, checked);
+ if (tPos.chunkPosZ < aZ + mDist)
+ queueFluid(tPos.chunkPosX, tPos.chunkPosY, tPos.chunkPosZ + 1, fluidsFound, checked);
+ if (tPos.chunkPosZ > aZ - mDist)
+ queueFluid(tPos.chunkPosX, tPos.chunkPosY, tPos.chunkPosZ - 1, fluidsFound, checked);
// And then look up
queueFluid(tPos.chunkPosX, tPos.chunkPosY + 1, tPos.chunkPosZ, this.mPumpList, checked);
}
this.mPumpList.addAll(fluidsFound);
fluidsToSearch = fluidsFound;
- fluidsFound = new ArrayDeque<ChunkPosition>();
+ fluidsFound = new ArrayDeque<>();
}
// Make sure we don't have the pipe location in the queue
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine_Plasma.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine_Plasma.java
index fb3f58efd5..645342109e 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine_Plasma.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeTurbine_Plasma.java
@@ -42,6 +42,7 @@ public class GT_MetaTileEntity_LargeTurbine_Plasma extends GT_MetaTileEntity_Lar
"Size(WxHxD): 3x3x4 (Hollow), Controller (Front centered)",
"1x Plasma Input Hatch (Side centered)",
"1x Maintenance Hatch (Side centered)",
+ "1x Output Hatch (Side centered, optional)",
"1x Dynamo Hatch (Back centered)",
"Tungstensteel Turbine Casings for the rest (24 at least!)",
"Needs a Turbine Item (Inside controller GUI)"};