Skip to content

Commit 9d79d8f

Browse files
committed
remove IInteractedMachine
1 parent cf54762 commit 9d79d8f

19 files changed

Lines changed: 99 additions & 132 deletions

src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,10 @@
44
import com.gregtechceu.gtceu.api.data.RotationState;
55
import com.gregtechceu.gtceu.api.item.IGTTool;
66
import com.gregtechceu.gtceu.api.item.MetaMachineItem;
7-
import com.gregtechceu.gtceu.api.item.tool.GTToolType;
8-
import com.gregtechceu.gtceu.api.item.tool.ToolHelper;
97
import com.gregtechceu.gtceu.api.machine.MachineDefinition;
108
import com.gregtechceu.gtceu.api.machine.MetaMachine;
119
import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition;
1210
import com.gregtechceu.gtceu.api.machine.feature.*;
13-
import com.gregtechceu.gtceu.api.machine.trait.feature.IInteractionTrait;
1411
import com.gregtechceu.gtceu.api.sync_system.ManagedSyncBlockEntity;
1512
import com.gregtechceu.gtceu.common.data.GTItems;
1613
import com.gregtechceu.gtceu.common.machine.owner.MachineOwner;
@@ -56,7 +53,6 @@
5653
import org.jetbrains.annotations.Nullable;
5754

5855
import java.util.List;
59-
import java.util.Set;
6056

6157
import javax.annotation.ParametersAreNonnullByDefault;
6258

@@ -278,18 +274,8 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player
278274
machine.setOwnerUUID(sPlayer.getUUID());
279275
}
280276

281-
Set<GTToolType> types = ToolHelper.getToolTypes(itemStack);
282-
if (!types.isEmpty() && ToolHelper.canUse(itemStack) || types.isEmpty() && player.isShiftKeyDown()) {
283-
var result = machine.onToolClick(types, itemStack, new UseOnContext(player, hand, hit));
284-
if (result.getSecond() == InteractionResult.CONSUME && player instanceof ServerPlayer serverPlayer) {
285-
ToolHelper.playToolSound(result.getFirst(), serverPlayer);
286-
287-
if (!serverPlayer.isCreative()) {
288-
ToolHelper.damageItem(itemStack, serverPlayer, 1);
289-
}
290-
}
291-
if (result.getSecond() != InteractionResult.PASS) return result.getSecond();
292-
}
277+
InteractionResult machineInteractResult = machine.onUse(state, world, pos, player, hand, hit);
278+
if (machineInteractResult != InteractionResult.PASS) return machineInteractResult;
293279

294280
if (itemStack.is(GTItems.PORTABLE_SCANNER.get())) {
295281
return itemStack.getItem().use(world, player, hand).getResult();
@@ -299,17 +285,6 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player
299285
shouldOpenUi = gtToolItem.definition$shouldOpenUIAfterUse(new UseOnContext(player, hand, hit));
300286
}
301287

302-
for (var trait : machine.getTraitHolder().getAllTraits()) {
303-
if (trait instanceof IInteractionTrait interactionTrait) {
304-
InteractionResult result = interactionTrait.onUse(state, world, pos, player, hand, hit);
305-
if (result != InteractionResult.PASS) return result;
306-
}
307-
}
308-
309-
if (machine instanceof IInteractedMachine interactedMachine) {
310-
var result = interactedMachine.onUse(state, world, pos, player, hand, hit);
311-
if (result != InteractionResult.PASS) return result;
312-
}
313288
if (shouldOpenUi && machine instanceof IUIMachine uiMachine &&
314289
MachineOwner.canOpenOwnerMachine(player, machine)) {
315290
return uiMachine.tryToOpenUI(player, hand, hit);

src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import com.gregtechceu.gtceu.api.gui.fancy.IFancyTooltip;
1818
import com.gregtechceu.gtceu.api.item.tool.GTToolType;
1919
import com.gregtechceu.gtceu.api.item.tool.IToolGridHighlight;
20+
import com.gregtechceu.gtceu.api.item.tool.ToolHelper;
2021
import com.gregtechceu.gtceu.api.machine.feature.*;
2122
import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine;
2223
import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart;
@@ -402,6 +403,46 @@ protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand
402403
return InteractionResult.PASS;
403404
}
404405

406+
/**
407+
* Called when a machine is clicked.
408+
*/
409+
public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
410+
BlockHitResult hit) {
411+
ItemStack itemStack = player.getItemInHand(hand);
412+
413+
Set<GTToolType> types = ToolHelper.getToolTypes(itemStack);
414+
if (!types.isEmpty() && ToolHelper.canUse(itemStack) || types.isEmpty() && player.isShiftKeyDown()) {
415+
var result = onToolClick(types, itemStack, new UseOnContext(player, hand, hit));
416+
if (result.getSecond() == InteractionResult.CONSUME && player instanceof ServerPlayer serverPlayer) {
417+
ToolHelper.playToolSound(result.getFirst(), serverPlayer);
418+
419+
if (!serverPlayer.isCreative()) {
420+
ToolHelper.damageItem(itemStack, serverPlayer, 1);
421+
}
422+
}
423+
if (result.getSecond() != InteractionResult.PASS) return result.getSecond();
424+
}
425+
426+
for (var trait : getTraitHolder().getAllTraits()) {
427+
if (trait instanceof IInteractionTrait interactionTrait) {
428+
InteractionResult result = interactionTrait.onUse(state, world, pos, player, hand, hit);
429+
if (result != InteractionResult.PASS) return result;
430+
}
431+
}
432+
433+
return InteractionResult.PASS;
434+
}
435+
436+
/**
437+
* Called when a machine is left clicked.
438+
*
439+
* @return true to cancel the click event, false to continue processing
440+
*/
441+
public boolean onLeftClick(Player player, Level world, InteractionHand hand, BlockPos pos,
442+
@Nullable Direction face) {
443+
return false;
444+
}
445+
405446
//////////////////////////////////////
406447
// ********** MISC ***********//
407448
//////////////////////////////////////

src/main/java/com/gregtechceu/gtceu/api/machine/feature/IInteractedMachine.java

Lines changed: 0 additions & 36 deletions
This file was deleted.

src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,16 @@
11
package com.gregtechceu.gtceu.api.machine.feature.multiblock;
22

33
import com.gregtechceu.gtceu.api.capability.IParallelHatch;
4-
import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine;
54
import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature;
65
import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine;
76
import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties;
87
import com.gregtechceu.gtceu.api.pattern.BlockPattern;
98
import com.gregtechceu.gtceu.api.pattern.MultiblockState;
10-
import com.gregtechceu.gtceu.client.renderer.MultiblockInWorldPreviewRenderer;
11-
import com.gregtechceu.gtceu.config.ConfigHolder;
129

1310
import net.minecraft.core.BlockPos;
1411
import net.minecraft.core.Direction;
15-
import net.minecraft.world.InteractionHand;
16-
import net.minecraft.world.InteractionResult;
17-
import net.minecraft.world.entity.player.Player;
18-
import net.minecraft.world.level.Level;
1912
import net.minecraft.world.level.block.state.BlockState;
2013
import net.minecraft.world.level.block.state.properties.BooleanProperty;
21-
import net.minecraft.world.phys.BlockHitResult;
2214

2315
import org.jetbrains.annotations.NotNull;
2416
import org.jetbrains.annotations.Nullable;
@@ -28,7 +20,7 @@
2820
import java.util.Optional;
2921
import java.util.concurrent.locks.Lock;
3022

31-
public interface IMultiController extends IMachineFeature, IInteractedMachine {
23+
public interface IMultiController extends IMachineFeature {
3224

3325
BooleanProperty IS_FORMED_PROPERTY = GTMachineModelProperties.IS_FORMED;
3426

@@ -196,22 +188,6 @@ default Comparator<IMultiPart> getPartSorter() {
196188
return self().getDefinition().getPartSorter().apply(self());
197189
}
198190

199-
/**
200-
* Show the preview of structure.
201-
*/
202-
@Override
203-
default InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
204-
BlockHitResult hit) {
205-
if (!self().isFormed() && player.isShiftKeyDown() && player.getItemInHand(hand).isEmpty()) {
206-
if (world.isClientSide()) {
207-
MultiblockInWorldPreviewRenderer.showPreview(pos, self(),
208-
ConfigHolder.INSTANCE.client.inWorldPreviewDuration * 20);
209-
}
210-
return InteractionResult.SUCCESS;
211-
}
212-
return IInteractedMachine.super.onUse(state, world, pos, player, hand, hit);
213-
}
214-
215191
default boolean allowCircuitSlots() {
216192
return true;
217193
}

src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,19 @@
1717
import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField;
1818
import com.gregtechceu.gtceu.api.sync_system.annotations.SyncToClient;
1919
import com.gregtechceu.gtceu.client.model.machine.MachineRenderState;
20+
import com.gregtechceu.gtceu.client.renderer.MultiblockInWorldPreviewRenderer;
21+
import com.gregtechceu.gtceu.config.ConfigHolder;
2022

2123
import net.minecraft.MethodsReturnNonnullByDefault;
2224
import net.minecraft.core.BlockPos;
2325
import net.minecraft.core.Direction;
2426
import net.minecraft.server.level.ServerLevel;
27+
import net.minecraft.world.InteractionHand;
28+
import net.minecraft.world.InteractionResult;
29+
import net.minecraft.world.entity.player.Player;
30+
import net.minecraft.world.level.Level;
2531
import net.minecraft.world.level.block.state.BlockState;
32+
import net.minecraft.world.phys.BlockHitResult;
2633

2734
import lombok.Getter;
2835
import org.jetbrains.annotations.NotNull;
@@ -265,4 +272,17 @@ public void setFrontFacing(Direction facing) {
265272
checkPattern();
266273
}
267274
}
275+
276+
@Override
277+
public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
278+
BlockHitResult hit) {
279+
if (!isFormed() && player.isShiftKeyDown() && player.getItemInHand(hand).isEmpty()) {
280+
if (world.isClientSide()) {
281+
MultiblockInWorldPreviewRenderer.showPreview(pos, this,
282+
ConfigHolder.INSTANCE.client.inWorldPreviewDuration * 20);
283+
}
284+
return InteractionResult.SUCCESS;
285+
}
286+
return super.onUse(state, world, pos, player, hand, hit);
287+
}
268288
}

src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import com.gregtechceu.gtceu.api.machine.TickableSubscription;
1111
import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider;
1212
import com.gregtechceu.gtceu.api.machine.feature.IExplosionMachine;
13-
import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine;
1413
import com.gregtechceu.gtceu.api.machine.feature.IUIMachine;
1514
import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank;
1615
import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic;
@@ -67,8 +66,7 @@
6766
@ParametersAreNonnullByDefault
6867
@MethodsReturnNonnullByDefault
6968
public abstract class SteamBoilerMachine extends SteamWorkableMachine
70-
implements IUIMachine, IExplosionMachine, IDataInfoProvider,
71-
IInteractedMachine {
69+
implements IUIMachine, IExplosionMachine, IDataInfoProvider {
7270

7371
@SaveField
7472
public final NotifiableFluidTank waterTank;
@@ -304,7 +302,7 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play
304302
return InteractionResult.SUCCESS;
305303
}
306304
}
307-
return IInteractedMachine.super.onUse(state, world, pos, player, hand, hit);
305+
return super.onUse(state, world, pos, player, hand, hit);
308306
}
309307

310308
//////////////////////////////////////

src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import com.gregtechceu.gtceu.api.item.tool.GTToolType;
99
import com.gregtechceu.gtceu.api.item.tool.ToolHelper;
1010
import com.gregtechceu.gtceu.api.machine.TickableSubscription;
11-
import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine;
1211
import com.gregtechceu.gtceu.api.machine.feature.IMachineLife;
1312
import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine;
1413
import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine;
@@ -56,7 +55,7 @@
5655
@ParametersAreNonnullByDefault
5756
@MethodsReturnNonnullByDefault
5857
public class MaintenanceHatchPartMachine extends TieredPartMachine
59-
implements IMachineLife, IMaintenanceMachine, IInteractedMachine {
58+
implements IMachineLife, IMaintenanceMachine {
6059

6160
private static final float MAX_DURATION_MULTIPLIER = 1.1f;
6261
private static final float MIN_DURATION_MULTIPLIER = 0.9f;
@@ -330,7 +329,7 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play
330329
return InteractionResult.SUCCESS;
331330
}
332331
}
333-
return InteractionResult.PASS;
332+
return super.onUse(state, world, pos, player, hand, hit);
334333
}
335334

336335
//////////////////////////////////////

src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import com.gregtechceu.gtceu.api.gui.GuiTextures;
88
import com.gregtechceu.gtceu.api.gui.widget.BlockableSlotWidget;
99
import com.gregtechceu.gtceu.api.machine.TickableSubscription;
10-
import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine;
1110
import com.gregtechceu.gtceu.api.machine.feature.IMachineLife;
1211
import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine;
1312
import com.gregtechceu.gtceu.api.machine.feature.multiblock.*;
@@ -44,7 +43,7 @@
4443
@ParametersAreNonnullByDefault
4544
@MethodsReturnNonnullByDefault
4645
public class RotorHolderPartMachine extends TieredPartMachine
47-
implements IMachineLife, IRotorHolderMachine, IInteractedMachine {
46+
implements IMachineLife, IRotorHolderMachine {
4847

4948
@SaveField
5049
public final NotifiableItemStackHandler inventory;
@@ -217,8 +216,11 @@ public void setRotorStack(ItemStack rotorStack) {
217216
inventory.onContentsChanged();
218217
}
219218

219+
@Override
220220
public InteractionResult onUse(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand,
221221
BlockHitResult hit) {
222+
var superResult = super.onUse(state, level, pos, player, hand, hit);
223+
if (superResult != InteractionResult.PASS) return superResult;
222224
if (!isRemote() && getRotorSpeed() > 0 && !player.isCreative()) {
223225
TurbineRotorBehaviour behaviour = TurbineRotorBehaviour.getBehaviour(getRotorStack());
224226
if (behaviour != null) {

src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/AdvancedMonitorPartMachine.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo;
44
import com.gregtechceu.gtceu.api.machine.TickableSubscription;
5-
import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine;
65
import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection;
76
import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField;
87

@@ -19,8 +18,11 @@
1918
import lombok.Getter;
2019
import org.jetbrains.annotations.Nullable;
2120

21+
import javax.annotation.ParametersAreNonnullByDefault;
22+
2223
@MethodsReturnNonnullByDefault
23-
public class AdvancedMonitorPartMachine extends MonitorPartMachine implements IInteractedMachine {
24+
@ParametersAreNonnullByDefault
25+
public class AdvancedMonitorPartMachine extends MonitorPartMachine {
2426

2527
@Getter
2628
@SaveField
@@ -44,8 +46,7 @@ public AdvancedMonitorPartMachine(BlockEntityCreationInfo info) {
4446
@Override
4547
public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
4648
BlockHitResult hit) {
47-
if (hit.getDirection() != getFrontFacing())
48-
return IInteractedMachine.super.onUse(state, world, pos, player, hand, hit);
49+
if (hit.getDirection() != getFrontFacing()) return super.onUse(state, world, pos, player, hand, hit);
4950
clicked = true;
5051
clickPosX = hit.getLocation()
5152
.get(RelativeDirection.RIGHT.getRelative(getFrontFacing(), getUpwardsFacing(), false).getAxis());

src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.lowdragmc.lowdraglib.utils.BlockInfo;
2020

21+
import net.minecraft.MethodsReturnNonnullByDefault;
2122
import net.minecraft.core.BlockPos;
2223
import net.minecraft.core.Direction;
2324
import net.minecraft.core.Holder;
@@ -46,8 +47,12 @@
4647

4748
import java.util.*;
4849

50+
import javax.annotation.ParametersAreNonnullByDefault;
51+
4952
import static com.gregtechceu.gtceu.api.pattern.util.RelativeDirection.*;
5053

54+
@ParametersAreNonnullByDefault
55+
@MethodsReturnNonnullByDefault
5156
public class CharcoalPileIgniterMachine extends WorkableMultiblockMachine implements IWorkable {
5257

5358
private static final int MIN_RADIUS = 1;

0 commit comments

Comments
 (0)