diff --git a/src/main/java/com/simibubi/create/compat/trainmap/FTBChunksTrainMap.java b/src/main/java/com/simibubi/create/compat/trainmap/FTBChunksTrainMap.java index a1285a3d9f..1234313176 100644 --- a/src/main/java/com/simibubi/create/compat/trainmap/FTBChunksTrainMap.java +++ b/src/main/java/com/simibubi/create/compat/trainmap/FTBChunksTrainMap.java @@ -9,6 +9,7 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import dev.ftb.mods.ftbchunks.client.gui.LargeMapScreen; import dev.ftb.mods.ftbchunks.client.gui.RegionMapPanel; +import dev.ftb.mods.ftblibrary.ui.BaseScreen; import dev.ftb.mods.ftblibrary.ui.ScreenWrapper; import dev.ftb.mods.ftblibrary.ui.Widget; import net.minecraft.client.Minecraft; @@ -152,7 +153,7 @@ public class FTBChunksTrainMap { private static LargeMapScreen getAsLargeMapScreen(Screen screen) { if (!(screen instanceof ScreenWrapper screenWrapper)) return null; - Object wrapped = ObfuscationReflectionHelper.getPrivateValue(ScreenWrapper.class, screenWrapper, "wrappedGui"); + BaseScreen wrapped = screenWrapper.getGui(); if (!(wrapped instanceof LargeMapScreen largeMapScreen)) return null; return largeMapScreen; diff --git a/src/main/java/com/simibubi/create/content/contraptions/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/Contraption.java index 55a0f9600e..60b0735b08 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/Contraption.java @@ -905,6 +905,10 @@ public abstract class Contraption { if (updateTag != null) { c.put("Data", updateTag); } + // legacy: use full data if update tag is not available + if (updateTag == null && block.nbt() != null) { + c.put("Data", block.nbt()); + } } else { // otherwise, write actual data as the data, save updateTag on its own if (block.nbt() != null) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenu.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenu.java index e4da0aa611..dc776d2266 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenu.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenu.java @@ -173,7 +173,8 @@ public class RadialWrenchMenu extends AbstractSimiScreen { @Override public void tick() { ticksOpen++; - + if (!level.getBlockState(pos).is(state.getBlock())) + Minecraft.getInstance().setScreen(null); super.tick(); } @@ -184,8 +185,6 @@ public class RadialWrenchMenu extends AbstractSimiScreen { PoseStack ms = graphics.pose(); - LocalPlayer player = Minecraft.getInstance().player; - ms.pushPose(); ms.translate(x, y, 0); @@ -271,6 +270,8 @@ public class RadialWrenchMenu extends AbstractSimiScreen { .translateY(-(sectorWidth / 2f + innerRadius)) .rotateZDegrees(-i * sectorAngle); + poseStack.translate(0, 0, 100); + try { GuiGameElement.of(blockState, blockEntity) .rotateBlock(player.getXRot(), player.getYRot() + 180, 0f) diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenuSubmitPacket.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenuSubmitPacket.java index a8c98a9cc0..3655256d4a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenuSubmitPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenuSubmitPacket.java @@ -40,6 +40,9 @@ public class RadialWrenchMenuSubmitPacket extends SimplePacketBase { ServerPlayer player = context.getSender(); Level level = player.level(); + if (!level.getBlockState(blockPos).is(newState.getBlock())) + return; + BlockState updatedState = Block.updateFromNeighbourShapes(newState, level, blockPos); KineticBlockEntity.switchToBlockState(level, blockPos, updatedState);