From 3fb5315b64dac9e9068871f0658482b5376c13c4 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Thu, 5 Feb 2026 09:58:21 +1100 Subject: [PATCH 1/4] remove clearInventory method from metamachine --- .../com/gregtechceu/gtceu/api/machine/MetaMachine.java | 10 ---------- .../gtceu/api/machine/SimpleTieredMachine.java | 4 ++-- .../gtceu/api/machine/WorkableTieredMachine.java | 4 ++-- .../gtceu/api/machine/steam/SimpleSteamMachine.java | 4 ++-- .../api/machine/trait/NotifiableItemStackHandler.java | 4 ++++ .../api/transfer/item/CustomItemStackHandler.java | 10 ++++++++++ .../common/machine/electric/BatteryBufferMachine.java | 2 +- .../common/machine/electric/BlockBreakerMachine.java | 4 ++-- .../gtceu/common/machine/electric/ChargerMachine.java | 2 +- .../gtceu/common/machine/electric/FisherMachine.java | 6 +++--- .../common/machine/electric/ItemCollectorMachine.java | 4 ++-- .../gtceu/common/machine/electric/MinerMachine.java | 4 ++-- .../multiblock/electric/CentralMonitorMachine.java | 8 ++++---- .../multiblock/part/DataAccessHatchMachine.java | 2 +- .../machine/multiblock/part/FluidHatchPartMachine.java | 4 ++-- .../machine/multiblock/part/ItemBusPartMachine.java | 6 +++--- .../multiblock/part/MaintenanceHatchPartMachine.java | 2 +- .../machine/multiblock/part/ObjectHolderMachine.java | 2 +- .../multiblock/part/RotorHolderPartMachine.java | 2 +- .../multiblock/primitive/PrimitiveWorkableMachine.java | 4 ++-- .../gtceu/common/machine/steam/SteamMinerMachine.java | 2 +- .../common/machine/steam/SteamSolidBoilerMachine.java | 4 ++-- .../gtceu/common/machine/storage/BufferMachine.java | 2 +- .../gtceu/common/machine/storage/CrateMachine.java | 2 +- .../ae2/machine/MEPatternBufferPartMachine.java | 4 ++-- 25 files changed, 53 insertions(+), 49 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index b91971fd66a..b3249b22489 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -454,16 +454,6 @@ public void setPaintingColor(int color) { public void onPaintingColorChanged(int color) {} - public void clearInventory(IItemHandlerModifiable inventory) { - for (int i = 0; i < inventory.getSlots(); i++) { - ItemStack stackInSlot = inventory.getStackInSlot(i); - if (!stackInSlot.isEmpty()) { - inventory.setStackInSlot(i, ItemStack.EMPTY); - Block.popResource(getLevel(), getBlockPos(), stackInSlot); - } - } - } - @Override public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, ItemStack held, Set toolTypes) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java index fa1118e2c56..90ad283c061 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java @@ -135,9 +135,9 @@ protected void chargeBattery() { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(chargerInventory); + chargerInventory.dropInventoryInWorld(getLevel(), getBlockPos()); if (!ConfigHolder.INSTANCE.machines.ghostCircuit) { - clearInventory(circuitInventory.storage); + circuitInventory.dropInventoryInWorld(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index d00ba7f5959..36d9cafe787 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -146,8 +146,8 @@ public void onUnload() { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(importItems.storage); - clearInventory(exportItems.storage); + importItems.dropInventoryInWorld(); + exportItems.dropInventoryInWorld(); } public void setMuffled(boolean muffled) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java index 380f5caf236..42a5a224244 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java @@ -88,8 +88,8 @@ public void onLoad() { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(importItems.storage); - clearInventory(exportItems.storage); + importItems.dropInventoryInWorld(); + exportItems.dropInventoryInWorld(); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java index 95a4cd0f853..3beb250f39e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java @@ -328,6 +328,10 @@ public boolean isItemValid(int slot, @NotNull ItemStack stack) { return storage.isItemValid(slot, stack); } + public void dropInventoryInWorld() { + storage.dropInventoryInWorld(getLevel(), getMachine().getBlockPos()); + } + public static class KJSCallWrapper { public static ItemStack applyIngredientAction(CustomItemStackHandler storage, int index, diff --git a/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java index 0b429b995f5..dfbdda75739 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java @@ -1,8 +1,11 @@ package com.gregtechceu.gtceu.api.transfer.item; +import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraftforge.common.util.INBTSerializable; import net.minecraftforge.items.ItemStackHandler; @@ -52,4 +55,11 @@ public void clear() { stacks.clear(); onContentsChanged.run(); } + + public void dropInventoryInWorld(Level world, BlockPos pos) { + for (ItemStack stack: stacks) { + Block.popResource(world, pos, stack); + } + clear(); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java index 05e2ceee157..0d3b684025a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java @@ -192,7 +192,7 @@ private List getAllBatteries() { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(batteryInventory); + batteryInventory.dropInventoryInWorld(getLevel(), getBlockPos()); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java index 1f4410d44fe..b18ba84a27f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java @@ -139,8 +139,8 @@ public void onUnload() { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(chargerInventory); - clearInventory(cache.storage); + chargerInventory.dropInventoryInWorld(getLevel(), getBlockPos()); + cache.dropInventoryInWorld(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java index 01228c25808..a1e0ffa36b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java @@ -112,7 +112,7 @@ public int tintColor(int index) { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(chargerInventory); + chargerInventory.dropInventoryInWorld(getLevel(), getBlockPos()); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java index c1fbad809ea..973966a4142 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java @@ -168,9 +168,9 @@ public boolean shouldWeatherOrTerrainExplosion() { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(chargerInventory); - clearInventory(baitHandler.storage); - clearInventory(cache.storage); + chargerInventory.dropInventoryInWorld(getLevel(), getBlockPos()); + baitHandler.dropInventoryInWorld(); + cache.dropInventoryInWorld(); } public static int calcMaxProgress(int tier) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java index fe480d2608b..a7c4c8d3ae5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java @@ -174,8 +174,8 @@ public boolean shouldWeatherOrTerrainExplosion() { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(chargerInventory); - clearInventory(output.storage); + chargerInventory.dropInventoryInWorld(getLevel(), getBlockPos()); + output.dropInventoryInWorld(); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java index b01e7045895..a2bb710eaf2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java @@ -99,8 +99,8 @@ public void onMachineDestroyed() { super.onMachineDestroyed(); // Remove the miner pipes below this miner getRecipeLogic().onRemove(); - clearInventory(exportItems.storage); - clearInventory(chargerInventory); + exportItems.dropInventoryInWorld(); + chargerInventory.dropInventoryInWorld(getLevel(), getBlockPos()); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java index 6680049ec2e..4c18fd64f73 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java @@ -476,8 +476,8 @@ public Widget createUIWidget() { while (itg.hasNext()) { MonitorGroup group = itg.next(); if (group.isEmpty()) { - clearInventory(group.getItemStackHandler()); - clearInventory(group.getPlaceholderSlotsHandler()); + group.getItemStackHandler().dropInventoryInWorld(getLevel(), getBlockPos()); + group.getPlaceholderSlotsHandler().dropInventoryInWorld(getLevel(), getBlockPos()); itg.remove(); } } @@ -667,8 +667,8 @@ public IGuiTexture getComponentIcon() { public void onMachineDestroyed() { super.onMachineDestroyed(); for (MonitorGroup group : monitorGroups) { - clearInventory(group.getItemStackHandler()); - clearInventory(group.getPlaceholderSlotsHandler()); + group.getItemStackHandler().dropInventoryInWorld(getLevel(), getBlockPos());; + group.getPlaceholderSlotsHandler().dropInventoryInWorld(getLevel(), getBlockPos()); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java index 9f65119f4b5..3f872739600 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java @@ -118,7 +118,7 @@ protected int getInventorySize() { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(importItems.storage); + importItems.dropInventoryInWorld(); } private void rebuildData(boolean isDataBank) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index 1c12f7a736f..9b46334f208 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -104,7 +104,7 @@ public static int getTankCapacity(int initialCapacity, int tier) { public void onMachineDestroyed() { super.onMachineDestroyed(); if (!ConfigHolder.INSTANCE.machines.ghostCircuit) { - clearInventory(circuitInventory.storage); + circuitInventory.dropInventoryInWorld(); } } @@ -136,7 +136,7 @@ public void onPaintingColorChanged(int color) { public void addedToController(IMultiController controller) { if (!controller.allowCircuitSlots()) { if (!ConfigHolder.INSTANCE.machines.ghostCircuit) { - clearInventory(circuitInventory.storage); + circuitInventory.dropInventoryInWorld(); } else { circuitInventory.setStackInSlot(0, ItemStack.EMPTY); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index b37471501fa..894766ef490 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -105,10 +105,10 @@ protected NotifiableItemStackHandler createCircuitItemHandler(IO io) { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(getInventory().storage); + getInventory().dropInventoryInWorld(); if (!ConfigHolder.INSTANCE.machines.ghostCircuit) { - clearInventory(circuitInventory.storage); + circuitInventory.dropInventoryInWorld(); } } @@ -148,7 +148,7 @@ public void setDistinct(boolean distinct) { public void addedToController(IMultiController controller) { if (hasCircuitSlot && !controller.allowCircuitSlots()) { if (!ConfigHolder.INSTANCE.machines.ghostCircuit) { - clearInventory(circuitInventory.storage); + circuitInventory.dropInventoryInWorld(); } else { circuitInventory.setStackInSlot(0, ItemStack.EMPTY); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java index 200acfc9dac..5a4de81bbac 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java @@ -100,7 +100,7 @@ protected NotifiableItemStackHandler createInventory() { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(itemStackHandler); + itemStackHandler.dropInventoryInWorld(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java index 405ea3e2d23..a4da0e03b08 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java @@ -88,7 +88,7 @@ private ItemStack getHeldItem(int slot, boolean remove) { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(this.heldItems.storage); + heldItems.storage.dropInventoryInWorld(getLevel(), getBlockPos()); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java index 85addeced01..bb58944e42e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java @@ -75,7 +75,7 @@ public RotorHolderPartMachine(BlockEntityCreationInfo info, int tier) { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(inventory.storage); + inventory.dropInventoryInWorld(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java index 787b5938e09..69e17bf6007 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java @@ -62,8 +62,8 @@ protected NotifiableFluidTank createExportFluidHandler() { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(importItems.storage); - clearInventory(exportItems.storage); + importItems.dropInventoryInWorld(); + exportItems.dropInventoryInWorld(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java index c19214ccc33..664a0cb5a73 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java @@ -92,7 +92,7 @@ protected NotifiableItemStackHandler createExportItemHandler() { public void onMachineDestroyed() { super.onMachineDestroyed(); getRecipeLogic().onRemove(); - clearInventory(exportItems.storage); + exportItems.dropInventoryInWorld(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java index 8f240d43a8b..65601e402c6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java @@ -139,7 +139,7 @@ public ModularUI createUI(Player entityPlayer) { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(fuelHandler.storage); - clearInventory(ashHandler.storage); + fuelHandler.dropInventoryInWorld(); + ashHandler.dropInventoryInWorld(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java index 505feaabcbf..31fee41b765 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java @@ -107,6 +107,6 @@ public Widget createUIWidget() { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - clearInventory(inventory.storage); + inventory.dropInventoryInWorld(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java index b4099c2b3c3..eddea5730df 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java @@ -137,6 +137,6 @@ public boolean saveBreak() { @Override public void onMachineDestroyed() { super.onMachineDestroyed(); - if (!isTaped) clearInventory(inventory.storage); + if (!isTaped) inventory.dropInventoryInWorld(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java index 552b3f7663b..f26981ac996 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java @@ -416,8 +416,8 @@ public PatternContainerGroup getTerminalGroup() { @Override public void onMachineDestroyed() { - clearInventory(patternInventory); - clearInventory(shareInventory); + patternInventory.dropInventoryInWorld(getLevel(), getBlockPos()); + shareInventory.dropInventoryInWorld(); } @Override From f38ad06a01ac140342d5678c41721d336374e8fe Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 6 Feb 2026 08:59:55 +1100 Subject: [PATCH 2/4] remove recipe logic callbacks from machine definition --- .../gtceu/api/machine/MachineDefinition.java | 18 -------------- .../machine/feature/IRecipeLogicMachine.java | 14 ++++------- .../registry/registrate/MachineBuilder.java | 24 ------------------- 3 files changed, 5 insertions(+), 51 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java index 01b6204239c..d811ff8d622 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java @@ -5,8 +5,6 @@ import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.item.MetaMachineItem; -import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; -import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; @@ -74,22 +72,6 @@ public class MachineDefinition implements Supplier { @Getter @Setter private boolean alwaysTryModifyRecipe; - @NotNull - @Getter - @Setter - private BiPredicate beforeWorking = (machine, recipe) -> true; - @NotNull - @Getter - @Setter - private Predicate onWorking = (machine) -> true; - @NotNull - @Getter - @Setter - private Consumer onWaiting = (machine) -> {}; - @NotNull - @Getter - @Setter - private Consumer afterWorking = (machine) -> {}; @Getter @Setter private boolean regressWhenWaiting = true; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java index dc42605e28d..d72cd7c1d2e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java @@ -77,29 +77,25 @@ default boolean isRecipeLogicAvailable() { * Called in {@link RecipeLogic#setupRecipe(GTRecipe)} ()} */ default boolean beforeWorking(@Nullable GTRecipe recipe) { - return self().getDefinition().getBeforeWorking().test(this, recipe); + return true; } /** * Called per tick in {@link RecipeLogic#handleRecipeWorking()} */ default boolean onWorking() { - return self().getDefinition().getOnWorking().test(this); + return true; } /** * Called per tick in {@link RecipeLogic#handleRecipeWorking()} */ - default void onWaiting() { - self().getDefinition().getOnWaiting().accept(this); - } + default void onWaiting() {} /** * Called in {@link RecipeLogic#onRecipeFinish()} before outputs are produced */ - default void afterWorking() { - self().getDefinition().getAfterWorking().accept(this); - } + default void afterWorking() {} /** * Whether progress decrease when machine is waiting for pertick ingredients. (e.g. lack of EU) @@ -112,7 +108,7 @@ default boolean regressWhenWaiting() { * Always try {@link IRecipeLogicMachine#fullModifyRecipe(GTRecipe)} before setting up recipe. * * @return true - will map {@link RecipeLogic#lastOriginRecipe} to the latest recipe for next round when finishing. - * false - keep using the {@link RecipeLogic#lastRecipe}, which is already modified. + * false - keep using the {@link RecipeLogic# lastRecipe}, which is already modified. */ default boolean alwaysTryModifyRecipe() { // make it *always* do overclock and parallel so that the machine doesn't get stuck running a lower-tier recipe diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index e4c212484d6..120400e2281 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -261,26 +261,6 @@ public TYPE alwaysTryModifyRecipe(boolean alwaysTryModifyRecipe) { return getThis(); } - public TYPE beforeWorking(BiPredicate beforeWorking) { - this.beforeWorking = beforeWorking; - return getThis(); - } - - public TYPE onWorking(Predicate onWorking) { - this.onWorking = onWorking; - return getThis(); - } - - public TYPE onWaiting(Consumer onWaiting) { - this.onWaiting = onWaiting; - return getThis(); - } - - public TYPE afterWorking(Consumer afterWorking) { - this.afterWorking = afterWorking; - return getThis(); - } - public TYPE regressWhenWaiting(boolean regressWhenWaiting) { this.regressWhenWaiting = regressWhenWaiting; return getThis(); @@ -686,10 +666,6 @@ public DEFINITION register() { }); definition.setRecipeModifier(recipeModifier); definition.setAlwaysTryModifyRecipe(alwaysTryModifyRecipe); - definition.setBeforeWorking(this.beforeWorking); - definition.setOnWorking(this.onWorking); - definition.setOnWaiting(this.onWaiting); - definition.setAfterWorking(this.afterWorking); definition.setRegressWhenWaiting(this.regressWhenWaiting); definition.setAllowCoverOnFront(this.allowCoverOnFront); From ed138ac59a5cf6d316095334e390be8305cb31ab Mon Sep 17 00:00:00 2001 From: Gustavo Date: Mon, 9 Feb 2026 03:19:02 +1100 Subject: [PATCH 3/4] spotless --- .../gtceu/api/transfer/item/CustomItemStackHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java index dfbdda75739..812a4c8c804 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java @@ -57,7 +57,7 @@ public void clear() { } public void dropInventoryInWorld(Level world, BlockPos pos) { - for (ItemStack stack: stacks) { + for (ItemStack stack : stacks) { Block.popResource(world, pos, stack); } clear(); From b200a31ba3502d3be7e736091547c3941db76c10 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Mon, 9 Feb 2026 03:30:56 +1100 Subject: [PATCH 4/4] Revert "remove recipe logic callbacks from machine definition" This reverts commit f38ad06a01ac140342d5678c41721d336374e8fe. --- .../gtceu/api/machine/MachineDefinition.java | 18 ++++++++++++++ .../machine/feature/IRecipeLogicMachine.java | 14 +++++++---- .../registry/registrate/MachineBuilder.java | 24 +++++++++++++++++++ 3 files changed, 51 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java index d811ff8d622..01b6204239c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java @@ -5,6 +5,8 @@ import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.item.MetaMachineItem; +import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; +import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; @@ -72,6 +74,22 @@ public class MachineDefinition implements Supplier { @Getter @Setter private boolean alwaysTryModifyRecipe; + @NotNull + @Getter + @Setter + private BiPredicate beforeWorking = (machine, recipe) -> true; + @NotNull + @Getter + @Setter + private Predicate onWorking = (machine) -> true; + @NotNull + @Getter + @Setter + private Consumer onWaiting = (machine) -> {}; + @NotNull + @Getter + @Setter + private Consumer afterWorking = (machine) -> {}; @Getter @Setter private boolean regressWhenWaiting = true; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java index d72cd7c1d2e..dc42605e28d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java @@ -77,25 +77,29 @@ default boolean isRecipeLogicAvailable() { * Called in {@link RecipeLogic#setupRecipe(GTRecipe)} ()} */ default boolean beforeWorking(@Nullable GTRecipe recipe) { - return true; + return self().getDefinition().getBeforeWorking().test(this, recipe); } /** * Called per tick in {@link RecipeLogic#handleRecipeWorking()} */ default boolean onWorking() { - return true; + return self().getDefinition().getOnWorking().test(this); } /** * Called per tick in {@link RecipeLogic#handleRecipeWorking()} */ - default void onWaiting() {} + default void onWaiting() { + self().getDefinition().getOnWaiting().accept(this); + } /** * Called in {@link RecipeLogic#onRecipeFinish()} before outputs are produced */ - default void afterWorking() {} + default void afterWorking() { + self().getDefinition().getAfterWorking().accept(this); + } /** * Whether progress decrease when machine is waiting for pertick ingredients. (e.g. lack of EU) @@ -108,7 +112,7 @@ default boolean regressWhenWaiting() { * Always try {@link IRecipeLogicMachine#fullModifyRecipe(GTRecipe)} before setting up recipe. * * @return true - will map {@link RecipeLogic#lastOriginRecipe} to the latest recipe for next round when finishing. - * false - keep using the {@link RecipeLogic# lastRecipe}, which is already modified. + * false - keep using the {@link RecipeLogic#lastRecipe}, which is already modified. */ default boolean alwaysTryModifyRecipe() { // make it *always* do overclock and parallel so that the machine doesn't get stuck running a lower-tier recipe diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index 120400e2281..e4c212484d6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -261,6 +261,26 @@ public TYPE alwaysTryModifyRecipe(boolean alwaysTryModifyRecipe) { return getThis(); } + public TYPE beforeWorking(BiPredicate beforeWorking) { + this.beforeWorking = beforeWorking; + return getThis(); + } + + public TYPE onWorking(Predicate onWorking) { + this.onWorking = onWorking; + return getThis(); + } + + public TYPE onWaiting(Consumer onWaiting) { + this.onWaiting = onWaiting; + return getThis(); + } + + public TYPE afterWorking(Consumer afterWorking) { + this.afterWorking = afterWorking; + return getThis(); + } + public TYPE regressWhenWaiting(boolean regressWhenWaiting) { this.regressWhenWaiting = regressWhenWaiting; return getThis(); @@ -666,6 +686,10 @@ public DEFINITION register() { }); definition.setRecipeModifier(recipeModifier); definition.setAlwaysTryModifyRecipe(alwaysTryModifyRecipe); + definition.setBeforeWorking(this.beforeWorking); + definition.setOnWorking(this.onWorking); + definition.setOnWaiting(this.onWaiting); + definition.setAfterWorking(this.afterWorking); definition.setRegressWhenWaiting(this.regressWhenWaiting); definition.setAllowCoverOnFront(this.allowCoverOnFront);