From 5d8163cffad0e1e65bcd93779aec38572c90ae78 Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Tue, 14 Dec 2021 13:21:43 +0000 Subject: Fix Steam Grinder not forming. Fix scrubbers using incorrect slots for turbines and filters. Cleaned up PollutionUtils. --- .../util/minecraft/gregtech/PollutionUtils.java | 174 ++++----------------- 1 file changed, 30 insertions(+), 144 deletions(-) (limited to 'src/Java/gtPlusPlus/core') diff --git a/src/Java/gtPlusPlus/core/util/minecraft/gregtech/PollutionUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/gregtech/PollutionUtils.java index 2ae2a9f1de..242a63c712 100644 --- a/src/Java/gtPlusPlus/core/util/minecraft/gregtech/PollutionUtils.java +++ b/src/Java/gtPlusPlus/core/util/minecraft/gregtech/PollutionUtils.java @@ -2,17 +2,13 @@ package gtPlusPlus.core.util.minecraft.gregtech; import static gtPlusPlus.core.lib.CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - import org.apache.commons.lang3.ArrayUtils; import gregtech.GT_Mod; import gregtech.api.enums.OrePrefixes; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.interfaces.tileentity.IHasWorldObjectAndCoords; -import gregtech.common.GT_Proxy; +import gregtech.common.GT_Pollution; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.core.item.base.cell.BaseItemCell; @@ -21,7 +17,6 @@ import gtPlusPlus.core.material.MISC_MATERIALS; import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; -import gtPlusPlus.core.util.reflect.ReflectionUtils; import net.minecraft.item.ItemStack; import net.minecraft.world.chunk.Chunk; import net.minecraftforge.fluids.FluidStack; @@ -30,12 +25,6 @@ public class PollutionUtils { private static boolean mIsPollutionEnabled = true; - private static Method mAddPollution; - private static Method mAddPollution2; - - private static Method mGetPollution; - private static Method mGetPollution2; - public static AutoMap mPollutionFluidStacks = new AutoMap(); static { @@ -45,85 +34,37 @@ public class PollutionUtils { mIsPollutionEnabled = false; } } - + public static boolean isPollutionEnabled() { return mIsPollutionEnabled; } - public static boolean mPollution() { - try { - GT_Proxy GT_Pollution = GT_Mod.gregtechproxy; - if (GT_Pollution != null) { - Field mPollution = ReflectionUtils.getField(GT_Pollution.getClass(), "mPollution"); - if (mPollution != null) { - return mPollution.getBoolean(GT_Pollution); - } - } - } catch (SecurityException | IllegalArgumentException | IllegalAccessException e) { - } - return false; + private static boolean mPollution() { + return GT_Mod.gregtechproxy.mPollution; } public static boolean addPollution(IGregTechTileEntity te, int pollutionValue) { - if (mIsPollutionEnabled) - try { - if (te == null) { - return false; - } - if (mAddPollution != null) { - mAddPollution.invoke(null, te, pollutionValue); - } - Class GT_Pollution = ReflectionUtils.getClass("gregtech.common.GT_Pollution"); - if (GT_Pollution != null) { - Method addPollution = ReflectionUtils.getMethod(GT_Pollution, "addPollution", IGregTechTileEntity.class, int.class); - if (addPollution != null) { - mAddPollution = addPollution; - addPollution.invoke(null, te, pollutionValue); - return true; - } - } - } catch (SecurityException | IllegalAccessException - | IllegalArgumentException | InvocationTargetException e) { - } + if (mIsPollutionEnabled) { + GT_Pollution.addPollution(te, pollutionValue); + return true; + } return false; } public static boolean addPollution(IHasWorldObjectAndCoords aTileOfSomeSort, int pollutionValue) { - if (mIsPollutionEnabled) - try { - if (aTileOfSomeSort == null) { - return false; - } - IHasWorldObjectAndCoords j = (IHasWorldObjectAndCoords) aTileOfSomeSort; - Chunk c = j.getWorld().getChunkFromBlockCoords(j.getXCoord(), j.getZCoord()); - return addPollution(c, pollutionValue); - } catch (SecurityException | IllegalArgumentException e) { - } + if (mIsPollutionEnabled) { + IHasWorldObjectAndCoords j = (IHasWorldObjectAndCoords) aTileOfSomeSort; + Chunk c = j.getWorld().getChunkFromBlockCoords(j.getXCoord(), j.getZCoord()); + return addPollution(c, pollutionValue); + } return false; } public static boolean addPollution(Chunk aChunk, int pollutionValue) { - if (mIsPollutionEnabled) - try { - if (aChunk == null) { - return false; - } - if (mAddPollution2 != null) { - mAddPollution2.invoke(null, aChunk, pollutionValue); - return true; - } - Class GT_Pollution = ReflectionUtils.getClass("gregtech.common.GT_Pollution"); - if (GT_Pollution != null) { - Method addPollution = ReflectionUtils.getMethod(GT_Pollution, "addPollution", Chunk.class, int.class); - if (addPollution != null) { - mAddPollution2 = addPollution; - mAddPollution2.invoke(null, aChunk, pollutionValue); - return true; - } - } - } catch (SecurityException | IllegalAccessException - | IllegalArgumentException | InvocationTargetException e) { - } + if (mIsPollutionEnabled) { + GT_Pollution.addPollution(aChunk, pollutionValue); + return true; + } return false; } @@ -155,85 +96,30 @@ public class PollutionUtils { return nullifyPollution(c); } - public static boolean nullifyPollution(Chunk aChunk) { - try { + public static boolean nullifyPollution(Chunk aChunk) { + if (mIsPollutionEnabled) { if (aChunk == null) { return false; } - long getCurrentPollution = getPollution(aChunk); + int getCurrentPollution = getPollution(aChunk); if (getCurrentPollution <= 0) { return false; } else { - if (mAddPollution2 != null) { - mAddPollution2.invoke(null, aChunk, -getCurrentPollution); - return true; - } - else { - Class GT_Pollution = ReflectionUtils.getClass("gregtech.common.GT_Pollution"); - if (GT_Pollution != null) { - Method addPollution = ReflectionUtils.getMethod(GT_Pollution, "addPollution", Chunk.class, int.class); - if (addPollution != null) { - mAddPollution2 = addPollution; - mAddPollution2.invoke(null, aChunk, 0); - return true; - } - } - } + return removePollution(aChunk, getCurrentPollution); } - - } catch (SecurityException | IllegalAccessException - | IllegalArgumentException | InvocationTargetException e) { - } + } return false; } public static int getPollution(IGregTechTileEntity te) { - if (MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) - try { - if (te == null) { - return 0; - } - if (mGetPollution != null) { - mGetPollution.invoke(null, te); - } - Class GT_Pollution = ReflectionUtils.getClass("gregtech.common.GT_Pollution"); - if (GT_Pollution != null) { - Method addPollution = ReflectionUtils.getMethod(GT_Pollution, "getPollution", IGregTechTileEntity.class); - if (addPollution != null) { - mGetPollution = addPollution; - return (int) addPollution.invoke(null, te); - } - } - } catch (SecurityException | IllegalAccessException - | IllegalArgumentException | InvocationTargetException e) { - } - return 0; + return GT_Pollution.getPollution(te); } public static int getPollution(Chunk te) { - if (MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) - try { - if (te == null) { - return 0; - } - if (mGetPollution2 != null) { - mGetPollution2.invoke(null, te); - } - Class GT_Pollution = ReflectionUtils.getClass("gregtech.common.GT_Pollution"); - if (GT_Pollution != null) { - Method addPollution = ReflectionUtils.getMethod(GT_Pollution, "getPollution", Chunk.class); - if (addPollution != null) { - mGetPollution2 = addPollution; - return (int) addPollution.invoke(null, te); - } - } - } catch (SecurityException | IllegalAccessException - | IllegalArgumentException | InvocationTargetException e) { - } - return 0; + return GT_Pollution.getPollution(te); } - + public static boolean setPollutionFluids() { if (mPollutionFluidStacks.isEmpty()) { FluidStack CD, CM, SD; @@ -258,7 +144,7 @@ public class PollutionUtils { else { MaterialGenerator.generate(MISC_MATERIALS.CARBON_DIOXIDE, false, false); } - + if (CM != null) { Logger.INFO("[PollutionCompat] Found carbon monoxide fluid, registering it."); PollutionUtils.mPollutionFluidStacks.put(CM); @@ -276,7 +162,7 @@ public class PollutionUtils { else { MaterialGenerator.generate(MISC_MATERIALS.CARBON_MONOXIDE, false, false); } - + if (SD != null) { Logger.INFO("[PollutionCompat] Found sulfur dioxide fluid, registering it."); PollutionUtils.mPollutionFluidStacks.put(SD); @@ -297,9 +183,9 @@ public class PollutionUtils { return true; } } - - - + + + } } -- cgit From b404dd06675bb5031c4c3095f950a83fb7d40e43 Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Tue, 14 Dec 2021 14:40:37 +0000 Subject: Fix PSS not forming correctly. Thanks to @Glease. Fix ItemBasicScrubberTurbine not working in Scrubbers. Improved scrubber handling slightly. --- .../item/general/ItemBasicScrubberTurbine.java | 12 +- .../gtPlusPlus/core/recipe/RECIPES_General.java | 6 + .../api/gui/basic/GUI_PollutionCleaner.java | 2 +- .../GregtechMetaAtmosphericReconditioner.java | 106 ++++++++--- ...chMetaTileEntity_PowerSubStationController.java | 197 +++++++++++++++------ src/resources/assets/miscutils/lang/en_US.lang | 1 + 6 files changed, 234 insertions(+), 90 deletions(-) (limited to 'src/Java/gtPlusPlus/core') 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 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 { + 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 STRUCTURE_DEFINITION = null; + private TopState topState = TopState.MayBeTop; + private static IStructureDefinition 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.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 IStructureElement onlyIf(Predicate predicate, IStructureElement downstream) { + return new IStructureElement() { + @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 IStructureElement ofCell(int aIndex) { return new IStructureElement() { @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 -- cgit From 795a1394a6de7d19b2d0523896cf7ee8ee4523c8 Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Tue, 14 Dec 2021 17:43:08 +0000 Subject: Adjusted REE outputs. Fixed ABS not accepting output bus. --- src/Java/gtPlusPlus/core/material/MISC_MATERIALS.java | 4 ++-- .../multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src/Java/gtPlusPlus/core') diff --git a/src/Java/gtPlusPlus/core/material/MISC_MATERIALS.java b/src/Java/gtPlusPlus/core/material/MISC_MATERIALS.java index 0b93e7dd9c..19e8499f02 100644 --- a/src/Java/gtPlusPlus/core/material/MISC_MATERIALS.java +++ b/src/Java/gtPlusPlus/core/material/MISC_MATERIALS.java @@ -134,7 +134,7 @@ public final class MISC_MATERIALS { new MaterialStack(ORES.GREENOCKITE, 1), new MaterialStack(ORES.LANTHANITE_CE, 1), new MaterialStack(ORES.AGARDITE_CD, 1), - new MaterialStack(ORES.XENOTIME, 1), + new MaterialStack(ORES.YTTRIALITE, 1), new MaterialStack(MaterialUtils.generateMaterialFromGtENUM(Materials.NetherQuartz), 1), new MaterialStack(MaterialUtils.generateMaterialFromGtENUM(Materials.Galena), 1), new MaterialStack(MaterialUtils.generateMaterialFromGtENUM(Materials.Chalcopyrite), 1), @@ -182,7 +182,7 @@ public final class MISC_MATERIALS { new MaterialStack(ORES.LAUTARITE, 1), new MaterialStack(ORES.DEMICHELEITE_BR, 1), new MaterialStack(ORES.ALBURNITE, 1), - new MaterialStack(ORES.KASHINITE, 1), + new MaterialStack(ORES.SAMARSKITE_Y, 1), new MaterialStack(ORES.AGARDITE_LA, 1), }); diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java index c84c5e162e..323efa2193 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java +++ b/src/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; -- cgit