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..8da68a40b29 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java @@ -223,12 +223,11 @@ public BlockState rotate(BlockState pState, Rotation pRotation) { @Override public List getDrops(BlockState state, LootParams.Builder builder) { - BlockEntity tileEntity = builder.getOptionalParameter(LootContextParams.BLOCK_ENTITY); var drops = super.getDrops(state, builder); - if (tileEntity instanceof MetaMachine machine) { - if (machine instanceof IMachineModifyDrops machineModifyDrops) { - machineModifyDrops.onDrops(drops); - } + + BlockEntity be = builder.getOptionalParameter(LootContextParams.BLOCK_ENTITY); + if (be instanceof MetaMachine machine) { + machine.modifyDrops(drops); if (machine instanceof IDropSaveMachine dropSaveMachine && dropSaveMachine.saveBreak()) { for (ItemStack drop : drops) { if (drop.getItem() instanceof MetaMachineItem item && item.getBlock() == this) { @@ -248,7 +247,7 @@ public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState if (!pState.is(pNewState.getBlock())) { // new block MetaMachine machine = MetaMachine.getMachine(pLevel, pPos); if (machine != null) { - machine.onRemoved(); + machine.onMachineDestroyed(); } pLevel.updateNeighbourForOutputSignal(pPos, this); @@ -278,18 +277,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 +288,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/capability/IMiner.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IMiner.java index 0b08daa6aa0..df87274cbf8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IMiner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IMiner.java @@ -1,18 +1,8 @@ package com.gregtechceu.gtceu.api.capability; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; -import com.gregtechceu.gtceu.common.machine.trait.miner.MinerLogic; -public interface IMiner extends IRecipeLogicMachine, IMachineLife { - - @Override - MinerLogic getRecipeLogic(); - - @Override - default void onMachineRemoved() { - getRecipeLogic().onRemove(); - } +public interface IMiner extends IRecipeLogicMachine { boolean drainInput(boolean simulate); 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..01e5aec3e5d 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; @@ -102,8 +103,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class MetaMachine extends ManagedSyncBlockEntity implements IGregtechBlockEntity, IToolable, IToolGridHighlight, IFancyTooltip, IPaintable, IMachineFeature, ICopyable { @@ -157,26 +156,6 @@ public MetaMachine(BlockEntityCreationInfo info) { // ***** Machine Lifecycle ******// ////////////////////////////////////// - public void onMachinePlaced(@Nullable LivingEntity player, ItemStack stack) { - if (player instanceof ServerPlayer sPlayer) { - ownerUUID = sPlayer.getUUID(); - } - - if (this instanceof IDropSaveMachine dropSaveMachine) { - CompoundTag tag = stack.getTag(); - if (tag != null) { - dropSaveMachine.loadFromItem(tag); - } - } - } - - public void onRemoved() { - for (Direction direction : GTUtil.DIRECTIONS) { - getCoverContainer().removeCover(direction, null); - } - if (this instanceof IMachineLife l) l.onMachineRemoved(); - } - @Override public void load(CompoundTag tag) { TagCompatibilityFixer.fixMachineAutoOutputTag(tag); @@ -196,14 +175,6 @@ public void onLoad() { } } - public void setRenderState(MachineRenderState renderState) { - this.renderState = renderState; - if (level != null && !level.isClientSide) { - syncDataHolder.markClientSyncFieldDirty("renderState"); - } - scheduleRenderUpdate(); - } - @Override public final void setRemoved() { super.setRemoved(); @@ -220,6 +191,27 @@ public void onUnload() { serverTicks.clear(); } + public void onMachinePlaced(@Nullable LivingEntity player, ItemStack stack) { + if (player instanceof ServerPlayer sPlayer) { + ownerUUID = sPlayer.getUUID(); + } + + if (this instanceof IDropSaveMachine dropSaveMachine) { + CompoundTag tag = stack.getTag(); + if (tag != null) { + dropSaveMachine.loadFromItem(tag); + } + } + } + + public void onMachineDestroyed() { + for (Direction direction : GTUtil.DIRECTIONS) { + getCoverContainer().removeCover(direction, null); + } + } + + public void modifyDrops(List drops) {} + ////////////////////////////////////// // ***** Tickable Manager ****// ////////////////////////////////////// @@ -288,7 +280,7 @@ private void executeTick() { ////////////////////////////////////// /** - * Called when a player clicks this meta tile entity with a tool + * Called when a player clicks this machine with a tool * * @return SUCCESS / CONSUME (will damage tool) / FAIL if something happened, so tools will get damaged and * animations will be played @@ -402,6 +394,36 @@ 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; + } + ////////////////////////////////////// // ********** MISC ***********// ////////////////////////////////////// @@ -440,6 +462,14 @@ public boolean triggerEvent(int id, int para) { return false; } + public void setRenderState(MachineRenderState renderState) { + this.renderState = renderState; + if (level != null && !level.isClientSide) { + syncDataHolder.markClientSyncFieldDirty("renderState"); + } + scheduleRenderUpdate(); + } + public void setPaintingColor(int color) { if (color == this.paintingColor) return; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java index 3118841420b..43e78785fb7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java @@ -35,8 +35,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class SimpleGeneratorMachine extends WorkableTieredMachine implements IFancyUIMachine, IEnvironmentalHazardEmitter { 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 ef966694592..3cad4a7b6c1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java @@ -53,8 +53,6 @@ /** * All simple single machines are implemented here. */ -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class SimpleTieredMachine extends WorkableTieredMachine implements IFancyUIMachine, IHasCircuitSlot { @@ -133,8 +131,8 @@ protected void chargeBattery() { // ********** MISC ***********// ////////////////////////////////////// @Override - public void onMachineRemoved() { - super.onMachineRemoved(); + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(chargerInventory); if (!ConfigHolder.INSTANCE.machines.ghostCircuit) { clearInventory(circuitInventory.storage); 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 ac5eb261ff0..608deecd1df 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -24,10 +24,8 @@ import javax.annotation.ParametersAreNonnullByDefault; -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public abstract class WorkableTieredMachine extends TieredEnergyMachine implements IRecipeLogicMachine, - IMachineLife, IMufflableMachine, IOverclockMachine { + IMufflableMachine, IOverclockMachine { @Getter @SaveField @@ -144,7 +142,8 @@ public void onUnload() { ////////////////////////////////////// @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(importItems.storage); clearInventory(exportItems.storage); } 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/IMachineLife.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineLife.java deleted file mode 100644 index b41e7044297..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineLife.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gregtechceu.gtceu.api.machine.feature; - -import com.gregtechceu.gtceu.api.block.MetaMachineBlock; - -import net.minecraft.core.BlockPos; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.state.BlockState; - -import org.jetbrains.annotations.Nullable; - -public interface IMachineLife extends IMachineFeature { - - /** - * Called when machine removed. {@link MetaMachineBlock#onRemove(BlockState, Level, BlockPos, BlockState, boolean)} - * Only if block has changed will it be called. Ignore State changes. - */ - default void onMachineRemoved() {} - - /** - * Called when machine placed by (if exist) an entity with item. - * it won't be called when machine added by {@link Level#setBlock(BlockPos, BlockState, int, int)} - */ - default void onMachinePlaced(@Nullable LivingEntity player, ItemStack stack) {} -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineModifyDrops.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineModifyDrops.java deleted file mode 100644 index e7b57207514..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineModifyDrops.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gregtechceu.gtceu.api.machine.feature; - -import net.minecraft.world.item.ItemStack; - -import java.util.List; - -public interface IMachineModifyDrops extends IMachineFeature { - - /** - * Modify or append drops. - * - * @param drops existing drops. - */ - void onDrops(List drops); -} 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..53b74608b61 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 @@ -18,13 +18,20 @@ 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 lombok.Getter; +import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -265,4 +272,16 @@ 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/SimpleSteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java index 6aa0e01e806..380f5caf236 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 @@ -86,7 +86,8 @@ public void onLoad() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(importItems.storage); clearInventory(exportItems.storage); } 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/api/machine/steam/SteamWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java index aad87a197c9..8434c9c9fc3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.feature.IMufflableMachine; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.trait.*; @@ -42,7 +41,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class SteamWorkableMachine extends SteamMachine - implements IRecipeLogicMachine, IMufflableMachine, IMachineLife { + implements IRecipeLogicMachine, IMufflableMachine { @Getter protected final CleanroomReceiverTrait cleanroomReceiver; 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 026bc2e7ce6..05e2ceee157 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 @@ -11,7 +11,6 @@ import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; @@ -40,7 +39,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class BatteryBufferMachine extends TieredEnergyMachine - implements IControllable, IFancyUIMachine, IMachineLife, IMonitorComponent { + implements IControllable, IFancyUIMachine, IMonitorComponent { public static final long AMPS_PER_BATTERY = 2L; @@ -191,7 +190,8 @@ private List getAllBatteries() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(batteryInventory); } 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 5ae4bb47a6e..1f4410d44fe 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 @@ -13,7 +13,6 @@ import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.trait.AutoOutputTrait; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; @@ -49,7 +48,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class BlockBreakerMachine extends TieredEnergyMachine - implements IFancyUIMachine, IMachineLife, IControllable { + implements IFancyUIMachine, IControllable { @SaveField protected final NotifiableItemStackHandler cache; @@ -138,7 +137,8 @@ public void onUnload() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(chargerInventory); clearInventory(cache.storage); } 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 3a3fe593102..01228c25808 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 @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.api.sync_system.annotations.RerenderOnChanged; @@ -40,7 +39,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class ChargerMachine extends TieredEnergyMachine implements IControllable, IFancyUIMachine, IMachineLife { +public class ChargerMachine extends TieredEnergyMachine implements IControllable, IFancyUIMachine { public static final long AMPS_PER_ITEM = 4L; @@ -111,7 +110,8 @@ public int tintColor(int index) { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(chargerInventory); } 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 a4cdfc0dd1f..c1fbad809ea 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 @@ -14,7 +14,6 @@ import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.trait.AutoOutputTrait; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; @@ -58,7 +57,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class FisherMachine extends TieredEnergyMachine - implements IFancyUIMachine, IMachineLife, IWorkable { + implements IFancyUIMachine, IWorkable { @SaveField protected final NotifiableItemStackHandler cache; @@ -167,7 +166,8 @@ public boolean shouldWeatherOrTerrainExplosion() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(chargerInventory); clearInventory(baitHandler.storage); clearInventory(cache.storage); 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 22821876b65..fe480d2608b 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 @@ -15,7 +15,6 @@ import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.AutoOutputTrait; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; @@ -56,7 +55,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ItemCollectorMachine extends TieredEnergyMachine - implements IFancyUIMachine, IMachineLife, IWorkable { + implements IFancyUIMachine, IWorkable { @Getter private static final int[] INVENTORY_SIZES = { 4, 9, 16, 25, 25 }; @@ -173,7 +172,8 @@ public boolean shouldWeatherOrTerrainExplosion() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(chargerInventory); clearInventory(output.storage); } 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 a5276ee2fe9..b37b7eba360 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 @@ -57,7 +57,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MinerMachine extends WorkableTieredMachine - implements IMiner, IControllable, IFancyUIMachine, IDataInfoProvider { + implements IControllable, IFancyUIMachine, IDataInfoProvider, IMiner { @Getter @SaveField @@ -95,7 +95,7 @@ protected CustomItemStackHandler createChargerItemHandler() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { // Remove the miner pipes below this miner getRecipeLogic().onRemove(); clearInventory(exportItems.storage); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java index 6a8668edc29..1c840c8eaf1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; import com.gregtechceu.gtceu.api.machine.trait.AutoOutputTrait; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; @@ -54,7 +53,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class PumpMachine extends TieredEnergyMachine implements IUIMachine, IMachineLife { +public class PumpMachine extends TieredEnergyMachine implements IUIMachine { public static final int BASE_PUMP_RADIUS = 16; public static final int EXTRA_PUMP_RADIUS = 4; @@ -378,7 +377,8 @@ private boolean canAdvancePumpHead() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); if (getLevel() instanceof ServerLevel serverLevel) { var pos = getBlockPos().relative(Direction.DOWN); while (serverLevel.getBlockState(pos).is(GTBlocks.MINER_PIPE.get())) { 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 13708588fbb..6680049ec2e 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 @@ -12,7 +12,6 @@ import com.gregtechceu.gtceu.api.item.component.IItemComponent; import com.gregtechceu.gtceu.api.item.component.IMonitorModuleItem; import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockDisplayText; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; @@ -61,7 +60,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CentralMonitorMachine extends WorkableElectricMultiblockMachine - implements IMonitorComponent, IDataInfoProvider, IMachineLife { + implements IMonitorComponent, IDataInfoProvider { @SaveField @SyncToClient @@ -665,7 +664,8 @@ public IGuiTexture getComponentIcon() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); for (MonitorGroup group : monitorGroups) { clearInventory(group.getItemStackHandler()); clearInventory(group.getPlaceholderSlotsHandler()); 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 9ba2dd0c71e..9f65119f4b5 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 @@ -10,7 +10,6 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; @@ -48,7 +47,7 @@ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class DataAccessHatchMachine extends TieredPartMachine - implements IMachineLife, IDataAccessHatch, IDataInfoProvider, IMonitorComponent { + implements IDataAccessHatch, IDataInfoProvider, IMonitorComponent { private final Set recipes; @Getter @@ -117,7 +116,8 @@ protected int getInventorySize() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(importItems.storage); } 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 496ed12bf64..1c12f7a736f 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 @@ -12,7 +12,6 @@ import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.CircuitFancyConfigurator; import com.gregtechceu.gtceu.api.machine.feature.IHasCircuitSlot; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; @@ -53,7 +52,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class FluidHatchPartMachine extends TieredIOPartMachine implements IMachineLife, IHasCircuitSlot, IPaintable { +public class FluidHatchPartMachine extends TieredIOPartMachine implements IHasCircuitSlot, IPaintable { public static final int INITIAL_TANK_CAPACITY_1X = 8 * FluidType.BUCKET_VOLUME; public static final int INITIAL_TANK_CAPACITY_4X = 2 * FluidType.BUCKET_VOLUME; @@ -102,7 +101,8 @@ public static int getTankCapacity(int initialCapacity, int tier) { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); if (!ConfigHolder.INSTANCE.machines.ghostCircuit) { clearInventory(circuitInventory.storage); } 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 e6306d10891..b37471501fa 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 @@ -10,7 +10,6 @@ import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.CircuitFancyConfigurator; import com.gregtechceu.gtceu.api.machine.feature.IHasCircuitSlot; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IDistinctPart; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; @@ -49,7 +48,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ItemBusPartMachine extends TieredIOPartMachine - implements IDistinctPart, IMachineLife, IHasCircuitSlot, IPaintable { + implements IDistinctPart, IHasCircuitSlot, IPaintable { @Getter @SaveField @@ -104,7 +103,8 @@ protected NotifiableItemStackHandler createCircuitItemHandler(IO io) { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(getInventory().storage); if (!ConfigHolder.INSTANCE.machines.ghostCircuit) { 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..c03eb50257f 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,8 +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; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; @@ -56,7 +54,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MaintenanceHatchPartMachine extends TieredPartMachine - implements IMachineLife, IMaintenanceMachine, IInteractedMachine { + implements IMaintenanceMachine { private static final float MAX_DURATION_MULTIPLIER = 1.1f; private static final float MIN_DURATION_MULTIPLIER = 0.9f; @@ -99,7 +97,8 @@ protected NotifiableItemStackHandler createInventory() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(itemStackHandler); } @@ -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/ObjectHolderMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java index f9c3b37191a..405ea3e2d23 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 @@ -9,7 +9,6 @@ import com.gregtechceu.gtceu.api.item.component.IDataItem; import com.gregtechceu.gtceu.api.item.component.IItemComponent; import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; @@ -32,7 +31,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class ObjectHolderMachine extends MultiblockPartMachine implements IObjectHolder, IMachineLife { +public class ObjectHolderMachine extends MultiblockPartMachine implements IObjectHolder { // purposefully not exposed to automation or capabilities @SaveField @@ -87,7 +86,8 @@ private ItemStack getHeldItem(int slot, boolean remove) { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(this.heldItems.storage); } 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..fcf3483d609 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,8 +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.*; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; @@ -44,7 +42,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class RotorHolderPartMachine extends TieredPartMachine - implements IMachineLife, IRotorHolderMachine, IInteractedMachine { + implements IRotorHolderMachine { @SaveField public final NotifiableItemStackHandler inventory; @@ -74,7 +72,8 @@ public RotorHolderPartMachine(BlockEntityCreationInfo info, int tier) { ////////////////////////////////////// @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(inventory.storage); } @@ -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/hpca/HPCAComponentPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java index 8506fb1d581..84a2b92f994 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IHPCAComponentHatch; -import com.gregtechceu.gtceu.api.machine.feature.IMachineModifyDrops; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.sync_system.annotations.RerenderOnChanged; @@ -24,7 +23,7 @@ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public abstract class HPCAComponentPartMachine extends MultiblockPartMachine - implements IHPCAComponentHatch, IMachineModifyDrops { + implements IHPCAComponentHatch { @SaveField @SyncToClient @@ -89,7 +88,7 @@ public void setActive(boolean active) { } @Override - public void onDrops(List drops) { + public void modifyDrops(List drops) { for (int i = 0; i < drops.size(); ++i) { ItemStack drop = drops.get(i); if (drop.getItem() == this.getDefinition().getItem()) { 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..d2bfcc46053 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; @@ -44,10 +45,13 @@ import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import org.jetbrains.annotations.NotNull; +import javax.annotation.ParametersAreNonnullByDefault; import java.util.*; 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/multiblock/primitive/PrimitiveWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java index f27bdc427fc..787b5938e09 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 @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.machine.feature.IEnvironmentalHazardEmitter; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; @@ -19,7 +18,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class PrimitiveWorkableMachine extends WorkableMultiblockMachine - implements IMachineLife, IEnvironmentalHazardEmitter { + implements IEnvironmentalHazardEmitter { @SaveField public final NotifiableItemStackHandler importItems; @@ -61,7 +60,8 @@ protected NotifiableFluidTank createExportFluidHandler() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(importItems.storage); clearInventory(exportItems.storage); } 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/steam/SteamMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java index a4d45488261..c19214ccc33 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 @@ -47,8 +47,8 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class SteamMinerMachine extends SteamWorkableMachine implements IMiner, IControllable, IExhaustVentMachine, - IUIMachine, IMachineLife, IDataInfoProvider { +public class SteamMinerMachine extends SteamWorkableMachine implements IControllable, IExhaustVentMachine, + IUIMachine, IDataInfoProvider, IMiner { @Getter @SaveField @@ -89,7 +89,8 @@ protected NotifiableItemStackHandler createExportItemHandler() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); getRecipeLogic().onRemove(); clearInventory(exportItems.storage); } @@ -211,6 +212,7 @@ void addDisplayText2(List textList) { textList.add(Component.translatable("gtceu.machine.miner.minez", this.getRecipeLogic().getMineZ())); } + @Override public boolean drainInput(boolean simulate) { long resultSteam = steamTank.getFluidInTank(0).getAmount() - energyPerTick; if (!this.isVentingBlocked() && resultSteam >= 0L && resultSteam <= steamTank.getTankCapacity(0)) { 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 667b50e615f..8f240d43a8b 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 @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.steam.SteamBoilerMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; @@ -36,7 +35,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class SteamSolidBoilerMachine extends SteamBoilerMachine implements IMachineLife { +public class SteamSolidBoilerMachine extends SteamBoilerMachine { public static final Object2BooleanMap FUEL_CACHE = new Object2BooleanOpenHashMap<>(); @@ -138,7 +137,8 @@ public ModularUI createUI(Player entityPlayer) { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(fuelHandler.storage); clearInventory(ashHandler.storage); } 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 9fa3d889e57..505feaabcbf 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 @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.machine.TieredMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.trait.AutoOutputTrait; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; @@ -27,7 +26,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class BufferMachine extends TieredMachine implements IMachineLife, IFancyUIMachine { +public class BufferMachine extends TieredMachine implements IFancyUIMachine { public static final int TANK_SIZE = 64000; @@ -106,7 +105,8 @@ public Widget createUIWidget() { //////////////////////////////// @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); clearInventory(inventory.storage); } } 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..65069673091 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 @@ -38,8 +38,8 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class CrateMachine extends MetaMachine implements IUIMachine, IMachineLife, - IDropSaveMachine, IInteractedMachine { +public class CrateMachine extends MetaMachine implements IUIMachine, + 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 @@ -135,7 +135,8 @@ public boolean saveBreak() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); if (!isTaped) clearInventory(inventory.storage); } } 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..d711ccafa20 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 { /** @@ -188,6 +187,13 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play var remaining = cache.insertItem(0, held, false); player.setItemInHand(InteractionHand.MAIN_HAND, remaining); return InteractionResult.SUCCESS; + } else if (held.isEmpty()) { + var drained = cache.extractItem(0, player.isShiftKeyDown() ? stored.getMaxStackSize() : 1, false); + if (!drained.isEmpty()) { + if (!player.addItem(drained)) { + Block.popResourceFromFace(world, getBlockPos(), getFrontFacing(), drained); + } + } } else if (isDoubleHit(player.getUUID())) { for (var stack : player.getInventory().items) { if (!stack.isEmpty() && cache.canInsert(stack)) { @@ -198,29 +204,13 @@ 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) { return (System.currentTimeMillis() - INTERACTION_LOGGER.getLong(uuid)) < 300; } - @Override - public boolean onLeftClick(Player player, Level world, InteractionHand hand, BlockPos pos, Direction direction) { - if (direction == getFrontFacing() && !isRemote()) { - if (GTToolType.WRENCH.matchTags.stream().anyMatch(player.getItemInHand(hand)::is)) return false; - if (!stored.isEmpty()) { // pull - var drained = cache.extractItem(0, player.isShiftKeyDown() ? stored.getMaxStackSize() : 1, false); - if (!drained.isEmpty()) { - if (!player.addItem(drained)) { - Block.popResourceFromFace(world, getBlockPos(), getFrontFacing(), drained); - } - } - } - } - return IInteractedMachine.super.onLeftClick(player, world, hand, pos, direction); - } - public boolean isLocked() { return !lockedItem.getStackInSlot(0).isEmpty(); } 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..66737e82ce5 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; @@ -87,7 +85,6 @@ import net.minecraftforge.event.*; import net.minecraftforge.event.entity.living.*; import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.level.BlockEvent; import net.minecraftforge.event.level.ChunkWatchEvent; import net.minecraftforge.event.level.LevelEvent; @@ -222,18 +219,6 @@ 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); - } - } - } - @SubscribeEvent public static void onBreakEvent(BlockEvent.BreakEvent event) { var machine = MetaMachine.getMachine(event.getLevel(), event.getPos()); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java index c2a08654ab1..fb72184cb79 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; import com.gregtechceu.gtceu.api.machine.feature.IHasCircuitSlot; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; import com.gregtechceu.gtceu.integration.ae2.gui.widget.AEItemConfigWidget; @@ -33,7 +32,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MEInputBusPartMachine extends MEBusPartMachine - implements IDataStickInteractable, IMachineLife, IHasCircuitSlot { + implements IDataStickInteractable, IHasCircuitSlot { protected final static int CONFIG_SIZE = 16; @@ -48,7 +47,7 @@ public MEInputBusPartMachine(BlockEntityCreationInfo info) { ///////////////////////////////// @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { flushInventory(); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java index 747b6e45d3a..1de078d911c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; import com.gregtechceu.gtceu.api.machine.feature.IHasCircuitSlot; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; import com.gregtechceu.gtceu.integration.ae2.gui.widget.AEFluidConfigWidget; @@ -34,7 +33,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MEInputHatchPartMachine extends MEHatchPartMachine - implements IDataStickInteractable, IMachineLife, IHasCircuitSlot { + implements IDataStickInteractable, IHasCircuitSlot { protected ExportOnlyAEFluidList aeFluidHandler; @@ -47,7 +46,8 @@ public MEInputHatchPartMachine(BlockEntityCreationInfo info) { ///////////////////////////////// @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); flushInventory(); } 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..8c7a45b516b 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,8 +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; import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; @@ -33,7 +31,7 @@ */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public class MEOutputBusPartMachine extends MEBusPartMachine implements IMachineLife, IInteractedMachine { +public class MEOutputBusPartMachine extends MEBusPartMachine { @SaveField private KeyStorage internalBuffer; // Do not use KeyCounter, use our simple implementation @@ -53,7 +51,7 @@ protected NotifiableItemStackHandler createInventory() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { var grid = getMainNode().getGrid(); if (grid != null && !internalBuffer.isEmpty()) { for (var entry : internalBuffer) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java index 28bb3c72746..268dbdf0831 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.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.IMachineLife; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; @@ -32,7 +31,7 @@ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public class MEOutputHatchPartMachine extends MEHatchPartMachine implements IMachineLife { +public class MEOutputHatchPartMachine extends MEHatchPartMachine { @SaveField private KeyStorage internalBuffer; // Do not use KeyCounter, use our simple implementation @@ -52,7 +51,8 @@ protected NotifiableFluidTank createTank(int initialCapacity, int slots) { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); var grid = getMainNode().getGrid(); if (grid != null && !internalBuffer.isEmpty()) { for (var entry : internalBuffer) { 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 46c6131fd6d..552b3f7663b 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 @@ -415,7 +415,7 @@ public PatternContainerGroup getTerminalGroup() { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { clearInventory(patternInventory); clearInventory(shareInventory); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferProxyPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferProxyPartMachine.java index ebbc916d1fb..aefb82537cd 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferProxyPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferProxyPartMachine.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; -import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; @@ -32,8 +31,7 @@ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public class MEPatternBufferProxyPartMachine extends TieredIOPartMachine - implements IMachineLife, IDataStickInteractable { +public class MEPatternBufferProxyPartMachine extends TieredIOPartMachine implements IDataStickInteractable { @Getter private final ProxySlotRecipeHandler proxySlotRecipeHandler; @@ -96,7 +94,8 @@ public ModularUI createUI(Player entityPlayer) { } @Override - public void onMachineRemoved() { + public void onMachineDestroyed() { + super.onMachineDestroyed(); var buf = getBuffer(); if (buf != null) { buf.removeProxy(this);