aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2021-12-14 14:40:37 +0000
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2021-12-14 14:40:37 +0000
commitb404dd06675bb5031c4c3095f950a83fb7d40e43 (patch)
tree97fed73f7de8943573ec4e44fe80881b359fa084
parent5d8163cffad0e1e65bcd93779aec38572c90ae78 (diff)
downloadGT5-Unofficial-b404dd06675bb5031c4c3095f950a83fb7d40e43.tar.gz
GT5-Unofficial-b404dd06675bb5031c4c3095f950a83fb7d40e43.tar.bz2
GT5-Unofficial-b404dd06675bb5031c4c3095f950a83fb7d40e43.zip
Fix PSS not forming correctly. Thanks to @Glease.
Fix ItemBasicScrubberTurbine not working in Scrubbers. Improved scrubber handling slightly.
-rw-r--r--src/Java/gtPlusPlus/core/item/general/ItemBasicScrubberTurbine.java12
-rw-r--r--src/Java/gtPlusPlus/core/recipe/RECIPES_General.java6
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/basic/GUI_PollutionCleaner.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java106
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_PowerSubStationController.java197
-rw-r--r--src/resources/assets/miscutils/lang/en_US.lang1
6 files changed, 234 insertions, 90 deletions
diff --git a/src/Java/gtPlusPlus/core/item/general/ItemBasicScrubberTurbine.java b/src/Java/gtPlusPlus/core/item/general/ItemBasicScrubberTurbine.java
index bd8159eb01..2b7b98640e 100644
--- a/src/Java/gtPlusPlus/core/item/general/ItemBasicScrubberTurbine.java
+++ b/src/Java/gtPlusPlus/core/item/general/ItemBasicScrubberTurbine.java
@@ -42,7 +42,7 @@ public class ItemBasicScrubberTurbine extends Item {
@Override
public void getSubItems(Item item, CreativeTabs tab, List list) {
- for (int i = 0; i < 2; i ++) {
+ for (int i = 0; i < 3; i ++) {
list.add(new ItemStack(item, 1, i));
}
}
@@ -69,6 +69,9 @@ public class ItemBasicScrubberTurbine extends Item {
if (meta == 1){
HEX_OxFFFFFF = Utils.rgbtoHexValue(255,128,0);
}
+ if (meta == 2){
+ HEX_OxFFFFFF = Utils.rgbtoHexValue(128,128,128);
+ }
return HEX_OxFFFFFF;
}
@@ -111,10 +114,13 @@ public class ItemBasicScrubberTurbine extends Item {
if (aStack != null) {
int aMeta = aStack.getItemDamage();
if (aMeta == 0) {
- return 2500;
+ return 2000;
}
if (aMeta == 1) {
- return 5000;
+ return 4000;
+ }
+ if (aMeta == 2) {
+ return 6000;
}
}
return 0;
diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java
index 08d8dda039..1c95467770 100644
--- a/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java
+++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_General.java
@@ -194,6 +194,12 @@ public class RECIPES_General {
"stickBronze", "plateBronze", CI.craftingToolHammer_Hard,
ItemUtils.simpleMetaStack(ModItems.itemBasicTurbine, 1, 1)
);
+ RecipeUtils.addShapedRecipe(
+ CI.craftingToolFile, "plateSteel", "stickSteel",
+ "plateSteel", "ringSteel", "plateSteel",
+ "stickSteel", "plateSteel", CI.craftingToolHammer_Hard,
+ ItemUtils.simpleMetaStack(ModItems.itemBasicTurbine, 2, 1)
+ );
}
if (Meta_GT_Proxy.sDoesVolumetricFlaskExist) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/basic/GUI_PollutionCleaner.java b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/basic/GUI_PollutionCleaner.java
index 7a9417eeb6..3b96731f00 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/basic/GUI_PollutionCleaner.java
+++ b/src/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/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java
index a4b4d902ed..23a76fb582 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java
@@ -48,7 +48,7 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
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),
@@ -147,12 +147,6 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
//Get Current Pollution Amount.
int mCurrentPollution = getCurrentChunkPollution();
- if (mCurrentPollution > 0) {
- this.mHasPollution = true;
- }
- else {
- this.mHasPollution = false;
- }
boolean isIdle = true;
//Get Inventory Item
@@ -187,6 +181,15 @@ 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);
@@ -242,9 +245,9 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
//Use a Turbine
if(hasRotor(stackRotor) && hasAirFilter(stackFilter)){
Logger.INFO("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);
+
+ mBaseEff = getBaseEfficiency(stackRotor);
+ mOptimalAirFlow = getOptimalAirFlow(stackRotor);
//Make sure we have a valid Turbine and Eff/Airflow
if (this.mBaseEff > 0 && this.mOptimalAirFlow > 0){
@@ -281,6 +284,7 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
int toRemove = 0;
Logger.INFO("mCurrentPollution[4]:"+mCurrentPollution);
+ Logger.INFO("mCurrentPollution[5]:"+reduction);
if (reduction <= mCurrentPollution){
//Clean some Air.
toRemove = reduction;
@@ -289,7 +293,8 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
//Makes sure we don't get negative pollution.
toRemove = mCurrentPollution;
}
-
+ Logger.INFO("mCurrentPollution[6]:"+toRemove);
+
//We are good to clean
if (toRemove > 0){
if (damageTurbineRotor() && damageAirFilter()){
@@ -416,33 +421,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.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 &&
@@ -516,7 +531,9 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
return false;
}
}
- catch (Throwable t){}
+ catch (Throwable t){
+ t.printStackTrace();
+ }
return false;
}
@@ -698,14 +715,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;
@@ -814,4 +831,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/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_PowerSubStationController.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_PowerSubStationController.java
index a90c962cae..78adb094ed 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_PowerSubStationController.java
+++ b/src/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");
diff --git a/src/resources/assets/miscutils/lang/en_US.lang b/src/resources/assets/miscutils/lang/en_US.lang
index c70d102235..7a021cbc26 100644
--- a/src/resources/assets/miscutils/lang/en_US.lang
+++ b/src/resources/assets/miscutils/lang/en_US.lang
@@ -3235,6 +3235,7 @@ tile.Botmium Frame Box.name=Botmium Frame Box
item.itemBasicTurbine.name=Basic Turbine
item.itemBasicTurbine_0.name=Basic Iron Turbine
item.itemBasicTurbine_1.name=Basic Bronze Turbine
+item.itemBasicTurbine_2.name=Basic Steel Turbine
interaction.voidexcess.enabled=Void Excess Enabled
interaction.voidexcess.disabled=Void Excess Disabled