From 9d79d8f790861815183d534352db45135765365d Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 8 Feb 2026 21:32:10 +1100 Subject: [PATCH 1/3] remove IInteractedMachine --- .../gtceu/api/block/MetaMachineBlock.java | 29 +------------ .../gtceu/api/machine/MetaMachine.java | 41 +++++++++++++++++++ .../machine/feature/IInteractedMachine.java | 36 ---------------- .../feature/multiblock/IMultiController.java | 26 +----------- .../MultiblockControllerMachine.java | 20 +++++++++ .../api/machine/steam/SteamBoilerMachine.java | 6 +-- .../part/MaintenanceHatchPartMachine.java | 5 +-- .../part/RotorHolderPartMachine.java | 6 ++- .../monitor/AdvancedMonitorPartMachine.java | 9 ++-- .../primitive/CharcoalPileIgniterMachine.java | 5 +++ .../steam/SteamLiquidBoilerMachine.java | 4 -- .../common/machine/storage/CrateMachine.java | 4 +- .../machine/storage/CreativeChestMachine.java | 2 +- .../machine/storage/CreativeTankMachine.java | 2 +- .../common/machine/storage/DrumMachine.java | 5 +-- .../machine/storage/QuantumChestMachine.java | 10 ++--- .../machine/storage/QuantumTankMachine.java | 5 +-- .../gtceu/forge/ForgeCommonEventListener.java | 13 ++---- .../ae2/machine/MEOutputBusPartMachine.java | 3 +- 19 files changed, 99 insertions(+), 132 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/machine/feature/IInteractedMachine.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java index 1bacdd97fa4..441b4608f4b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java @@ -4,13 +4,10 @@ import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.item.MetaMachineItem; -import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.*; -import com.gregtechceu.gtceu.api.machine.trait.feature.IInteractionTrait; import com.gregtechceu.gtceu.api.sync_system.ManagedSyncBlockEntity; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; @@ -56,7 +53,6 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Set; import javax.annotation.ParametersAreNonnullByDefault; @@ -278,18 +274,8 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player machine.setOwnerUUID(sPlayer.getUUID()); } - Set types = ToolHelper.getToolTypes(itemStack); - if (!types.isEmpty() && ToolHelper.canUse(itemStack) || types.isEmpty() && player.isShiftKeyDown()) { - var result = machine.onToolClick(types, itemStack, new UseOnContext(player, hand, hit)); - if (result.getSecond() == InteractionResult.CONSUME && player instanceof ServerPlayer serverPlayer) { - ToolHelper.playToolSound(result.getFirst(), serverPlayer); - - if (!serverPlayer.isCreative()) { - ToolHelper.damageItem(itemStack, serverPlayer, 1); - } - } - if (result.getSecond() != InteractionResult.PASS) return result.getSecond(); - } + InteractionResult machineInteractResult = machine.onUse(state, world, pos, player, hand, hit); + if (machineInteractResult != InteractionResult.PASS) return machineInteractResult; if (itemStack.is(GTItems.PORTABLE_SCANNER.get())) { return itemStack.getItem().use(world, player, hand).getResult(); @@ -299,17 +285,6 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player shouldOpenUi = gtToolItem.definition$shouldOpenUIAfterUse(new UseOnContext(player, hand, hit)); } - for (var trait : machine.getTraitHolder().getAllTraits()) { - if (trait instanceof IInteractionTrait interactionTrait) { - InteractionResult result = interactionTrait.onUse(state, world, pos, player, hand, hit); - if (result != InteractionResult.PASS) return result; - } - } - - if (machine instanceof IInteractedMachine interactedMachine) { - var result = interactedMachine.onUse(state, world, pos, player, hand, hit); - if (result != InteractionResult.PASS) return result; - } if (shouldOpenUi && machine instanceof IUIMachine uiMachine && MachineOwner.canOpenOwnerMachine(player, machine)) { return uiMachine.tryToOpenUI(player, hand, hit); 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 48cd480efab..82a446bbbe4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -17,6 +17,7 @@ import com.gregtechceu.gtceu.api.gui.fancy.IFancyTooltip; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.item.tool.IToolGridHighlight; +import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.machine.feature.*; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; @@ -402,6 +403,46 @@ protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand return InteractionResult.PASS; } + /** + * Called when a machine is clicked. + */ + public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, + BlockHitResult hit) { + ItemStack itemStack = player.getItemInHand(hand); + + Set types = ToolHelper.getToolTypes(itemStack); + if (!types.isEmpty() && ToolHelper.canUse(itemStack) || types.isEmpty() && player.isShiftKeyDown()) { + var result = onToolClick(types, itemStack, new UseOnContext(player, hand, hit)); + if (result.getSecond() == InteractionResult.CONSUME && player instanceof ServerPlayer serverPlayer) { + ToolHelper.playToolSound(result.getFirst(), serverPlayer); + + if (!serverPlayer.isCreative()) { + ToolHelper.damageItem(itemStack, serverPlayer, 1); + } + } + if (result.getSecond() != InteractionResult.PASS) return result.getSecond(); + } + + for (var trait : getTraitHolder().getAllTraits()) { + if (trait instanceof IInteractionTrait interactionTrait) { + InteractionResult result = interactionTrait.onUse(state, world, pos, player, hand, hit); + if (result != InteractionResult.PASS) return result; + } + } + + return InteractionResult.PASS; + } + + /** + * Called when a machine is left clicked. + * + * @return true to cancel the click event, false to continue processing + */ + public boolean onLeftClick(Player player, Level world, InteractionHand hand, BlockPos pos, + @Nullable Direction face) { + return false; + } + ////////////////////////////////////// // ********** MISC ***********// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IInteractedMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IInteractedMachine.java deleted file mode 100644 index ca28205513d..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IInteractedMachine.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gregtechceu.gtceu.api.machine.feature; - -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; - -/** - * A machine which hooks right click events. - */ -public interface IInteractedMachine extends IMachineFeature { - - /** - * Basically a hook from block - * {@link net.minecraft.world.level.block.state.BlockBehaviour#use(BlockState, Level, BlockPos, Player, InteractionHand, BlockHitResult)} - *
- * Right-Click - */ - default InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, - BlockHitResult hit) { - return InteractionResult.PASS; - } - - /** - * Left-Click - * - * @return cancel (true) / keep (false) further processing - */ - default boolean onLeftClick(Player player, Level world, InteractionHand hand, BlockPos pos, Direction direction) { - return false; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java index b4a54df35f6..26ed8ad1216 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java @@ -1,24 +1,16 @@ package com.gregtechceu.gtceu.api.machine.feature.multiblock; import com.gregtechceu.gtceu.api.capability.IParallelHatch; -import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.pattern.BlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockState; -import com.gregtechceu.gtceu.client.renderer.MultiblockInWorldPreviewRenderer; -import com.gregtechceu.gtceu.config.ConfigHolder; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -28,7 +20,7 @@ import java.util.Optional; import java.util.concurrent.locks.Lock; -public interface IMultiController extends IMachineFeature, IInteractedMachine { +public interface IMultiController extends IMachineFeature { BooleanProperty IS_FORMED_PROPERTY = GTMachineModelProperties.IS_FORMED; @@ -196,22 +188,6 @@ default Comparator getPartSorter() { return self().getDefinition().getPartSorter().apply(self()); } - /** - * Show the preview of structure. - */ - @Override - default InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, - BlockHitResult hit) { - if (!self().isFormed() && player.isShiftKeyDown() && player.getItemInHand(hand).isEmpty()) { - if (world.isClientSide()) { - MultiblockInWorldPreviewRenderer.showPreview(pos, self(), - ConfigHolder.INSTANCE.client.inWorldPreviewDuration * 20); - } - return InteractionResult.SUCCESS; - } - return IInteractedMachine.super.onUse(state, world, pos, player, hand, hit); - } - default boolean allowCircuitSlots() { return true; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java index 6d001cc2ebc..e65beab1a0b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java @@ -17,12 +17,19 @@ import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; import com.gregtechceu.gtceu.api.sync_system.annotations.SyncToClient; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.renderer.MultiblockInWorldPreviewRenderer; +import com.gregtechceu.gtceu.config.ConfigHolder; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; import lombok.Getter; import org.jetbrains.annotations.NotNull; @@ -265,4 +272,17 @@ public void setFrontFacing(Direction facing) { checkPattern(); } } + + @Override + public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, + BlockHitResult hit) { + if (!isFormed() && player.isShiftKeyDown() && player.getItemInHand(hand).isEmpty()) { + if (world.isClientSide()) { + MultiblockInWorldPreviewRenderer.showPreview(pos, this, + ConfigHolder.INSTANCE.client.inWorldPreviewDuration * 20); + } + return InteractionResult.SUCCESS; + } + return super.onUse(state, world, pos, player, hand, hit); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java index 1b8195b229c..7d29c4a8766 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java @@ -10,7 +10,6 @@ import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; import com.gregtechceu.gtceu.api.machine.feature.IExplosionMachine; -import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; @@ -67,8 +66,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class SteamBoilerMachine extends SteamWorkableMachine - implements IUIMachine, IExplosionMachine, IDataInfoProvider, - IInteractedMachine { + implements IUIMachine, IExplosionMachine, IDataInfoProvider { @SaveField public final NotifiableFluidTank waterTank; @@ -304,7 +302,7 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play return InteractionResult.SUCCESS; } } - return IInteractedMachine.super.onUse(state, world, pos, player, hand, hit); + return super.onUse(state, world, pos, player, hand, hit); } ////////////////////////////////////// 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 61200cbbe0d..01223edf7bd 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 @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.machine.TickableSubscription; -import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; @@ -56,7 +55,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MaintenanceHatchPartMachine extends TieredPartMachine - implements IMachineLife, IMaintenanceMachine, IInteractedMachine { + implements IMachineLife, IMaintenanceMachine { private static final float MAX_DURATION_MULTIPLIER = 1.1f; private static final float MIN_DURATION_MULTIPLIER = 0.9f; @@ -330,7 +329,7 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play return InteractionResult.SUCCESS; } } - return InteractionResult.PASS; + return super.onUse(state, world, pos, player, hand, hit); } ////////////////////////////////////// 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 0002d4648e9..19f0871c8a0 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 @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.BlockableSlotWidget; import com.gregtechceu.gtceu.api.machine.TickableSubscription; -import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.*; @@ -44,7 +43,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class RotorHolderPartMachine extends TieredPartMachine - implements IMachineLife, IRotorHolderMachine, IInteractedMachine { + implements IMachineLife, IRotorHolderMachine { @SaveField public final NotifiableItemStackHandler inventory; @@ -217,8 +216,11 @@ public void setRotorStack(ItemStack rotorStack) { inventory.onContentsChanged(); } + @Override public InteractionResult onUse(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + var superResult = super.onUse(state, level, pos, player, hand, hit); + if (superResult != InteractionResult.PASS) return superResult; if (!isRemote() && getRotorSpeed() > 0 && !player.isCreative()) { TurbineRotorBehaviour behaviour = TurbineRotorBehaviour.getBehaviour(getRotorStack()); if (behaviour != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/AdvancedMonitorPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/AdvancedMonitorPartMachine.java index 786c5601cf4..cd451b26b1d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/AdvancedMonitorPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/AdvancedMonitorPartMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.TickableSubscription; -import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; @@ -19,8 +18,11 @@ import lombok.Getter; import org.jetbrains.annotations.Nullable; +import javax.annotation.ParametersAreNonnullByDefault; + @MethodsReturnNonnullByDefault -public class AdvancedMonitorPartMachine extends MonitorPartMachine implements IInteractedMachine { +@ParametersAreNonnullByDefault +public class AdvancedMonitorPartMachine extends MonitorPartMachine { @Getter @SaveField @@ -44,8 +46,7 @@ public AdvancedMonitorPartMachine(BlockEntityCreationInfo info) { @Override public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - if (hit.getDirection() != getFrontFacing()) - return IInteractedMachine.super.onUse(state, world, pos, player, hand, hit); + if (hit.getDirection() != getFrontFacing()) return super.onUse(state, world, pos, player, hand, hit); clicked = true; clickPosX = hit.getLocation() .get(RelativeDirection.RIGHT.getRelative(getFrontFacing(), getUpwardsFacing(), false).getAxis()); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java index c1daf9ad56e..e5be2e0fa99 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java @@ -18,6 +18,7 @@ import com.lowdragmc.lowdraglib.utils.BlockInfo; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Holder; @@ -46,8 +47,12 @@ import java.util.*; +import javax.annotation.ParametersAreNonnullByDefault; + import static com.gregtechceu.gtceu.api.pattern.util.RelativeDirection.*; +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault public class CharcoalPileIgniterMachine extends WorkableMultiblockMachine implements IWorkable { private static final int MIN_RADIUS = 1; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java index 77ce4bf4d2d..78ee8dc9936 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java @@ -97,13 +97,9 @@ protected void randomDisplayTick(RandomSource random, float x, float y, float z) public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { if (!isRemote()) { - if (super.onUse(state, world, pos, player, hand, hit) == InteractionResult.SUCCESS) { - return InteractionResult.SUCCESS; - } if (FluidUtil.interactWithFluidHandler(player, hand, fuelTank)) { return InteractionResult.SUCCESS; } - return InteractionResult.PASS; } return super.onUse(state, world, pos, player, hand, hit); } 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 6b4bf1104a8..627c0364a0f 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 @@ -39,7 +39,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CrateMachine extends MetaMachine implements IUIMachine, IMachineLife, - IDropSaveMachine, IInteractedMachine { + IDropSaveMachine { public static final BooleanProperty TAPED_PROPERTY = GTMachineModelProperties.IS_TAPED; @@ -103,7 +103,7 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play return InteractionResult.sidedSuccess(world.isClientSide); } } - return IInteractedMachine.super.onUse(state, world, pos, player, hand, hit); + return super.onUse(state, world, pos, player, hand, hit); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java index 8a491110788..ec436be4bfa 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeChestMachine.java @@ -102,7 +102,7 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play return updateStored(heldItem); } } - return InteractionResult.PASS; + return super.onUse(state, world, pos, player, hand, hit); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java index de4aa043e68..d7e5cd1972a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java @@ -131,7 +131,7 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play .orElse(InteractionResult.PASS); } } - return InteractionResult.PASS; + return super.onUse(state, world, pos, player, hand, hit); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java index 243d8aa7e4d..83398fdd0be 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IDropSaveMachine; -import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.trait.AutoOutputTrait; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; @@ -35,7 +34,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class DrumMachine extends MetaMachine implements IDropSaveMachine, IInteractedMachine { +public class DrumMachine extends MetaMachine implements IDropSaveMachine { @Getter private final int maxStoredFluids; @@ -132,7 +131,7 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play return InteractionResult.SUCCESS; } } - return world.isClientSide ? InteractionResult.SUCCESS : InteractionResult.PASS; + return super.onUse(state, world, pos, player, hand, hit); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java index 4a0279a337f..64f5ad3c7fd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java @@ -12,7 +12,6 @@ import com.gregtechceu.gtceu.api.machine.TieredMachine; import com.gregtechceu.gtceu.api.machine.feature.IDropSaveMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; -import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.trait.AutoOutputTrait; import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; import com.gregtechceu.gtceu.api.machine.trait.MachineTraitType; @@ -57,7 +56,7 @@ import java.util.function.Predicate; @NotNullByDefault -public class QuantumChestMachine extends TieredMachine implements IInteractedMachine, IControllable, +public class QuantumChestMachine extends TieredMachine implements IControllable, IDropSaveMachine, IFancyUIMachine { /** @@ -198,7 +197,7 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play INTERACTION_LOGGER.put(player.getUUID(), System.currentTimeMillis()); return InteractionResult.SUCCESS; } - return InteractionResult.PASS; + return super.onUse(state, world, pos, player, hand, hit); } private static boolean isDoubleHit(UUID uuid) { @@ -206,7 +205,8 @@ private static boolean isDoubleHit(UUID uuid) { } @Override - public boolean onLeftClick(Player player, Level world, InteractionHand hand, BlockPos pos, Direction direction) { + public boolean onLeftClick(Player player, Level world, InteractionHand hand, BlockPos pos, + @Nullable Direction direction) { if (direction == getFrontFacing() && !isRemote()) { if (GTToolType.WRENCH.matchTags.stream().anyMatch(player.getItemInHand(hand)::is)) return false; if (!stored.isEmpty()) { // pull @@ -218,7 +218,7 @@ public boolean onLeftClick(Player player, Level world, InteractionHand hand, Blo } } } - return IInteractedMachine.super.onLeftClick(player, world, hand, pos, direction); + return super.onLeftClick(player, world, hand, pos, direction); } public boolean isLocked() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java index 3f267084a31..dfaa3c775fb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java @@ -10,7 +10,6 @@ import com.gregtechceu.gtceu.api.machine.*; import com.gregtechceu.gtceu.api.machine.feature.IDropSaveMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; -import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.trait.AutoOutputTrait; import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; import com.gregtechceu.gtceu.api.machine.trait.MachineTraitType; @@ -52,7 +51,7 @@ import java.util.function.Predicate; @NotNullByDefault -public class QuantumTankMachine extends TieredMachine implements IInteractedMachine, IControllable, +public class QuantumTankMachine extends TieredMachine implements IControllable, IDropSaveMachine, IFancyUIMachine { public static Object2LongMap TANK_CAPACITY = new Object2LongArrayMap<>(); @@ -160,7 +159,7 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play return InteractionResult.SUCCESS; } } - return IInteractedMachine.super.onUse(state, world, pos, player, hand, hit); + return super.onUse(state, world, pos, player, hand, hit); } public boolean isLocked() { diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index e8245e61ab5..b855f3dc6dc 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.BlockAttributes; -import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IElectricItem; import com.gregtechceu.gtceu.api.capability.IMedicalConditionTracker; @@ -20,7 +19,6 @@ import com.gregtechceu.gtceu.api.item.armor.ArmorComponentItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEnderRegistry; import com.gregtechceu.gtceu.api.pattern.MultiblockWorldSavedData; import com.gregtechceu.gtceu.api.registry.GTRegistries; @@ -224,14 +222,9 @@ public static void onMobEffectEvent(MobEffectEvent.Applicable event) { @SubscribeEvent public static void onLeftClickBlock(PlayerInteractEvent.LeftClickBlock event) { - var blockState = event.getLevel().getBlockState(event.getPos()); - if (blockState.hasBlockEntity() && blockState.getBlock() instanceof MetaMachineBlock block && - MetaMachine.getMachine(event.getLevel(), event.getPos()) instanceof IInteractedMachine machine) { - if (machine.onLeftClick(event.getEntity(), event.getLevel(), event.getHand(), event.getPos(), - event.getFace())) { - event.setCanceled(true); - } - } + var machine = MetaMachine.getMachine(event.getLevel(), event.getPos()); + if (machine != null) event.setCanceled(machine.onLeftClick(event.getEntity(), event.getLevel(), event.getHand(), + event.getPos(), event.getFace())); } @SubscribeEvent diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java index 50632bf3161..e9061b86099 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; @@ -33,7 +32,7 @@ */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public class MEOutputBusPartMachine extends MEBusPartMachine implements IMachineLife, IInteractedMachine { +public class MEOutputBusPartMachine extends MEBusPartMachine implements IMachineLife { @SaveField private KeyStorage internalBuffer; // Do not use KeyCounter, use our simple implementation From 9fbc4b047343594a5e3340c12778f57c763821be Mon Sep 17 00:00:00 2001 From: Gustavo <77560533+gustovafing@users.noreply.github.com> Date: Sun, 8 Feb 2026 23:13:33 +1100 Subject: [PATCH 2/3] Update src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java Co-authored-by: Jurre Groenendijk --- .../java/com/gregtechceu/gtceu/api/machine/MetaMachine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 82a446bbbe4..57b55e5b0e1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -404,7 +404,7 @@ protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand } /** - * Called when a machine is clicked. + * Called when a machine is right clicked. */ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { From 1b1af600bfd48770af9df14b2af47ae4380a1573 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sun, 8 Feb 2026 23:14:13 +1100 Subject: [PATCH 3/3] remove annotations --- .../multiblock/primitive/CharcoalPileIgniterMachine.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java index e5be2e0fa99..c1daf9ad56e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java @@ -18,7 +18,6 @@ import com.lowdragmc.lowdraglib.utils.BlockInfo; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Holder; @@ -47,12 +46,8 @@ import java.util.*; -import javax.annotation.ParametersAreNonnullByDefault; - import static com.gregtechceu.gtceu.api.pattern.util.RelativeDirection.*; -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class CharcoalPileIgniterMachine extends WorkableMultiblockMachine implements IWorkable { private static final int MIN_RADIUS = 1;