Reflecting on my choices

- Fixed wrench radial menu duping and gui depth
- Fixed contraptions with legacy data not sending update tags
This commit is contained in:
simibubi 2025-02-11 13:08:39 +01:00
parent a268ced35a
commit 0c21da9899
4 changed files with 13 additions and 4 deletions

View file

@ -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;

View file

@ -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) {

View file

@ -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)

View file

@ -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);