diff options
author | tth05 <36999320+tth05@users.noreply.github.com> | 2023-10-16 06:47:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-16 06:47:32 +0200 |
commit | 447bb0803630baf0206331fd4e9aa5cfe38a2a51 (patch) | |
tree | 55fb941ba4a514c29ceabcf16b058b0023293156 /src/main/java/gregtech/api | |
parent | 8ce67c167c8f5938b0fed79b1d9727663d9cd9bc (diff) | |
download | GT5-Unofficial-447bb0803630baf0206331fd4e9aa5cfe38a2a51.tar.gz GT5-Unofficial-447bb0803630baf0206331fd4e9aa5cfe38a2a51.tar.bz2 GT5-Unofficial-447bb0803630baf0206331fd4e9aa5cfe38a2a51.zip |
Add stocking input hatch (#2322)
* Add stocking input hatch
* Refactor stocking input hatch UI code and fix some formatting
* Add new visual changes from stocking bus and some refactoring
* Remove drain/fill methods and fix tooltip
* Split information slots into separate array and update MUI
* Use inventory of size in constructor
* Add assembly line support
* Add amount to info slot tooltips and update tooltips every tick
Diffstat (limited to 'src/main/java/gregtech/api')
5 files changed, 35 insertions, 28 deletions
diff --git a/src/main/java/gregtech/api/enums/ItemList.java b/src/main/java/gregtech/api/enums/ItemList.java index 4d667cc495..1ed3057dcd 100644 --- a/src/main/java/gregtech/api/enums/ItemList.java +++ b/src/main/java/gregtech/api/enums/ItemList.java @@ -1997,6 +1997,7 @@ public enum ItemList implements IItemContainer { VOLUMETRIC_FLASK, Hatch_Input_Bus_ME, + Hatch_Input_ME, Hatch_CraftingInput_Bus_ME, Hatch_CraftingInput_Bus_ME_ItemOnly, Hatch_CraftingInput_Bus_Slave, diff --git a/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java b/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java index 9b5abd0994..003ff381f7 100644 --- a/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java +++ b/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java @@ -600,6 +600,7 @@ public enum MetaTileEntityIDs { LONG_DISTANCE_PIPELINE_ITEM(2701), OUTPUT_BUS_ME(2710), INPUT_BUS_ME(2711), + INPUT_HATCH_ME(2712), OUTPUT_HATCH_ME(2713), CRAFTING_INPUT_ME(2714), CRAFTING_INPUT_ME_BUS(2715), diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Input.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Input.java index e3b94dec47..b6eb19b5aa 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Input.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Input.java @@ -53,6 +53,11 @@ public class GT_MetaTileEntity_Hatch_Input extends GT_MetaTileEntity_Hatch { super(aID, aName, aNameRegional, aTier, aSlot, aDescription); } + public GT_MetaTileEntity_Hatch_Input(int aID, String aName, String aNameRegional, int aTier, int allSlotCount, + String[] strings) { + super(aID, aName, aNameRegional, aTier, allSlotCount, strings); + } + public int getCapacityPerTank(int aTier, int aSlot) { return (int) (8000L * (1L << aTier) / aSlot); } diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java index e7cddffc12..5769cd82c2 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java @@ -30,8 +30,6 @@ import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.modularui.IAddUIWidgets; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; -import gregtech.api.recipe.check.CheckRecipeResult; -import gregtech.api.recipe.check.CheckRecipeResultRegistry; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_ClientPreference; import gregtech.api.util.GT_OreDictUnificator; @@ -39,9 +37,10 @@ import gregtech.api.util.GT_Recipe.GT_Recipe_Map; import gregtech.api.util.GT_TooltipDataCache; import gregtech.api.util.GT_Utility; import gregtech.api.util.extensions.ArrayExt; +import gregtech.common.tileentities.machines.IRecipeProcessingAwareHatch; public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch - implements IConfigurationCircuitSupport, IAddUIWidgets { + implements IConfigurationCircuitSupport, IAddUIWidgets, IRecipeProcessingAwareHatch { private static final String SORTING_MODE_TOOLTIP = "GT5U.machines.sorting_mode.tooltip"; private static final String ONE_STACK_LIMIT_TOOLTIP = "GT5U.machines.one_stack_limit.tooltip"; @@ -264,29 +263,6 @@ public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch return mInventory[aIndex] == null; } - /** - * Called when multiblock controller starts processing. - * {@link #endRecipeProcessing(GT_MetaTileEntity_MultiBlockBase)} is called on the same tick. - */ - public void startRecipeProcessing() {} - - /** - * Called when multiblock controller ends processing. {@link #startRecipeProcessing()} is called on the same tick. - * - * @param controller Caller of this method. - * @return Result of the process of this method. {@code !wasSuccessful()} means the returned result should - * overwrite the result calculated on multiblock whatever the reason is. - */ - public CheckRecipeResult endRecipeProcessing(GT_MetaTileEntity_MultiBlockBase controller) { - endRecipeProcessing(); - return CheckRecipeResultRegistry.SUCCESSFUL; - } - - /** - * Simple version of {@link #endRecipeProcessing(GT_MetaTileEntity_MultiBlockBase)}. Maybe use it instead. - */ - public void endRecipeProcessing() {} - @Override public boolean allowSelectCircuit() { return true; diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java index d9d5f4c731..1d3fa80ef5 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java @@ -14,6 +14,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Optional; +import java.util.function.Consumer; import java.util.function.Function; import javax.annotation.Nonnull; @@ -88,10 +89,12 @@ import gregtech.client.GT_SoundLoop; import gregtech.common.GT_Pollution; import gregtech.common.gui.modularui.widget.CheckRecipeResultSyncer; import gregtech.common.items.GT_MetaGenerated_Tool_01; +import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_Input_ME; import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_OutputBus_ME; import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_Output_ME; import gregtech.common.tileentities.machines.IDualInputHatch; import gregtech.common.tileentities.machines.IDualInputInventory; +import gregtech.common.tileentities.machines.IRecipeProcessingAwareHatch; import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_LargeTurbine; import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; @@ -1341,6 +1344,14 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity rList.add(tFluid); } } + } else if (tHatch instanceof GT_MetaTileEntity_Hatch_Input_ME) { + if (isValidMetaTileEntity(tHatch)) { + for (FluidStack fluidStack : ((GT_MetaTileEntity_Hatch_Input_ME) tHatch).getStoredFluids()) { + if (fluidStack == null) continue; + + rList.add(fluidStack); + } + } } else { if (tHatch.getFillableStack() != null) { // GT_Log.out.print("sf: " + tHatch.getFillableStack() + "\n"); @@ -1405,14 +1416,27 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity for (GT_MetaTileEntity_Hatch_InputBus hatch : filterValidMTEs(mInputBusses)) { hatch.startRecipeProcessing(); } + for (GT_MetaTileEntity_Hatch_Input hatch : filterValidMTEs(mInputHatches)) { + if (hatch instanceof IRecipeProcessingAwareHatch aware) { + aware.startRecipeProcessing(); + } + } } protected void endRecipeProcessing() { - for (GT_MetaTileEntity_Hatch_InputBus hatch : filterValidMTEs(mInputBusses)) { - CheckRecipeResult result = hatch.endRecipeProcessing(this); + Consumer<CheckRecipeResult> setResultIfFailure = result -> { if (!result.wasSuccessful()) { this.checkRecipeResult = result; } + }; + + for (GT_MetaTileEntity_Hatch_InputBus hatch : filterValidMTEs(mInputBusses)) { + setResultIfFailure.accept(hatch.endRecipeProcessing(this)); + } + for (GT_MetaTileEntity_Hatch_Input hatch : filterValidMTEs(mInputHatches)) { + if (hatch instanceof IRecipeProcessingAwareHatch aware) { + setResultIfFailure.accept(aware.endRecipeProcessing(this)); + } } } |