From 613a08a41b58cdfda45e0b68eadca8185e9ebd99 Mon Sep 17 00:00:00 2001 From: Scribble Date: Fri, 24 Oct 2025 20:08:46 +0200 Subject: [PATCH] [Savestates] Fix GuiRenameScreen desyncing - Fix NPE with SubtickableGui --- .../tasmod/savestates/SavestateHandlerServer.java | 3 +-- .../savestates/handlers/SavestateGuiHandlerClient.java | 1 + .../tasmod/virtual/VirtualInterpolationHandler.java | 7 +------ 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerServer.java b/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerServer.java index aae6764a..2b7ee354 100644 --- a/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerServer.java +++ b/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerServer.java @@ -457,8 +457,7 @@ public void onServerPacket(PacketID id, ByteBuffer buf, String username) throws * Once the player is done renaming the savestate, the screens are cleared for all players. */ try { - // TODO Currently desyncs the savestates... Bigger investigation necessary -// TASmod.server.sendTo(player, new TASmodBufferBuilder(TASmodPackets.SAVESTATE_RENAME_SCREEN).writeInt(paths.getSavestate().index)); + TASmod.server.sendTo(player, new TASmodBufferBuilder(TASmodPackets.SAVESTATE_RENAME_SCREEN).writeInt(paths.getSavestate().index)); } catch (Exception e) { LOGGER.catching(e); } diff --git a/src/main/java/com/minecrafttas/tasmod/savestates/handlers/SavestateGuiHandlerClient.java b/src/main/java/com/minecrafttas/tasmod/savestates/handlers/SavestateGuiHandlerClient.java index 43556cfa..37c3709c 100644 --- a/src/main/java/com/minecrafttas/tasmod/savestates/handlers/SavestateGuiHandlerClient.java +++ b/src/main/java/com/minecrafttas/tasmod/savestates/handlers/SavestateGuiHandlerClient.java @@ -56,6 +56,7 @@ else if (state == SavestateState.LOADING) break; case SAVESTATE_RENAME_SCREEN: int index = TASmodBufferBuilder.readInt(buf); + mc.displayGuiScreen(null); TASmodClient.tickSchedulerClient.add(() -> { displayGuiRename(index); }); diff --git a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInterpolationHandler.java b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInterpolationHandler.java index 9c2fe560..1997ffc4 100644 --- a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInterpolationHandler.java +++ b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualInterpolationHandler.java @@ -33,14 +33,10 @@ public class VirtualInterpolationHandler implements EventVirtualInput.EventVirtu * Is updated in {@link #onVirtualCameraTick()} */ private final List cameraAngleStates = new ArrayList<>(); -// private int debugFinalIndex = 0; @Override public VirtualMouse onVirtualMouseTick(VirtualMouse vmouse) { this.nextMouse = vmouse; -// if (TASmodClient.controller.isPlayingback()) { -// System.out.println(debugFinalIndex == mousePointerInterpolationStates.size() - 1); -// } mousePointerStates.clear(); TASmodClient.controller.getNextMouse().getStates(mousePointerStates); return null; @@ -69,7 +65,6 @@ public MouseInterpolation getInterpolatedMouseCursor(float partialTick, boolean if (enable && !mousePointerStates.isEmpty()) { partialTick = dynamicallyRound(partialTick, TASmodClient.tickratechanger.ticksPerSecond); int index = (int) MathHelper.clampedLerp(0, mousePointerStates.size() - 1, partialTick); // Get interpolate index -// debugFinalIndex = index; VirtualMouse interpolatedCamera = mousePointerStates.get(index); interpolatedPointerX = interpolatedCamera.getCursorX(); @@ -79,7 +74,7 @@ public MouseInterpolation getInterpolatedMouseCursor(float partialTick, boolean Minecraft mc = Minecraft.getMinecraft(); GuiScreenDuck gui = (GuiScreenDuck) mc.currentScreen; - if (gui != null) { + if (gui != null && !(mc.currentScreen instanceof SubtickGuiScreen)) { interpolatedPointerX = gui.rescaleX(PointerNormalizer.reapplyScalingX(interpolatedPointerX)); interpolatedPointerY = gui.rescaleY(PointerNormalizer.reapplyScalingY(interpolatedPointerY)); }