From 13d5586583c4f805b1df3f5cebaec1b0dd8b30fb Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 11 Mar 2018 12:19:23 +0100 Subject: [PATCH] Fix trimming of replays not actually removing any packets (fixes #113) The init method of the Squash filter has never been called therefore it had never registered its packets and was never able to properly function. --- .../java/com/replaymod/editor/gui/GuiReplayEditor.java | 9 +++++++-- src/main/java/com/replaymod/editor/gui/GuiTrimPanel.java | 8 ++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/replaymod/editor/gui/GuiReplayEditor.java b/src/main/java/com/replaymod/editor/gui/GuiReplayEditor.java index 05322765..359c3164 100644 --- a/src/main/java/com/replaymod/editor/gui/GuiReplayEditor.java +++ b/src/main/java/com/replaymod/editor/gui/GuiReplayEditor.java @@ -36,6 +36,7 @@ import de.johni0702.minecraft.gui.popup.GuiYesNoPopup; import de.johni0702.minecraft.gui.utils.Colors; import net.minecraft.crash.CrashReport; import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.util.ReadableDimension; import javax.annotation.Nullable; @@ -123,7 +124,8 @@ public class GuiReplayEditor extends GuiScreen { return button; } - public void save(File inputFile, PacketStream.FilterInfo...filters) { + @SafeVarargs + public final void save(File inputFile, Pair... filters) { save(Utils.fileNameToReplayName(inputFile.getName()), (outputFile) -> { Studio studio = new ReplayStudio(); File tmpDir = null; @@ -146,7 +148,10 @@ public class GuiReplayEditor extends GuiScreen { PacketStream stream = studio.createReplayStream(in, true); stream.addFilter(new ProgressFilter(metaData.getDuration())); - for (PacketStream.FilterInfo info : filters) { + for (Pair pair : filters) { + PacketStream.FilterInfo info = pair.getLeft(); + JsonObject config = pair.getRight(); + info.getFilter().init(studio, config); stream.addFilter(info.getFilter(), info.getFrom(), info.getTo()); LOGGER.debug("Added filter {}", info); } diff --git a/src/main/java/com/replaymod/editor/gui/GuiTrimPanel.java b/src/main/java/com/replaymod/editor/gui/GuiTrimPanel.java index 3bff46f8..3947214d 100644 --- a/src/main/java/com/replaymod/editor/gui/GuiTrimPanel.java +++ b/src/main/java/com/replaymod/editor/gui/GuiTrimPanel.java @@ -22,6 +22,7 @@ import net.minecraft.client.resources.I18n; import net.minecraft.crash.CrashReport; import org.apache.commons.io.IOCase; import org.apache.commons.io.filefilter.SuffixFileFilter; +import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.util.Dimension; import java.io.File; @@ -133,12 +134,11 @@ public class GuiTrimPanel extends GuiPanel { ChangeTimestampFilter ctf = new ChangeTimestampFilter(); JsonObject config = new JsonObject(); config.addProperty("offset", -start); - ctf.init(null, config); // Pass filters to save dialog gui.save(inputReplays.getSelectedValue(), - new PacketStream.FilterInfo(new SquashFilter(), -1, start), - new PacketStream.FilterInfo(ctf, start, end), - new PacketStream.FilterInfo(new RemoveFilter(), end, -1) + Pair.of(new PacketStream.FilterInfo(new SquashFilter(), -1, start), new JsonObject()), + Pair.of(new PacketStream.FilterInfo(ctf, start, end), config), + Pair.of(new PacketStream.FilterInfo(new RemoveFilter(), end, -1), new JsonObject()) ); }); }