From 19ff1ef38bc788285b413c9e70a9c36f40bdc172 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Tue, 16 Feb 2021 22:38:39 +0100 Subject: [PATCH] Do not bother recovering useless replays (fixes #444) Useless replays being those for which auto-recording was disabled and Start never pressed. --- src/main/java/com/replaymod/core/ReplayMod.java | 8 ++++++++ .../com/replaymod/recording/packet/PacketListener.java | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/com/replaymod/core/ReplayMod.java b/src/main/java/com/replaymod/core/ReplayMod.java index 9971ba6e..6afd4bdd 100644 --- a/src/main/java/com/replaymod/core/ReplayMod.java +++ b/src/main/java/com/replaymod/core/ReplayMod.java @@ -476,6 +476,14 @@ public class ReplayMod implements String name = path.getFileName().toString(); if (name.endsWith(".mcpr.tmp") && Files.isDirectory(path)) { Path original = path.resolveSibling(FilenameUtils.getBaseName(name)); + Path noRecoverMarker = original.resolveSibling(original.getFileName() + ".no_recover"); + if (Files.exists(noRecoverMarker)) { + // This file, when its markers are processed, doesn't actually result in any replays. + // So we don't really need to recover it either, let's just get rid of it. + FileUtils.deleteDirectory(path.toFile()); + Files.delete(noRecoverMarker); + continue; + } new RestoreReplayGui(this, GuiScreen.wrap(mc.currentScreen), original.toFile()).display(); } } diff --git a/src/main/java/com/replaymod/recording/packet/PacketListener.java b/src/main/java/com/replaymod/recording/packet/PacketListener.java index 40d4605c..83f573cd 100644 --- a/src/main/java/com/replaymod/recording/packet/PacketListener.java +++ b/src/main/java/com/replaymod/recording/packet/PacketListener.java @@ -272,6 +272,10 @@ public class PacketListener extends ChannelInboundHandlerAdapter { // Immediately close the saving popup, the user doesn't care about it core.runLater(guiSavingReplay::close); + // If we crash right here, on the next start we'll prompt the user for recovery + // but we don't really want that, so drop a marker file to skip recovery for this replay. + Files.createFile(outputPath.resolveSibling(outputPath.getFileName() + ".no_recover")); + // We still have the replay, so we just save it (at least for a few weeks) in case they change their mind String replayName = FilenameUtils.getBaseName(outputPath.getFileName().toString()); Path rawFolder = ReplayMod.instance.getRawReplayFolder();