aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/gregtech
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/gregtech')
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/gui/basic/GUI_PollutionCleaner.java2
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java44
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java10
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks5.java4
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java2
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java206
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaPollutionCreator.java14
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaPollutionDetector.java14
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCokeOven.java2
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java2
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_PowerSubStationController.java197
11 files changed, 340 insertions, 157 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/basic/GUI_PollutionCleaner.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/basic/GUI_PollutionCleaner.java
index 7a9417eeb6..3b96731f00 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/basic/GUI_PollutionCleaner.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/basic/GUI_PollutionCleaner.java
@@ -47,7 +47,7 @@ public class GUI_PollutionCleaner extends GT_GUIContainerMetaTile_Machine {
//Do Dumb shit
CONTAINER_PollutionCleaner aContainerCast = (CONTAINER_PollutionCleaner) this.mContainer;
mReduction = aContainerCast.mReduction;
- list.add("Reduction: "+mReduction);
+ list.add("Reduction: "+mReduction+"/s");
}
}
if (!list.isEmpty()) {
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
index d413ce44e4..356f96f7cc 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
@@ -39,6 +39,7 @@ import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEn
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_ControlCore;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBattery;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBattery;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Steam_BusInput;
import gtPlusPlus.xmod.gregtech.api.objects.MultiblockRequirements;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
@@ -1681,12 +1682,17 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_En
// Try setRecipeMap
- if (aTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
- ((GT_MetaTileEntity_Hatch_Input) aTileEntity).mRecipeMap = getRecipeMap();
- }
- if (aTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus) {
- ((GT_MetaTileEntity_Hatch_InputBus) aTileEntity).mRecipeMap = getRecipeMap();
- }
+ try {
+ if (aTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ resetRecipeMapForHatch((GT_MetaTileEntity_Hatch) aTileEntity, getRecipeMap());
+ }
+ if (aTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus) {
+ resetRecipeMapForHatch((GT_MetaTileEntity_Hatch) aTileEntity, getRecipeMap());
+ }
+ }
+ catch (Throwable t) {
+ t.printStackTrace();
+ }
if (aList.isEmpty()) {
if (aTileEntity instanceof GT_MetaTileEntity_Hatch) {
@@ -1696,8 +1702,13 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_En
updateTexture(aTileEntity, aBaseCasingIndex);
return aList.add((E) aTileEntity);
}
- } else {
+ }
+ else {
IGregTechTileEntity aCur = aTileEntity.getBaseMetaTileEntity();
+ if (aList.contains(aTileEntity)) {
+ log("Found Duplicate "+aTileEntity.getInventoryName()+" @ " + new BlockPos(aCur).getLocationString());
+ return false;
+ }
BlockPos aCurPos = new BlockPos(aCur);
boolean aExists = false;
for (E m : aList) {
@@ -1946,7 +1957,7 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_En
if (aMetaTileEntity == null) {
return false;
}
- if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input || aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus) {
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input || aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus || aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Steam_BusInput) {
return resetRecipeMapForHatch((GT_MetaTileEntity_Hatch)aMetaTileEntity, aMap);
}
else {
@@ -1954,6 +1965,7 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_En
}
}
catch (Throwable t) {
+ t.printStackTrace();
return false;
}
}
@@ -1963,7 +1975,7 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_En
return false;
}
final IMetaTileEntity aMetaTileEntity = aTileEntity;
- if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input || aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus) {
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input || aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus || aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Steam_BusInput) {
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input){
((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity).mRecipeMap = null;
((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity).mRecipeMap = aMap;
@@ -1974,7 +1986,7 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_En
log("Cleared Input Hatch.");
}
}
- else {
+ else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus) {
((GT_MetaTileEntity_Hatch_InputBus) aMetaTileEntity).mRecipeMap = null;
((GT_MetaTileEntity_Hatch_InputBus) aMetaTileEntity).mRecipeMap = aMap;
if (aMap != null && aMap.mNEIName != null) {
@@ -1984,6 +1996,16 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_En
log("Cleared Input Bus.");
}
}
+ else {
+ ((GT_MetaTileEntity_Hatch_Steam_BusInput) aMetaTileEntity).mRecipeMap = null;
+ ((GT_MetaTileEntity_Hatch_Steam_BusInput) aMetaTileEntity).mRecipeMap = aMap;
+ if (aMap != null && aMap.mNEIName != null) {
+ log("Remapped Input Bus to "+aMap.mNEIName+".");
+ }
+ else {
+ log("Cleared Input Bus.");
+ }
+ }
return true;
}
else {
@@ -2032,7 +2054,7 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_En
if (GT_MetaTileEntity_Hatch.class.isInstance(aMetaTileEntity)){
mProper.setAccessible(true);
mProper.invoke(aMetaTileEntity, aCasingID);
- log("Good Method Call for updateTexture.");
+ //log("Good Method Call for updateTexture.");
return true;
}
}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java
index 21b0efff99..7bc8e4733d 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java
@@ -282,10 +282,12 @@ public abstract class GregtechMeta_SteamMultiBase extends GregtechMeta_MultiBloc
@Override
public boolean addToMachineList(final IGregTechTileEntity aTileEntity, final int aBaseCasingIndex) {
if (aTileEntity == null) {
+ log("Invalid IGregTechTileEntity");
return false;
}
final IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
if (aMetaTileEntity == null) {
+ log("Invalid IMetaTileEntity");
return false;
}
@@ -293,16 +295,20 @@ public abstract class GregtechMeta_SteamMultiBase extends GregtechMeta_MultiBloc
boolean aDidAdd = false;
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_CustomFluidBase) {
+ log("Adding Steam Input Hatch");
aDidAdd = addToMachineListInternal(mSteamInputFluids, aMetaTileEntity, aBaseCasingIndex);
}
else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Steam_BusInput) {
- ((GT_MetaTileEntity_Hatch_InputBus) aTileEntity).mRecipeMap = getRecipeMap();
+ log("Trying to set recipe map. Type: "+(getRecipeMap() != null ? getRecipeMap().mNEIName : "Null"));
+ this.resetRecipeMapForHatch(aTileEntity, getRecipeMap());
+ log("Adding Steam Input Bus");
aDidAdd = addToMachineListInternal(mSteamInputs, aMetaTileEntity, aBaseCasingIndex);
}
else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Steam_BusOutput) {
+ log("Adding Steam Output Bus");
aDidAdd = addToMachineListInternal(mSteamOutputs, aMetaTileEntity, aBaseCasingIndex);
}
-
+
return aDidAdd;
}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks5.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks5.java
index c594ee0e5d..61c71ba552 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks5.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks5.java
@@ -60,9 +60,9 @@ extends GregtechMetaCasingBlocksAbstract {
if ((aMeta >= 0) && (aMeta < 16)) {
switch (aMeta) {
case 0:
- return TexturesGtBlock.TEXTURE_CASING_GRINDING_MILL.getIcon();
- case 1:
return TexturesGtBlock.TEXTURE_PIPE_GRINDING_MILL.getIcon();
+ case 1:
+ return TexturesGtBlock.TEXTURE_CASING_GRINDING_MILL.getIcon();
case 2:
return TexturesGtBlock.TEXTURE_GEARBOX_GRINDING_MILL.getIcon();
case 3:
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java
index 962f981d3b..b254fdbc1e 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java
@@ -85,7 +85,7 @@ public class TexturesGrinderMultiblock {
public IIcon handleCasingsGT(final IBlockAccess aWorld, final int xCoord, final int yCoord, final int zCoord, final int aSide, final GregtechMetaCasingBlocks5 ii) {
final int tMeta = aWorld.getBlockMetadata(xCoord, yCoord, zCoord);
- if (tMeta != 0) {
+ if (tMeta != 1) {
return GregtechMetaCasingBlocks5.getStaticIcon(aSide, tMeta);
}
int tInvertLeftRightMod = aSide % 2 * 2 - 1;
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java
index eb01823151..33ffd1f118 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java
@@ -1,7 +1,6 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic;
import static gregtech.api.enums.GT_Values.V;
-import static gtPlusPlus.core.util.minecraft.gregtech.PollutionUtils.mPollution;
import org.apache.commons.lang3.ArrayUtils;
@@ -42,14 +41,14 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
protected int mBaseEff = 2500;
protected int mOptimalAirFlow = 0;
protected boolean mHasPollution = false;
- protected int SLOT_ROTOR = 4;
- protected int SLOT_FILTER = 5;
+ protected int SLOT_ROTOR = 5;
+ protected int SLOT_FILTER = 6;
protected static boolean mPollutionEnabled = true;
protected boolean mSaveRotor = false;
public GregtechMetaAtmosphericReconditioner(int aID, String aName, String aNameRegional, int aTier) {
- super(aID, aName, aNameRegional, aTier, 2, "Making sure you don't live in Gwalior - Uses 2A", 2, 0, "Recycler.png", "",
+ super(aID, aName, aNameRegional, aTier, 2, "Making sure you don't live in Gwalior - Uses 2A", 3, 0, "Recycler.png", "",
new ITexture[]{
new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_SIDE_MASSFAB_ACTIVE),
new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_SIDE_MASSFAB),
@@ -60,12 +59,12 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_BOTTOM_MASSFAB_ACTIVE),
new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_BOTTOM_MASSFAB)
});
- mPollutionEnabled = PollutionUtils.mPollution();
+ mPollutionEnabled = PollutionUtils.isPollutionEnabled();
}
public GregtechMetaAtmosphericReconditioner(String aName, int aTier, String aDescription, ITexture[][][] aTextures, String aGUIName, String aNEIName) {
super(aName, aTier, 2, aDescription, aTextures, 2, 0, aGUIName, aNEIName);
- mPollutionEnabled = PollutionUtils.mPollution();
+ mPollutionEnabled = PollutionUtils.isPollutionEnabled();
}
/*public GregtechMetaAtmosphericReconditioner(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures, String aGUIName, String aNEIName) {
@@ -152,8 +151,8 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
//Get Inventory Item
ItemStack stackRotor = this.mInventory[SLOT_ROTOR];
- ItemStack stackFilter = this.mInventory[SLOT_FILTER];
-
+ ItemStack stackFilter = this.mInventory[SLOT_FILTER];
+
//Power Drain
long drainEU = maxEUInput() * maxAmperesIn();
if (aBaseMetaTileEntity.isActive() && aBaseMetaTileEntity.getStoredEU() >= drainEU){
@@ -181,34 +180,61 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
//Only try once/sec.
if (!isIdle && aTick % 20L == 0L){
+
+
+
+ for (int i=0;i<this.mInventory.length;i++) {
+ ItemStack aSlotContent = this.mInventory[i];
+ if (aSlotContent != null) {
+ Logger.INFO("Found "+aSlotContent.getDisplayName()+" in slot "+i);
+ }
+ }
+
+ for (int i=0;i<this.mInventory.length;i++) {
+ if (hasRotor(this.mInventory[i])) {
+ Logger.INFO("Found Rotor in slot "+i);
+ break;
+ }
+ }
+ for (int i=0;i<this.mInventory.length;i++) {
+ if (hasAirFilter(this.mInventory[i])) {
+ Logger.INFO("Found Filter in slot "+i);
+ break;
+ }
+ }
//Check if machine can work.
if ((aBaseMetaTileEntity.isAllowedToWork())){
+ Logger.INFO("Can work.");
//Enable machine animation/graphic
if (hasRotor(stackRotor) && hasAirFilter(stackFilter) && this.mHasPollution){
if (!this.getBaseMetaTileEntity().isActive()) {
+ Logger.INFO("Set Active.");
aBaseMetaTileEntity.setActive(true);
}
}
else if (!this.mHasPollution || mCurrentPollution <= 0 || stackRotor == null || stackFilter == null || !hasRotor(stackRotor) || !hasAirFilter(stackFilter)){
if (!this.getBaseMetaTileEntity().isActive()) {
+ Logger.INFO("Set Inactive.");
aBaseMetaTileEntity.setActive(false);
this.sendSound((byte) -122);
}
}
//If Active.
- if (aBaseMetaTileEntity.isActive()){
+ if (aBaseMetaTileEntity.isActive()){
+ Logger.INFO("Doing something.");
//Do nothing if there is no pollution.
if(this.mHasPollution && mCurrentPollution > 0){
+ Logger.INFO("Has Pollution? "+mHasPollution+", Current Pollution: "+mCurrentPollution);
//Only check every 30s.
if (!isIdle && aTick % (20L * 30) == 0L){
- mPollutionEnabled = PollutionUtils.mPollution();
+ mPollutionEnabled = PollutionUtils.isPollutionEnabled();
//Clear out pollution if it's disabled, because I am a nice gal.
- if (!mPollution()) {
+ if (!PollutionUtils.isPollutionEnabled()) {
PollutionUtils.nullifyPollution(this.getBaseMetaTileEntity());
}
}
@@ -218,18 +244,18 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
//Use a Turbine
if(hasRotor(stackRotor) && hasAirFilter(stackFilter)){
- Logger.WARNING("Found Turbine.");
- mBaseEff = (int) ((50.0F + (10.0F * ((GT_MetaGenerated_Tool) stackRotor.getItem()).getToolCombatDamage(stackRotor))) * 100);
- mOptimalAirFlow = (int) Math.max(Float.MIN_NORMAL, ((GT_MetaGenerated_Tool) stackRotor.getItem()).getToolStats(stackRotor).getSpeedMultiplier()
- * GT_MetaGenerated_Tool.getPrimaryMaterial(stackRotor).mToolSpeed * 50);
+ Logger.INFO("Found Turbine.");
+
+ mBaseEff = getBaseEfficiency(stackRotor);
+ mOptimalAirFlow = getOptimalAirFlow(stackRotor);
//Make sure we have a valid Turbine and Eff/Airflow
if (this.mBaseEff > 0 && this.mOptimalAirFlow > 0){
//Utils.LOG_WARNING("Pollution Cleaner [5]");
//Log Debug information.
- Logger.WARNING("mBaseEff[1]:"+mBaseEff);
- Logger.WARNING("mOptimalAirFlow[1]:"+mOptimalAirFlow);
+ Logger.INFO("mBaseEff[1]:"+mBaseEff);
+ Logger.INFO("mOptimalAirFlow[1]:"+mOptimalAirFlow);
//Calculate The Voltage we are running
long tVoltage = drainEU;
@@ -244,20 +270,21 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
//If no sides are free, how will you process the atmosphere?
if (mAirSides > 0){
reduction += (((Math.max((tTier-2), 1)*2)*50)*mAirSides); //Was originally *100
- Logger.WARNING("mPollutionReduction[1]:"+reduction);
+ Logger.INFO("mPollutionReduction[1]:"+reduction);
//I stole this code
reduction = (MathUtils.safeInt((long)reduction*this.mBaseEff)/100000)*mAirSides*Math.max((tTier-2), 1);
- Logger.WARNING("reduction[2]:"+reduction);
+ Logger.INFO("reduction[2]:"+reduction);
reduction = MathUtils.safeInt(((long)reduction/100)*this.mOptimalAirFlow);
- Logger.WARNING("reduction[3]:"+reduction);
+ Logger.INFO("reduction[3]:"+reduction);
mPollutionReduction = reduction;
//Set a temp to remove variable to aleviate duplicate code.
int toRemove = 0;
- Logger.WARNING("mCurrentPollution[4]:"+mCurrentPollution);
+ Logger.INFO("mCurrentPollution[4]:"+mCurrentPollution);
+ Logger.INFO("mCurrentPollution[5]:"+reduction);
if (reduction <= mCurrentPollution){
//Clean some Air.
toRemove = reduction;
@@ -265,17 +292,20 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
else {
//Makes sure we don't get negative pollution.
toRemove = mCurrentPollution;
- }
+ }
+
+ toRemove = toRemove/2;
+ Logger.INFO("mCurrentPollution[6]:"+toRemove);
//We are good to clean
if (toRemove > 0){
if (damageTurbineRotor() && damageAirFilter()){
Logger.INFO("Removing "+toRemove+" pollution");
removePollution(mSaveRotor ? (toRemove/2) : toRemove);
- Logger.WARNING("mNewPollution[4]:"+getCurrentChunkPollution());
+ Logger.INFO("mNewPollution[4]:"+getCurrentChunkPollution());
}
else {
- Logger.WARNING("Could not damage turbine rotor or Air Filter.");
+ Logger.INFO("Could not damage turbine rotor or Air Filter.");
aBaseMetaTileEntity.setActive(false);
}
} //End of pollution removal block.
@@ -370,12 +400,18 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
public boolean hasRotor(ItemStack rotorStack){
if(rotorStack != null){
if (rotorStack.getItem() instanceof ItemBasicScrubberTurbine) {
+ //Logger.INFO("Found Basic Turbine Rotor.");
return true;
}
- if (rotorStack.getItem() instanceof GT_MetaGenerated_Tool && rotorStack.getItemDamage() >= 170 && rotorStack.getItemDamage() <= 179){
+ else if (rotorStack.getItem() instanceof GT_MetaGenerated_Tool && rotorStack.getItemDamage() >= 170 && rotorStack.getItemDamage() <= 179){
+ //Logger.INFO("Found Turbine Rotor.");
return true;
}
+ else {
+ //Logger.INFO("Found: "+rotorStack.getDisplayName()+":"+rotorStack.getItemDamage());
+ }
}
+ //Logger.INFO("Found No Turbine Rotor.");
return false;
}
@@ -387,33 +423,43 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
if (rotorStack == null) {
return false;
}
- else {
- if(rotorStack.getItem() instanceof GT_MetaGenerated_Tool_01) {
- Materials t1 = GT_MetaGenerated_Tool.getPrimaryMaterial(rotorStack);
- Materials t2 = GT_MetaGenerated_Tool.getSecondaryMaterial(rotorStack);
- if (t1 == Materials._NULL && t2 == Materials._NULL){
- creativeRotor = true;
- }
- }
- }
-
- if (rotorStack.getItem() instanceof ItemBasicScrubberTurbine) {
+ else if (rotorStack.getItem() instanceof ItemBasicScrubberTurbine) {
long currentUse = ItemBasicScrubberTurbine.getFilterDamage(rotorStack);
//Remove broken Filter
- if (rotorStack.getItemDamage() == 0 && currentUse >= 2500-10){
+ if (rotorStack.getItemDamage() == 0 && currentUse >= 2000-10){
+ Logger.INFO("Depleting ItemBasicScrubberTurbine T1");
this.mInventory[this.SLOT_FILTER] = null;
return false;
}
- else if (rotorStack.getItemDamage() == 1 && currentUse >= 5000-10){
+ else if (rotorStack.getItemDamage() == 1 && currentUse >= 4000-10){
+ Logger.INFO("Depleting ItemBasicScrubberTurbine T2");
+ this.mInventory[this.SLOT_FILTER] = null;
+ return false;
+ }
+ else if (rotorStack.getItemDamage() == 2 && currentUse >= 6000-10){
+ Logger.INFO("Depleting ItemBasicScrubberTurbine T3");
this.mInventory[this.SLOT_FILTER] = null;
return false;
}
else {
//Do Damage
- ItemAirFilter.setFilterDamage(rotorStack, currentUse+10);
- Logger.WARNING("Rotor Damage: "+currentUse);
+ Logger.INFO("Damaging ItemBasicScrubberTurbine");
+ ItemBasicScrubberTurbine.setFilterDamage(rotorStack, currentUse+10);
+ Logger.INFO("Rotor Damage: "+currentUse);
return true;
}
+ }
+ else if(rotorStack.getItem() instanceof GT_MetaGenerated_Tool_01) {
+ Materials t1 = GT_MetaGenerated_Tool.getPrimaryMaterial(rotorStack);
+ Materials t2 = GT_MetaGenerated_Tool.getSecondaryMaterial(rotorStack);
+ if (t1 == Materials._NULL && t2 == Materials._NULL){
+ Logger.INFO("Found creative rotor.");
+ creativeRotor = true;
+ }
+ }
+ else {
+ Logger.INFO("Bad item in rotor slot.");
+ return false;
}
if(mInventory[SLOT_ROTOR].getItem() instanceof GT_MetaGenerated_Tool_01 &&
@@ -424,23 +470,23 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
double fDam = Math.floor(Math.abs(MathUtils.randFloat(1f, 2f) - MathUtils.randFloat(1f, 2f)) * (1f + 2f - 1f) + 1f);
damageValue -= fDam;
- //Logger.WARNING("Trying to do "+damageValue+" damage to the rotor. ["+fDam+"]");
+ //Logger.INFO("Trying to do "+damageValue+" damage to the rotor. ["+fDam+"]");
/*Materials M1 = GT_MetaGenerated_Tool.getPrimaryMaterial(this.mInventory[this.SLOT_ROTOR]);
Materials M2 = GT_MetaGenerated_Tool.getSecondaryMaterial(this.mInventory[this.SLOT_ROTOR]);
- Logger.WARNING("Trying to do "+damageValue+" damage to the rotor. [2]");*/
+ Logger.INFO("Trying to do "+damageValue+" damage to the rotor. [2]");*/
//Damage Rotor
//int rotorDurability = this.mInventory[this.SLOT_ROTOR].getItemDamage();
long rotorDamage = creativeRotor ? 0 : GT_MetaGenerated_Tool.getToolDamage(this.mInventory[this.SLOT_ROTOR]);
long rotorDurabilityMax = creativeRotor ? Integer.MAX_VALUE : GT_MetaGenerated_Tool.getToolMaxDamage(this.mInventory[this.SLOT_ROTOR]);
long rotorDurability = (rotorDurabilityMax - rotorDamage);
- Logger.WARNING("Rotor Damage: "+rotorDamage + " | Max Durability: "+rotorDurabilityMax+" | "+" Remaining Durability: "+rotorDurability);
+ Logger.INFO("Rotor Damage: "+rotorDamage + " | Max Durability: "+rotorDurabilityMax+" | "+" Remaining Durability: "+rotorDurability);
if (rotorDurability >= damageValue){
if (!mSaveRotor){
- Logger.WARNING("Damaging Rotor.");
+ Logger.INFO("Damaging Rotor.");
if (!creativeRotor)
GT_ModHandler.damageOrDechargeItem(this.mInventory[this.SLOT_ROTOR], (int) damageValue, 0, null);
@@ -454,7 +500,7 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
}
}
else {
- Logger.WARNING("Damaging Rotor.");
+ Logger.INFO("Damaging Rotor.");
if (rotorDurability > 1000){
if (!creativeRotor)
GT_ModHandler.damageOrDechargeItem(this.mInventory[this.SLOT_ROTOR], (int) damageValue/2, 0, null);
@@ -472,47 +518,46 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
}
if (rotorDurability <= 0 && !mSaveRotor && !creativeRotor) {
- Logger.WARNING("Destroying Rotor.");
+ Logger.INFO("Destroying Rotor.");
this.mInventory[this.SLOT_ROTOR] = null;
return false;
}
else if (rotorDurability <= 0 && mSaveRotor) {
- Logger.WARNING("Saving Rotor.");
+ Logger.INFO("Saving Rotor.");
return false;
}
}else {
- Logger.WARNING("Bad Rotor.");
+ Logger.INFO("Bad Rotor.");
return false;
}
}
- catch (Throwable t){}
+ catch (Throwable t){
+ t.printStackTrace();
+ }
return false;
}
public int getFreeSpaces(){
int mAir = 0;
IGregTechTileEntity aBaseMetaTileEntity = this.getBaseMetaTileEntity();
- int x = aBaseMetaTileEntity.getXCoord();
- int y = aBaseMetaTileEntity.getYCoord();
- int z = aBaseMetaTileEntity.getZCoord();
- if(aBaseMetaTileEntity.getAirOffset(x+1, y, z)){
+ if(aBaseMetaTileEntity.getAirOffset(1, 0, 0)){
mAir++;
}
- if(aBaseMetaTileEntity.getAirOffset(x-1, y, z)){
+ if(aBaseMetaTileEntity.getAirOffset(-1, 0, 0)){
mAir++;
}
- if(aBaseMetaTileEntity.getAirOffset(x, y, z+1)){
+ if(aBaseMetaTileEntity.getAirOffset(0, 0, 1)){
mAir++;
}
- if(aBaseMetaTileEntity.getAirOffset(x, y, z-1)){
+ if(aBaseMetaTileEntity.getAirOffset(0, 0, -1)){
mAir++;
}
- if(aBaseMetaTileEntity.getAirOffset(x, y+1, z)){
+ if(aBaseMetaTileEntity.getAirOffset(0, 1, 0)){
mAir++;
}
- if(aBaseMetaTileEntity.getAirOffset(x, y-1, z)){
+ if(aBaseMetaTileEntity.getAirOffset(0, -1, 0)){
mAir++;
}
return mAir;
@@ -526,8 +571,10 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
if (this.mTier < 7) {
int startPollution = getCurrentChunkPollution();
+ Logger.INFO("Current Chunk Pollution: "+startPollution);
PollutionUtils.removePollution(this.getBaseMetaTileEntity(), toRemove);
int after = getCurrentChunkPollution();
+ Logger.INFO("Current Chunk Pollution: "+after);
return (after<startPollution);
}
else {
@@ -572,7 +619,7 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
continue;
}
- Logger.WARNING("Trying to remove pollution from chunk "+r.xPosition+", "+r.zPosition+" | "+startPollution);
+ Logger.INFO("Trying to remove pollution from chunk "+r.xPosition+", "+r.zPosition+" | "+startPollution);
int after = 0;
boolean isMainChunk = r.isAtLocation(mainChunkX, mainChunkZ);
@@ -587,7 +634,7 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
if (startPollution - after > 0) {
totalRemoved += (startPollution - after);
}
- Logger.WARNING("Removed "+(startPollution - after)+" pollution from chunk "+r.xPosition+", "+r.zPosition+" | "+after);
+ Logger.INFO("Removed "+(startPollution - after)+" pollution from chunk "+r.xPosition+", "+r.zPosition+" | "+after);
}
return totalRemoved > 0 && chunksWithRemoval > 0;
}
@@ -650,7 +697,7 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
else {
//Do Damage
ItemAirFilter.setFilterDamage(filter, currentUse+1);
- Logger.WARNING("Filter Damage: "+currentUse);
+ Logger.INFO("Filter Damage: "+currentUse);
return true;
}
}
@@ -670,14 +717,14 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
@Override
public boolean canInsertItem(int aIndex, ItemStack aStack, int aSide) {
- if (aIndex == 5) {
+ if (aIndex == SLOT_FILTER) {
if (aStack.getItem() instanceof ItemAirFilter) {
Logger.INFO("Inserting Air Filter into "+aIndex);
return true;
}
}
- if (aIndex == 4) {
- if (this.mInventory[6] != null) {
+ if (aIndex == SLOT_ROTOR) {
+ if (this.mInventory[7] != null) {
Logger.INFO("Found conveyor, can automate turbines. Inserting into "+aIndex);
if (aStack.getItem() instanceof ItemBasicScrubberTurbine) {
return true;
@@ -786,4 +833,35 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
super.setItemNBT(aNBT);
}
+ private static ItemStack[] sGregTurbines;
+
+ public static ItemStack getTieredTurbine(int aTier) {
+ if (sGregTurbines == null) {
+ sGregTurbines = new ItemStack[3];
+ sGregTurbines[0] = GT_MetaGenerated_Tool.sInstances.get("gt.metatool.01").getToolWithStats(GT_MetaGenerated_Tool_01.TURBINE_SMALL, 1, Materials.Iron, Materials.Iron, null);
+ sGregTurbines[1] = GT_MetaGenerated_Tool.sInstances.get("gt.metatool.01").getToolWithStats(GT_MetaGenerated_Tool_01.TURBINE_SMALL, 1, Materials.Bronze, Materials.Bronze, null);
+ sGregTurbines[2] = GT_MetaGenerated_Tool.sInstances.get("gt.metatool.01").getToolWithStats(GT_MetaGenerated_Tool_01.TURBINE_SMALL, 1, Materials.Steel, Materials.Steel, null);
+ }
+ else {
+ return sGregTurbines[aTier];
+ }
+
+ return null;
+ }
+
+ public int getBaseEfficiency(ItemStack aStackRotor) {
+ if (aStackRotor.getItem() instanceof ItemBasicScrubberTurbine) {
+ return getBaseEfficiency(getTieredTurbine(aStackRotor.getItemDamage()));
+ }
+ return (int) ((50.0F + (10.0F * ((GT_MetaGenerated_Tool) aStackRotor.getItem()).getToolCombatDamage(aStackRotor))) * 100);
+ }
+
+ public int getOptimalAirFlow(ItemStack aStackRotor) {
+ if (aStackRotor.getItem() instanceof ItemBasicScrubberTurbine) {
+ return getOptimalAirFlow(getTieredTurbine(aStackRotor.getItemDamage()));
+ }
+ return (int) Math.max(Float.MIN_NORMAL, ((GT_MetaGenerated_Tool) aStackRotor.getItem()).getToolStats(aStackRotor).getSpeedMultiplier()
+ * GT_MetaGenerated_Tool.getPrimaryMaterial(aStackRotor).mToolSpeed * 50);
+ }
+
} \ No newline at end of file
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaPollutionCreator.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaPollutionCreator.java
index 5f55e080ad..65217f9e53 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaPollutionCreator.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaPollutionCreator.java
@@ -1,24 +1,20 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.world.World;
-
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Utility;
-
-import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.lib.CORE;
-import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.minecraft.PlayerUtils;
import gtPlusPlus.core.util.minecraft.gregtech.PollutionUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMetaTileEntity;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.world.World;
public class GregtechMetaPollutionCreator extends GregtechMetaTileEntity {
@@ -189,7 +185,7 @@ public class GregtechMetaPollutionCreator extends GregtechMetaTileEntity {
public int pollutionMultiplier = 1;
private void showPollution(final World worldIn, final EntityPlayer playerIn){
- if(!PollutionUtils.mPollution()){
+ if(!PollutionUtils.isPollutionEnabled()){
PlayerUtils.messagePlayer(playerIn, "This block is useless, Pollution is disabled.");
}
else {
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaPollutionDetector.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaPollutionDetector.java
index 10319f2269..69a4f96708 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaPollutionDetector.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaPollutionDetector.java
@@ -1,25 +1,21 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.world.World;
-
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Utility;
-
-import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.lib.CORE;
-import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.core.util.minecraft.PlayerUtils;
import gtPlusPlus.core.util.minecraft.gregtech.PollutionUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMetaTileEntity;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.world.World;
public class GregtechMetaPollutionDetector extends GregtechMetaTileEntity {
@@ -190,7 +186,7 @@ public class GregtechMetaPollutionDetector extends GregtechMetaTileEntity {
}
private void showPollution(final World worldIn, final EntityPlayer playerIn){
- if(!PollutionUtils.mPollution()){
+ if(!PollutionUtils.isPollutionEnabled()){
PlayerUtils.messagePlayer(playerIn, "This block is useless, Pollution is disabled.");
}
else {
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCokeOven.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCokeOven.java
index 21caf135b1..63dd3d62dc 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCokeOven.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCokeOven.java
@@ -81,7 +81,7 @@ extends GregtechMeta_MultiBlockBase {
if (STRUCTURE_DEFINITION == null) {
STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialCokeOven>builder()
.addShape(mName, transpose(new String[][]{
- {"CCC", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC"},
{"HHH", "H-H", "HHH"},
{"C~C", "CCC", "CCC"},
}))
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java
index c84c5e162e..323efa2193 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java
@@ -148,6 +148,8 @@ extends GregtechMeta_MultiBlockBase {
return addToMachineList(aTileEntity, aBaseCasingIndex);
} else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
return addToMachineList(aTileEntity, aBaseCasingIndex);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ return addToMachineList(aTileEntity, aBaseCasingIndex);
}
}
return false;
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_PowerSubStationController.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_PowerSubStationController.java
index a90c962cae..78adb094ed 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_PowerSubStationController.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_PowerSubStationController.java
@@ -5,6 +5,9 @@ import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofChain;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.onElementPass;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdderOptional;
+
+import java.util.function.Predicate;
import com.gtnewhorizon.structurelib.StructureLibAPI;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
@@ -20,6 +23,7 @@ import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Dynamo;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Utility;
@@ -46,6 +50,12 @@ import net.minecraft.world.World;
public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMeta_MultiBlockBase<GregtechMetaTileEntity_PowerSubStationController> {
+ private static enum TopState {
+ MayBeTop,
+ Top,
+ NotTop
+ }
+
protected long mAverageEuUsage = 0;
protected long mTotalEnergyAdded = 0;
protected long mTotalEnergyConsumed = 0;
@@ -57,7 +67,8 @@ public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMe
private int mCasing;
private int[] cellCount = new int[6];
- private IStructureDefinition<GregtechMetaTileEntity_PowerSubStationController> STRUCTURE_DEFINITION = null;
+ private TopState topState = TopState.MayBeTop;
+ private static IStructureDefinition<GregtechMetaTileEntity_PowerSubStationController> STRUCTURE_DEFINITION = null;
public GregtechMetaTileEntity_PowerSubStationController(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -76,19 +87,19 @@ public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMe
protected GT_Multiblock_Tooltip_Builder createTooltip() {
GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
tt.addMachineType(getMachineType())
- .addInfo("[BUG] GUI does not work until structure is assembled correctly. (Do Not Report issue)")
- .addInfo("Consumes " + this.ENERGY_TAX + "% of the average voltage of all energy type hatches")
- .addInfo("Does not require maintenance")
- .addInfo("Can be built with variable height between " + (CELL_HEIGHT_MIN + 2) + "-" + (CELL_HEIGHT_MAX + 2) + "")
- .addInfo("Hatches can be placed nearly anywhere")
- .addInfo("HV Energy/Dynamo Hatches are the lowest tier you can use")
- .addInfo("Supports voltages >= UHV using MAX tier components.")
- .addSeparator()
- .addController("Bottom Center")
- .addCasingInfo("Sub-Station External Casings", 10)
- .addDynamoHatch("Any Casing", 1)
- .addEnergyHatch("Any Casing", 1)
- .toolTipFinisher(CORE.GT_Tooltip_Builder);
+ .addInfo("[BUG] GUI does not work until structure is assembled correctly. (Do Not Report issue)")
+ .addInfo("Consumes " + this.ENERGY_TAX + "% of the average voltage of all energy type hatches")
+ .addInfo("Does not require maintenance")
+ .addInfo("Can be built with variable height between " + (CELL_HEIGHT_MIN + 2) + "-" + (CELL_HEIGHT_MAX + 2) + "")
+ .addInfo("Hatches can be placed nearly anywhere")
+ .addInfo("HV Energy/Dynamo Hatches are the lowest tier you can use")
+ .addInfo("Supports voltages >= UHV using MAX tier components.")
+ .addSeparator()
+ .addController("Bottom Center")
+ .addCasingInfo("Sub-Station External Casings", 10)
+ .addDynamoHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .toolTipFinisher(CORE.GT_Tooltip_Builder);
return tt;
}
@@ -202,62 +213,100 @@ public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMe
if (STRUCTURE_DEFINITION == null) {
STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_PowerSubStationController>builder()
.addShape(mName + "bottom", transpose(new String[][]{
- {"CC~CC", "CCCCC", "CCCCC", "CCCCC", "CCCCC"}
+ {"CC~CC", "CCCCC", "CCCCC", "CCCCC", "CCCCC"}
+ }))
+ .addShape(mName + "layer", transpose(new String[][]{
+ {"CCCCC", "CIIIC", "CIIIC", "CIIIC", "CCCCC"}
}))
.addShape(mName + "mid", transpose(new String[][]{
- {"CCCCC", "CHHHC", "CHHHC", "CHHHC", "CCCCC"}
+ {"CCCCC", "CHHHC", "CHHHC", "CHHHC", "CCCCC"}
}))
.addShape(mName + "top", transpose(new String[][]{
- {"CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC"}
+ {"CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC"}
}))
.addElement(
'C',
ofChain(
ofHatchAdder(
GregtechMetaTileEntity_PowerSubStationController::addPowerSubStationList, TAE.GTPP_INDEX(24), 1
- ),
+ ),
onElementPass(
x -> ++x.mCasing,
ofBlock(
ModBlocks.blockCasings2Misc, 8
+ )
)
)
)
- )
.addElement(
- 'H',
+ 'I',
ofChain(
- onElementPass(
- x -> ++x.cellCount[0],
- ofCell(4)
- ),
- onElementPass(
- x -> ++x.cellCount[1],
- ofCell(5)
- ),
- onElementPass(
- x -> ++x.cellCount[2],
- ofCell(6)
- ),
- onElementPass(
- x -> ++x.cellCount[3],
- ofCell(7)
- ),
- onElementPass(
- x -> ++x.cellCount[4],
- ofCell(8)
- ),
- onElementPass(
- x -> ++x.cellCount[5],
- ofCell(9)
+ onlyIf(
+ x -> x.topState != TopState.NotTop,
+ onElementPass(
+ x -> x.topState = TopState.Top,
+ ofHatchAdderOptional(GregtechMetaTileEntity_PowerSubStationController::addPowerSubStationList, TAE.GTPP_INDEX(24), 1, ModBlocks.blockCasings2Misc, 8)
+ )
+ ),
+ onlyIf(
+ x -> x.topState != TopState.Top,
+ onElementPass(
+ x -> x.topState = TopState.NotTop,
+ ofChain(
+ onElementPass(
+ x -> ++x.cellCount[0],
+ ofCell(4)
+ ),
+ onElementPass(
+ x -> ++x.cellCount[1],
+ ofCell(5)
+ ),
+ onElementPass(
+ x -> ++x.cellCount[2],
+ ofCell(6)
+ ),
+ onElementPass(
+ x -> ++x.cellCount[3],
+ ofCell(7)
+ ),
+ onElementPass(
+ x -> ++x.cellCount[4],
+ ofCell(8)
+ ),
+ onElementPass(
+ x -> ++x.cellCount[5],
+ ofCell(9)
+ )
+ )
+ )
+ )
)
)
- )
+ .addElement('H', ofCell(4))
.build();
}
return STRUCTURE_DEFINITION;
}
+ public static <T> IStructureElement<T> onlyIf(Predicate<? super T> predicate, IStructureElement<? super T> downstream) {
+ return new IStructureElement<T>() {
+ @Override
+ public boolean check(T t, World world, int x, int y, int z) {
+ return predicate.test(t) && downstream.check(t, world, x, y, z);
+ }
+
+ @Override
+ public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) {
+ return predicate.test(t) && downstream.spawnHint(t, world, x, y, z, trigger);
+ }
+
+ @Override
+ public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) {
+ return predicate.test(t) && downstream.placeBlock(t, world, x, y, z, trigger);
+ }
+ };
+ }
+
public static <T> IStructureElement<T> ofCell(int aIndex) {
return new IStructureElement<T>() {
@Override
@@ -289,45 +338,74 @@ public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMe
@Override
public void construct(ItemStack stackSize, boolean hintsOnly) {
int layer = Math.min(stackSize.stackSize + 3, 18);
+ log("Layer: "+layer);
+ log("Building 0");
buildPiece(mName + "bottom" , stackSize, hintsOnly, 2, 0, 0);
+ log("Built 0");
for (int i = 1; i < layer - 1; i++) {
+ log("Building "+i);
buildPiece(mName + "mid", stackSize, hintsOnly, 2, i, 0);
+ log("Built "+i);
}
+ log("Building "+(layer - 1));
buildPiece(mName + "top", stackSize, hintsOnly, 2, layer - 1, 0);
+ log("Built "+(layer - 1));
}
@Override
public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
mCasing = 0;
+ mEnergyHatches.clear();
+ mDynamoHatches.clear();
+ mTecTechEnergyHatches.clear();
+ mTecTechDynamoHatches.clear();
mAllEnergyHatches.clear();
mAllDynamoHatches.clear();
for (int i = 0; i < 6; i++) {
cellCount[i] = 0;
}
- if (!checkPiece(mName + "bottom", 2, 0, 0))
+ log("Checking 0");
+ if (!checkPiece(mName + "bottom", 2, 0, 0)) {
+ log("Failed on Layer 0");
return false;
+ }
+ log("Pass 0");
int layer = 1;
- while (checkPiece(mName + "mid", 2, layer, 0)) {
+ topState = TopState.MayBeTop;
+ while (true) {
+ if (!checkPiece(mName + "layer", 2, layer, 0))
+ return false;
layer ++;
+ if (topState == TopState.Top)
+ break; // top found, break out
+ topState = TopState.MayBeTop;
+ if (layer > 18)
+ return false; // too many layers
}
- if (layer > 19 || !checkPiece(mName + "top", 2, layer, 0))
- return false;
int level = 0;
for (int i = 0; i < 6; i++) {
if (cellCount[i] != 0) {
- if (level == 0) level = i + 4;
- else return false;
+ if (level == 0) {
+ level = i + 4;
+ }
+ else {
+ return false;
+ }
}
}
int tier = getMaxHatchTier(level);
long volSum = 0;
for (GT_MetaTileEntity_Hatch hatch : mAllDynamoHatches) {
- if (hatch.mTier > tier || hatch.mTier < 3) return false;
- volSum += (8 << (hatch.mTier * 2));
+ if (hatch.mTier > tier || hatch.mTier < 3) {
+ return false;
+ }
+ volSum += (8L << (hatch.mTier * 2));
}
for (GT_MetaTileEntity_Hatch hatch : mAllEnergyHatches) {
- if (hatch.mTier > tier || hatch.mTier < 3) return false;
- volSum += (8 << (hatch.mTier * 2));
+ if (hatch.mTier > tier || hatch.mTier < 3) {
+ return false;
+ }
+ volSum += (8L << (hatch.mTier * 2));
}
mBatteryCapacity = getCapacityFromCellTier(level) * cellCount[level - 4];
if (mAllEnergyHatches.size() + mAllDynamoHatches.size() > 0) {
@@ -345,9 +423,14 @@ public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMe
IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy) {
return addToMachineList(aTileEntity, aBaseCasingIndex);
- } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Dynamo) {
+ }
+ else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Dynamo) {
return addToMachineList(aTileEntity, aBaseCasingIndex);
- } if (LoadedMods.TecTech) {
+ }
+ else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance) {
+ return addToMachineList(aTileEntity, aBaseCasingIndex);
+ }
+ else if (LoadedMods.TecTech) {
if (isThisHatchMultiDynamo(aMetaTileEntity)) {
return addToMachineList(aTileEntity, aBaseCasingIndex);
} else if (isThisHatchMultiEnergy(aMetaTileEntity)) {
@@ -406,7 +489,7 @@ public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMe
@Override
public void loadNBTData(NBTTagCompound aNBT) {
-
+
// Best not to get a long if the Tag Map is holding an int
if (aNBT.hasKey("mAverageEuUsage")) {
this.mAverageEuUsage = aNBT.getLong("mAverageEuUsage");