From 72ba40d12adc6300edef73a95a50729340fbc684 Mon Sep 17 00:00:00 2001 From: Scribble Date: Fri, 9 May 2025 09:35:41 +0200 Subject: [PATCH 1/2] Add debug output --- .../playback/PlaybackControllerClient.java | 4 ++++ .../minecrafttas/tasmod/util/DebugWriter.java | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 src/main/java/com/minecrafttas/tasmod/util/DebugWriter.java diff --git a/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java b/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java index 90e3681d..f77e2643 100644 --- a/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java +++ b/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java @@ -466,6 +466,10 @@ public void onClientTickPost(Minecraft mc) { } else if (state == TASstate.PLAYBACK) { playbackNextTick(); } + +// if (TASmod.isDevEnvironment) { +// DebugWriter.writeDebugFile(this); +// } } private void recordNextTick() { diff --git a/src/main/java/com/minecrafttas/tasmod/util/DebugWriter.java b/src/main/java/com/minecrafttas/tasmod/util/DebugWriter.java new file mode 100644 index 00000000..58988346 --- /dev/null +++ b/src/main/java/com/minecrafttas/tasmod/util/DebugWriter.java @@ -0,0 +1,21 @@ +package com.minecrafttas.tasmod.util; + +import java.nio.file.Path; + +import com.minecrafttas.tasmod.TASmodClient; +import com.minecrafttas.tasmod.playback.PlaybackControllerClient; +import com.minecrafttas.tasmod.playback.tasfile.PlaybackSerialiser; + +/** + * Prints the current {@link PlaybackControllerClient#inputs} content to {@link TASmodClient#tasfiledirectory}/debug.mctas + * + * @author Scribble + */ +public class DebugWriter { + + private static Path debugTASFile = TASmodClient.tasfiledirectory.resolve("debug.mctas"); + + public static void writeDebugFile(PlaybackControllerClient controller) { + PlaybackSerialiser.saveToFile(debugTASFile, controller, null); + } +} From cefdbbacf450d470cf9fe07d94542452867db9ad Mon Sep 17 00:00:00 2001 From: Scribble Date: Fri, 9 May 2025 09:35:41 +0200 Subject: [PATCH 2/2] [Controller] Allow switching from playback to recording --- .../tasmod/handlers/PlayUntilHandler.java | 3 +-- .../tasmod/playback/PlaybackControllerClient.java | 13 +++++++++---- .../tasmod/playback/PlaybackControllerServer.java | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/minecrafttas/tasmod/handlers/PlayUntilHandler.java b/src/main/java/com/minecrafttas/tasmod/handlers/PlayUntilHandler.java index 51bd3a7d..b933dda7 100644 --- a/src/main/java/com/minecrafttas/tasmod/handlers/PlayUntilHandler.java +++ b/src/main/java/com/minecrafttas/tasmod/handlers/PlayUntilHandler.java @@ -35,12 +35,11 @@ public void onPlaybackTickPre(long index) { if (playUntil != null && playUntil == index) { TASmodClient.tickratechanger.pauseGame(true); PlaybackControllerClient controller = TASmodClient.controller; - controller.setTASState(TASstate.NONE); + controller.setTASState(TASstate.RECORDING); controller.setIndex(controller.index() - 1); for (long i = controller.size() - 1; i >= index; i--) { controller.remove(i); } - controller.setTASState(TASstate.RECORDING); playUntil = null; } } diff --git a/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java b/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java index f77e2643..43d35534 100644 --- a/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java +++ b/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java @@ -237,7 +237,10 @@ public String setTASStateClient(TASstate stateIn, boolean verbose) { case PLAYBACK: return TextFormatting.RED + "Please report this message to the mod author, because you should never be able to see this (Error: Playback)"; case RECORDING: - return verbose ? TextFormatting.RED + "A playback is currently running. Please stop the playback first before starting a recording" : ""; + stopPlayback(false); + startRecording(); + state = TASstate.RECORDING; + return verbose ? TextFormatting.GREEN + "Switching from playback to recording" : ""; case PAUSED: LOGGER.debug(LoggerMarkers.Playback, "Pausing a playback"); state = TASstate.PAUSED; @@ -245,7 +248,7 @@ public String setTASStateClient(TASstate stateIn, boolean verbose) { TASmodClient.virtual.clear(); return verbose ? TextFormatting.GREEN + "Pausing a playback" : ""; case NONE: - stopPlayback(); + stopPlayback(true); state = TASstate.NONE; return verbose ? TextFormatting.GREEN + "Stopping the playback" : ""; } @@ -298,10 +301,12 @@ private void startPlayback() { // TASmod.ktrngHandler.setInitialSeed(startSeed); } - private void stopPlayback() { + private void stopPlayback(boolean clearInputs) { LOGGER.debug(LoggerMarkers.Playback, "Stopping a playback"); Minecraft.getMinecraft().gameSettings.chatLinks = true; - TASmodClient.virtual.clear(); + if (clearInputs) { + TASmodClient.virtual.clear(); + } } /** diff --git a/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerServer.java b/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerServer.java index 2ef2fe2d..f224566b 100644 --- a/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerServer.java +++ b/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerServer.java @@ -88,7 +88,7 @@ public void setState(TASstate stateIn) { public void setServerState(TASstate stateIn) { if (state != stateIn) { - if (state == TASstate.RECORDING && stateIn == TASstate.PLAYBACK || state == TASstate.PLAYBACK && stateIn == TASstate.RECORDING) + if (state == TASstate.RECORDING && stateIn == TASstate.PLAYBACK) return; if (state == TASstate.NONE && state == TASstate.PAUSED) { return;