Skip to content

Commit 451c707

Browse files
committed
Allow shrinking data component to create new machine rooms
1 parent 7996fb0 commit 451c707

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

neoforge-main/src/main/java/dev/compactmods/machines/machine/block/UnboundCompactMachineBlock.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import dev.compactmods.machines.api.shrinking.PSDTags;
1010
import dev.compactmods.machines.machine.Machines;
1111
import dev.compactmods.machines.room.RoomHelper;
12+
import dev.compactmods.machines.shrinking.PersonalShrinkingDevice;
13+
import dev.compactmods.machines.shrinking.Shrinking;
1214
import net.minecraft.core.BlockPos;
1315
import net.minecraft.server.MinecraftServer;
1416
import net.minecraft.server.level.ServerLevel;
@@ -64,7 +66,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev
6466
}
6567

6668
MinecraftServer server = level.getServer();
67-
if (stack.is(PSDTags.ITEM) && player instanceof ServerPlayer sp) {
69+
if ((stack.is(PSDTags.ITEM) || stack.has(Shrinking.DataComponents.SHRINKING_CONFIG)) && player instanceof ServerPlayer sp) {
6870
level.getBlockEntity(pos, Machines.BlockEntities.UNBOUND_MACHINE.get()).ifPresent(unboundEntity -> {
6971

7072
RoomTemplate template = RoomTemplateHelper.getTemplate(level, unboundEntity.templateId());
@@ -84,7 +86,8 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev
8486
ent.setData(Machines.Attachments.MACHINE_COLOR, color);
8587

8688
try {
87-
RoomHelper.teleportPlayerIntoRoom(server, sp, newRoom, RoomEntryPoint.playerEnteringMachine(player));
89+
RoomHelper.teleportPlayerIntoRoom(server, sp, newRoom, RoomEntryPoint.playerEnteringMachine(player))
90+
.thenAccept(res -> PersonalShrinkingDevice.handleSuccessfulAtomicShift(stack, sp, PersonalShrinkingDevice.config(stack)));
8891
} catch (MissingDimensionException e) {
8992
throw new RuntimeException(e);
9093
}

neoforge-main/src/main/java/dev/compactmods/machines/shrinking/PersonalShrinkingDevice.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,18 @@ public InteractionResultHolder<ItemStack> use(Level world, Player player, Intera
7676
public static void handleSuccessfulAtomicShift(ItemStack stack, ServerPlayer serverPlayer, ShrinkingDeviceConfiguration config) {
7777
switch (config.afterUseAction()) {
7878
case DAMAGE:
79-
stack.hurtAndBreak(1, serverPlayer.serverLevel(), serverPlayer, item -> {
80-
// RIP, hope you have spare crafting materials nearby!
81-
});
79+
if(!serverPlayer.hasInfiniteMaterials()) {
80+
stack.hurtAndBreak(1, serverPlayer.serverLevel(), serverPlayer, item -> {
81+
// RIP, hope you have spare crafting materials nearby!
82+
});
83+
}
8284
break;
8385

8486
case BREAK:
85-
stack.consume(1, serverPlayer);
86-
PlayerUtil.breakItemEffect(serverPlayer, stack);
87+
if(!serverPlayer.hasInfiniteMaterials()) {
88+
stack.consume(1, serverPlayer);
89+
PlayerUtil.breakItemEffect(serverPlayer, stack);
90+
}
8791
break;
8892
}
8993
}

0 commit comments

Comments
 (0)