From 2dcfbd6435575c102a737749c2bb865fecce56c3 Mon Sep 17 00:00:00 2001 From: LindaJuffermans Date: Wed, 15 Jul 2020 15:49:44 +0200 Subject: [PATCH 01/12] Changed Replay Viewer panel button (from play button to hamburger) Added quickmode indicator (bottom-right with night vision indicator) --- .../com/replaymod/extras/HotkeyButtons.java | 10 +-- .../java/com/replaymod/extras/QuickMode.java | 65 ++++++++++++++++++ .../com/replaymod/extras/ReplayModExtras.java | 1 + .../resources/assets/replaymod/replay_gui.png | Bin 9764 -> 12340 bytes 4 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/replaymod/extras/QuickMode.java diff --git a/src/main/java/com/replaymod/extras/HotkeyButtons.java b/src/main/java/com/replaymod/extras/HotkeyButtons.java index cbd204cd..08d37b19 100644 --- a/src/main/java/com/replaymod/extras/HotkeyButtons.java +++ b/src/main/java/com/replaymod/extras/HotkeyButtons.java @@ -52,7 +52,7 @@ public class HotkeyButtons extends EventRegistrations implements Extra { public Gui(ReplayMod mod, GuiReplayOverlay overlay) { toggleButton = new GuiTexturedButton(overlay).setSize(20, 20) - .setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setTexturePosH(0, 0) + .setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setTexturePosH(0, 120) .onClick(new Runnable() { @Override public void run() { @@ -74,7 +74,7 @@ public class HotkeyButtons extends EventRegistrations implements Extra { final KeyBindingRegistry keyBindingRegistry = mod.getKeyBindingRegistry(); keyBindingRegistry.getKeyBindings().values().stream() - .sorted(Comparator.comparing(it -> I18n.translate(it.getId()))) + .sorted(Comparator.comparing(it -> I18n.translate(it.getTranslationKey()))) .forEachOrdered(keyBinding -> { GuiButton button = new GuiButton(){ @Override @@ -83,10 +83,10 @@ public class HotkeyButtons extends EventRegistrations implements Extra { String keyName = "???"; try { //#if MC>=11600 - //$$ keyName = keyBinding.getBoundKeyLocalizedText().asString(); + keyName = keyBinding.getBoundKeyLocalizedText().asString(); //#else //#if MC>=11400 - keyName = keyBinding.getLocalizedName(); + //$$ keyName = keyBinding.getLocalizedName(); //#else //$$ keyName = Keyboard.getKeyName(keyBinding.getKeyCode()); //#endif @@ -115,7 +115,7 @@ public class HotkeyButtons extends EventRegistrations implements Extra { return new Dimension(Math.max(10, button.getMinSize().getWidth()) + 10, 20); } }).addElements(null, button), - new GuiLabel().setI18nText(keyBinding.getId()) + new GuiLabel().setI18nText(keyBinding.getTranslationKey()) )); }); diff --git a/src/main/java/com/replaymod/extras/QuickMode.java b/src/main/java/com/replaymod/extras/QuickMode.java new file mode 100644 index 00000000..33295a5a --- /dev/null +++ b/src/main/java/com/replaymod/extras/QuickMode.java @@ -0,0 +1,65 @@ +package com.replaymod.extras; + +import com.replaymod.core.ReplayMod; +import com.replaymod.core.events.PostRenderCallback; +import com.replaymod.core.events.PreRenderCallback; +import com.replaymod.core.versions.MCVer.Keyboard; +import com.replaymod.replay.ReplayHandler; +import com.replaymod.replay.ReplayModReplay; +import com.replaymod.replay.events.ReplayOpenedCallback; +import com.replaymod.replay.gui.overlay.GuiReplayOverlay; +import de.johni0702.minecraft.gui.element.GuiImage; +import de.johni0702.minecraft.gui.element.IGuiImage; +import de.johni0702.minecraft.gui.layout.HorizontalLayout; +import de.johni0702.minecraft.gui.utils.EventRegistrations; +import net.minecraft.client.MinecraftClient; + +public class QuickMode extends EventRegistrations implements Extra { + private ReplayModReplay module; + + private final IGuiImage indicator = new GuiImage().setTexture(ReplayMod.TEXTURE, 40, 100, 16, 16).setSize(16, 16); + + private MinecraftClient mc; + private boolean active; + //#if MC>=11400 + private double originalGamma; + //#else + //$$ private float originalGamma; + //#endif + + @Override + public void register(final ReplayMod mod) throws Exception { + this.module = ReplayModReplay.instance; + this.mc = mod.getMinecraft(); + + mod.getKeyBindingRegistry().registerKeyBinding("replaymod.input.quickmode", Keyboard.KEY_Q, new Runnable() { + @Override + public void run() { + active = !active; + ReplayHandler replayHandler = module.getReplayHandler(); + if (replayHandler == null) return; + updateIndicator(replayHandler.getOverlay()); + replayHandler.getReplaySender().setSyncModeAndWait(); + mod.runLater(() -> + replayHandler.ensureQuickModeInitialized(() -> { + replayHandler.setQuickMode(active); + replayHandler.getReplaySender().setAsyncMode(true); + }) + ); + } + }); + + register(); + } + + { on(ReplayOpenedCallback.EVENT, replayHandler -> updateIndicator(replayHandler.getOverlay())); } + private void updateIndicator(GuiReplayOverlay overlay) { + System.out.println("QuickMode::updateIndicator; active=" + (active ? "T" : "F")); + if (active) { + overlay.statusIndicatorPanel.addElements(new HorizontalLayout.Data(2), indicator); + } else { + overlay.statusIndicatorPanel.removeElement(indicator); + } + } + +} diff --git a/src/main/java/com/replaymod/extras/ReplayModExtras.java b/src/main/java/com/replaymod/extras/ReplayModExtras.java index 5a53c707..d22ed045 100644 --- a/src/main/java/com/replaymod/extras/ReplayModExtras.java +++ b/src/main/java/com/replaymod/extras/ReplayModExtras.java @@ -23,6 +23,7 @@ public class ReplayModExtras implements Module { PlayerOverview.class, YoutubeUpload.class, FullBrightness.class, + QuickMode.class, HotkeyButtons.class, OpenEyeExtra.class ); diff --git a/src/main/resources/assets/replaymod/replay_gui.png b/src/main/resources/assets/replaymod/replay_gui.png index 8a10a721509c70db2459ae4a54786554c3b8f9de..da905273c411c9f69047f9f480053edd98c166b7 100644 GIT binary patch literal 12340 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 Date: Wed, 15 Jul 2020 21:07:30 +0200 Subject: [PATCH 02/12] Fixed for 1.15.2 --- .../com/replaymod/extras/HotkeyButtons.java | 8 +- .../java/com/replaymod/extras/QuickMode.java | 84 ++++++++++--------- 2 files changed, 48 insertions(+), 44 deletions(-) diff --git a/src/main/java/com/replaymod/extras/HotkeyButtons.java b/src/main/java/com/replaymod/extras/HotkeyButtons.java index 08d37b19..69b0b709 100644 --- a/src/main/java/com/replaymod/extras/HotkeyButtons.java +++ b/src/main/java/com/replaymod/extras/HotkeyButtons.java @@ -74,7 +74,7 @@ public class HotkeyButtons extends EventRegistrations implements Extra { final KeyBindingRegistry keyBindingRegistry = mod.getKeyBindingRegistry(); keyBindingRegistry.getKeyBindings().values().stream() - .sorted(Comparator.comparing(it -> I18n.translate(it.getTranslationKey()))) + .sorted(Comparator.comparing(it -> I18n.translate(it.getId()))) .forEachOrdered(keyBinding -> { GuiButton button = new GuiButton(){ @Override @@ -83,10 +83,10 @@ public class HotkeyButtons extends EventRegistrations implements Extra { String keyName = "???"; try { //#if MC>=11600 - keyName = keyBinding.getBoundKeyLocalizedText().asString(); + //$$ keyName = keyBinding.getBoundKeyLocalizedText().asString(); //#else //#if MC>=11400 - //$$ keyName = keyBinding.getLocalizedName(); + keyName = keyBinding.getLocalizedName(); //#else //$$ keyName = Keyboard.getKeyName(keyBinding.getKeyCode()); //#endif @@ -115,7 +115,7 @@ public class HotkeyButtons extends EventRegistrations implements Extra { return new Dimension(Math.max(10, button.getMinSize().getWidth()) + 10, 20); } }).addElements(null, button), - new GuiLabel().setI18nText(keyBinding.getTranslationKey()) + new GuiLabel().setI18nText(keyBinding.getId()) )); }); diff --git a/src/main/java/com/replaymod/extras/QuickMode.java b/src/main/java/com/replaymod/extras/QuickMode.java index 33295a5a..d697bce2 100644 --- a/src/main/java/com/replaymod/extras/QuickMode.java +++ b/src/main/java/com/replaymod/extras/QuickMode.java @@ -15,51 +15,55 @@ import de.johni0702.minecraft.gui.utils.EventRegistrations; import net.minecraft.client.MinecraftClient; public class QuickMode extends EventRegistrations implements Extra { - private ReplayModReplay module; + private ReplayModReplay module; - private final IGuiImage indicator = new GuiImage().setTexture(ReplayMod.TEXTURE, 40, 100, 16, 16).setSize(16, 16); + private final IGuiImage indicator = new GuiImage().setTexture(ReplayMod.TEXTURE, 40, 100, 16, 16).setSize(16, 16); - private MinecraftClient mc; - private boolean active; - //#if MC>=11400 - private double originalGamma; - //#else - //$$ private float originalGamma; - //#endif + private MinecraftClient mc; + private boolean active; + //#if MC>=11400 + private double originalGamma; + //#else + //$$ private float originalGamma; + //#endif - @Override - public void register(final ReplayMod mod) throws Exception { - this.module = ReplayModReplay.instance; - this.mc = mod.getMinecraft(); + @Override + public void register(final ReplayMod mod) throws Exception { + this.module = ReplayModReplay.instance; + this.mc = mod.getMinecraft(); - mod.getKeyBindingRegistry().registerKeyBinding("replaymod.input.quickmode", Keyboard.KEY_Q, new Runnable() { - @Override - public void run() { - active = !active; - ReplayHandler replayHandler = module.getReplayHandler(); - if (replayHandler == null) return; - updateIndicator(replayHandler.getOverlay()); - replayHandler.getReplaySender().setSyncModeAndWait(); - mod.runLater(() -> - replayHandler.ensureQuickModeInitialized(() -> { - replayHandler.setQuickMode(active); - replayHandler.getReplaySender().setAsyncMode(true); - }) - ); - } - }); + mod.getKeyBindingRegistry().registerKeyBinding("replaymod.input.quickmode", Keyboard.KEY_Q, new Runnable() { + @Override + public void run() { + ReplayHandler replayHandler = module.getReplayHandler(); + if (replayHandler == null) { + return; + } + active = !active; + updateIndicator(replayHandler.getOverlay()); + replayHandler.getReplaySender().setSyncModeAndWait(); + mod.runLater(() -> + replayHandler.ensureQuickModeInitialized(() -> { + replayHandler.setQuickMode(active); + replayHandler.getReplaySender().setAsyncMode(true); + }) + ); + } + }); - register(); - } - - { on(ReplayOpenedCallback.EVENT, replayHandler -> updateIndicator(replayHandler.getOverlay())); } - private void updateIndicator(GuiReplayOverlay overlay) { - System.out.println("QuickMode::updateIndicator; active=" + (active ? "T" : "F")); - if (active) { - overlay.statusIndicatorPanel.addElements(new HorizontalLayout.Data(2), indicator); - } else { - overlay.statusIndicatorPanel.removeElement(indicator); + register(); } - } + { + on(ReplayOpenedCallback.EVENT, replayHandler -> updateIndicator(replayHandler.getOverlay())); + } + + private void updateIndicator(GuiReplayOverlay overlay) { + System.out.println("QuickMode::updateIndicator; active=" + (active ? "T" : "F")); + if (active) { + overlay.statusIndicatorPanel.addElements(new HorizontalLayout.Data(2), indicator); + } else { + overlay.statusIndicatorPanel.removeElement(indicator); + } + } } From 3aea7cdca4912c10d6808f5adf0307c431340364 Mon Sep 17 00:00:00 2001 From: LindaJuffermans Date: Wed, 15 Jul 2020 21:44:48 +0200 Subject: [PATCH 03/12] Tweaked the indicator positions --- .../com/replaymod/extras/FullBrightness.java | 2 +- .../java/com/replaymod/extras/QuickMode.java | 1 - .../replay/gui/overlay/GuiReplayOverlay.java | 4 ++-- .../resources/assets/replaymod/replay_gui.png | Bin 12340 -> 12566 bytes 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/replaymod/extras/FullBrightness.java b/src/main/java/com/replaymod/extras/FullBrightness.java index 5587e3f8..cd601e50 100644 --- a/src/main/java/com/replaymod/extras/FullBrightness.java +++ b/src/main/java/com/replaymod/extras/FullBrightness.java @@ -23,7 +23,7 @@ import com.replaymod.core.events.PostRenderCallback; public class FullBrightness extends EventRegistrations implements Extra { private ReplayModReplay module; - private final IGuiImage indicator = new GuiImage().setTexture(ReplayMod.TEXTURE, 90, 20, 19, 13).setSize(19, 13); + private final IGuiImage indicator = new GuiImage().setTexture(ReplayMod.TEXTURE, 90, 20, 19, 16).setSize(19, 16); private MinecraftClient mc; private boolean active; diff --git a/src/main/java/com/replaymod/extras/QuickMode.java b/src/main/java/com/replaymod/extras/QuickMode.java index d697bce2..f4fd23b8 100644 --- a/src/main/java/com/replaymod/extras/QuickMode.java +++ b/src/main/java/com/replaymod/extras/QuickMode.java @@ -59,7 +59,6 @@ public class QuickMode extends EventRegistrations implements Extra { } private void updateIndicator(GuiReplayOverlay overlay) { - System.out.println("QuickMode::updateIndicator; active=" + (active ? "T" : "F")); if (active) { overlay.statusIndicatorPanel.addElements(new HorizontalLayout.Data(2), indicator); } else { diff --git a/src/main/java/com/replaymod/replay/gui/overlay/GuiReplayOverlay.java b/src/main/java/com/replaymod/replay/gui/overlay/GuiReplayOverlay.java index c9b924f5..0ef7cec4 100644 --- a/src/main/java/com/replaymod/replay/gui/overlay/GuiReplayOverlay.java +++ b/src/main/java/com/replaymod/replay/gui/overlay/GuiReplayOverlay.java @@ -57,7 +57,7 @@ public class GuiReplayOverlay extends AbstractGuiOverlay { * This is not used by the replay module itself but may be used by other modules/extras to show * when they're active. */ - public final GuiPanel statusIndicatorPanel = new GuiPanel(this).setSize(100, 20) + public final GuiPanel statusIndicatorPanel = new GuiPanel(this).setSize(100, 16) .setLayout(new HorizontalLayout(HorizontalLayout.Alignment.RIGHT).setSpacing(5)); private final EventHandler eventHandler = new EventHandler(); @@ -78,7 +78,7 @@ public class GuiReplayOverlay extends AbstractGuiOverlay { pos(topPanel, 10, 10); size(topPanel, width - 20, 20); - pos(statusIndicatorPanel, width / 2, height - 25); + pos(statusIndicatorPanel, width / 2, height - 21); width(statusIndicatorPanel, width / 2 - 5); } }); diff --git a/src/main/resources/assets/replaymod/replay_gui.png b/src/main/resources/assets/replaymod/replay_gui.png index da905273c411c9f69047f9f480053edd98c166b7..0e47861d2fa8afb8a580fa2aa57090e8f7317b17 100644 GIT binary patch delta 9703 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 delta 9605 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 From b79848936b9fb146a0bd085ade8022f01086c8cf Mon Sep 17 00:00:00 2001 From: LindaJuffermans Date: Fri, 17 Jul 2020 16:32:12 +0200 Subject: [PATCH 04/12] Implemented review changes --- docs/content.md | 2 +- .../java/com/replaymod/extras/QuickMode.java | 23 +++++++------------ .../com/replaymod/replay/ReplayModReplay.java | 11 --------- 3 files changed, 9 insertions(+), 27 deletions(-) diff --git a/docs/content.md b/docs/content.md index 826360ad..39196d05 100755 --- a/docs/content.md +++ b/docs/content.md @@ -39,7 +39,7 @@ To access the **Replay Mod Settings** from the Main Menu click the **"Replay Vie While playing, you can click the 'Mods' button in the Pause screen to reach **Replay Mod Settings** if you use Minecraft 1.12.2 and below, or have the mod [Mod Menu](https://www.curseforge.com/minecraft/mc-mods/modmenu) installed. When in a Replay, you can either bind a hotkey to the **Replay Mod Settings** in Minecraft's Control settings -or use the hotkey GUI by clicking on the arrow button in the lower left corner. +or use the hotkey GUI by clicking on the hamburger button in the lower left corner. # Recording [recording] ![](img/recording-indicator.jpg) diff --git a/src/main/java/com/replaymod/extras/QuickMode.java b/src/main/java/com/replaymod/extras/QuickMode.java index f4fd23b8..0aa59b5b 100644 --- a/src/main/java/com/replaymod/extras/QuickMode.java +++ b/src/main/java/com/replaymod/extras/QuickMode.java @@ -19,18 +19,11 @@ public class QuickMode extends EventRegistrations implements Extra { private final IGuiImage indicator = new GuiImage().setTexture(ReplayMod.TEXTURE, 40, 100, 16, 16).setSize(16, 16); - private MinecraftClient mc; private boolean active; - //#if MC>=11400 - private double originalGamma; - //#else - //$$ private float originalGamma; - //#endif @Override public void register(final ReplayMod mod) throws Exception { this.module = ReplayModReplay.instance; - this.mc = mod.getMinecraft(); mod.getKeyBindingRegistry().registerKeyBinding("replaymod.input.quickmode", Keyboard.KEY_Q, new Runnable() { @Override @@ -39,15 +32,15 @@ public class QuickMode extends EventRegistrations implements Extra { if (replayHandler == null) { return; } - active = !active; updateIndicator(replayHandler.getOverlay()); replayHandler.getReplaySender().setSyncModeAndWait(); - mod.runLater(() -> - replayHandler.ensureQuickModeInitialized(() -> { - replayHandler.setQuickMode(active); - replayHandler.getReplaySender().setAsyncMode(true); - }) - ); + mod.runLater(() -> { + replayHandler.ensureQuickModeInitialized(() -> { + active = !active; + replayHandler.setQuickMode(active); + replayHandler.getReplaySender().setAsyncMode(true); + }); + }); } }); @@ -60,7 +53,7 @@ public class QuickMode extends EventRegistrations implements Extra { private void updateIndicator(GuiReplayOverlay overlay) { if (active) { - overlay.statusIndicatorPanel.addElements(new HorizontalLayout.Data(2), indicator); + overlay.statusIndicatorPanel.addElements(new HorizontalLayout.Data(1), indicator); } else { overlay.statusIndicatorPanel.removeElement(indicator); } diff --git a/src/main/java/com/replaymod/replay/ReplayModReplay.java b/src/main/java/com/replaymod/replay/ReplayModReplay.java index da416ae3..4b4dc281 100644 --- a/src/main/java/com/replaymod/replay/ReplayModReplay.java +++ b/src/main/java/com/replaymod/replay/ReplayModReplay.java @@ -124,17 +124,6 @@ public class ReplayModReplay implements Module { } }); - registry.registerKeyBinding("replaymod.input.quickmode", Keyboard.KEY_Q, () -> { - if (replayHandler != null) { - replayHandler.getReplaySender().setSyncModeAndWait(); - core.runLater(() -> - replayHandler.ensureQuickModeInitialized(() -> { - replayHandler.setQuickMode(!replayHandler.isQuickMode()); - replayHandler.getReplaySender().setAsyncMode(true); - })); - } - }); - core.getKeyBindingRegistry().registerKeyBinding("replaymod.input.rollclockwise", Keyboard.KEY_L, () -> { // Noop, actual handling logic in CameraEntity#update }); From 169c4857b38b4aeb8d032620eb654a48a1972efe Mon Sep 17 00:00:00 2001 From: LindaJuffermans Date: Fri, 17 Jul 2020 17:23:02 +0200 Subject: [PATCH 05/12] Fixed order of methods in quickmode change; no longer relying on local variable, instead pulling current state from ReplayHandler before updating. --- src/main/java/com/replaymod/extras/QuickMode.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/replaymod/extras/QuickMode.java b/src/main/java/com/replaymod/extras/QuickMode.java index 0aa59b5b..4dfaf747 100644 --- a/src/main/java/com/replaymod/extras/QuickMode.java +++ b/src/main/java/com/replaymod/extras/QuickMode.java @@ -19,8 +19,6 @@ public class QuickMode extends EventRegistrations implements Extra { private final IGuiImage indicator = new GuiImage().setTexture(ReplayMod.TEXTURE, 40, 100, 16, 16).setSize(16, 16); - private boolean active; - @Override public void register(final ReplayMod mod) throws Exception { this.module = ReplayModReplay.instance; @@ -32,12 +30,12 @@ public class QuickMode extends EventRegistrations implements Extra { if (replayHandler == null) { return; } - updateIndicator(replayHandler.getOverlay()); replayHandler.getReplaySender().setSyncModeAndWait(); mod.runLater(() -> { replayHandler.ensureQuickModeInitialized(() -> { - active = !active; - replayHandler.setQuickMode(active); + boolean enabled = !replayHandler.isQuickMode(); + updateIndicator(replayHandler.getOverlay(), enabled); + replayHandler.setQuickMode(enabled); replayHandler.getReplaySender().setAsyncMode(true); }); }); @@ -48,11 +46,11 @@ public class QuickMode extends EventRegistrations implements Extra { } { - on(ReplayOpenedCallback.EVENT, replayHandler -> updateIndicator(replayHandler.getOverlay())); + on(ReplayOpenedCallback.EVENT, replayHandler -> updateIndicator(replayHandler.getOverlay(), replayHandler.isQuickMode())); } - private void updateIndicator(GuiReplayOverlay overlay) { - if (active) { + private void updateIndicator(GuiReplayOverlay overlay, boolean enabled) { + if (enabled) { overlay.statusIndicatorPanel.addElements(new HorizontalLayout.Data(1), indicator); } else { overlay.statusIndicatorPanel.removeElement(indicator); From 3d7d51e2e097d2e36c7595c0d99c023515c71dc4 Mon Sep 17 00:00:00 2001 From: LindaJuffermans Date: Tue, 21 Jul 2020 21:49:56 +0200 Subject: [PATCH 06/12] Added Quick Mode section and reference from timeline jumping; including clock icon --- docs/content.md | 10 +++++++++- docs/img/quickmode-icon.jpg | Bin 0 -> 2807 bytes docs/img/quickmode-icon.png | Bin 0 -> 2304 bytes 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 docs/img/quickmode-icon.jpg create mode 100644 docs/img/quickmode-icon.png diff --git a/docs/content.md b/docs/content.md index 826360ad..f2aaad13 100755 --- a/docs/content.md +++ b/docs/content.md @@ -107,7 +107,7 @@ The minimum Speed value is **0.1 times** the normal Minecraft Tick Speed, and th To the right of the Speed Slider, there is the **Replay Timeline**. On the Replay Timeline, you see a yellow cursor indicating your current position in the Replay. By clicking somewhere on this Timeline, you will travel in time towards the specified point in time. -Please note that it takes longer to do larger steps in time or to jump backwards in time. +Please note that it takes longer to do larger steps in time or to jump backwards in time (see also [Quick Mode](#replaying-quickmode)). ## Camera Paths [paths] ### Introduction [intro] @@ -429,6 +429,14 @@ If you have a Replay in a dark setting (for example at nighttime, or in a cave) This works as a replacement for the **Night Vision Potion Effect**, without the side effect of a weird sky color. +## Quick Mode [quickmode] (Minecraft 1.9 and up) +![](img/quickmode-icon.jpg) +In **Quick Mode**, this clock symbol is displayed in the lower right corner of the screen. + +When you first enable **Quick Mode** in a replay, an internal reference of certain entity and block properties is stored for quick access, allowing for faster navigation in the **Replay Timeline**. +As a side effect, certain features like particles and second skin layers will not be rendered in the preview. +By default, **Quick Mode** is toggled with `Q`. + ## Player Overview [overview] ![](img/player-overview.jpg) The **Player Overview** Screen diff --git a/docs/img/quickmode-icon.jpg b/docs/img/quickmode-icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..004a00b7b559baf2ec5b529f9176b0664aa582eb GIT binary patch literal 2807 zcmbVMdpMM78-K?k>!O_*r`co~BZp+>oufH83>ic_v>jH6b`I~1i8(Yg7&_A~rPvk; zwfQQ$`J{3v)~Q;t#Uj!a(k35iDW!aBso9s**IrlG{_)+=n6FXh*TDdj$I%e>`f^YvDR_|7JR`cFWf>>iHV7X zL<&K!6oVutlL->ZAeoGZCGe^wnVP4;%Tx~UEN~!|Kq*nEC2|>d&LWR5k5_x);7H%5 zAXRX=?+t&nT2kp;Uh~o_^;+nEVSH3twLVD!foma^JYFe)U~z|c%5d%e+0mRJ91SZ} zDS;n_7srtc;-!#G9mMg%!8Zh{A{C$}LR6iz@?nh%%R??aD_qstcm6|6LK<|7@VBZV6 z{{N`U@>4=QwOqMgE{}VMf;BO6wOkb=S76B`0vYQPCXor{iK^vuZ}c{04y2SMK*9i} zT#B79GE4H20O({glfvgy@gxzEffwkS-MTeLXz`BV(lDJVy^^pv?@-4eb|^zFcc@2uJQd zX=&xV@TBi0#f8gk?Rb3xos*ivp(nkYqptB2& zKyM=M?3@{~^4`3wvYunsdoogPUeR+bVd{XF#R`E zL0enP%@kI2@}XQpg4KPeiSDt8O&;3*v8al;#oW(hcLhmboWD9-kR>i#Ftu*=!uR$8h*;Ph0EO zMZ7KDM>S5~1OnV1=YKVjO*1%ddc$22CUjeqLDAqoM$WT+CSAS1h4=P9EqXdo3H|cx z5R0LBk9JaFT?UCLr?rkMMrl% zOu#+G{P4rVzj)X8J1|}Uc6wNdROb0%Arn#rSY+wh0|`HTMxSwDOJ1# zd-@g+kC|@=RzItj-cX$~td;Fu(`oEY%%q$*+}-ZrQFYKkTfwd^DbF0Pu{yx@4mXK@ zc5t$eqNvrLi@1?wj#*(IQ{Z`8m=bsm_jS%D4oq6ZJ%y?^^g0XGWUIP=Nb+CFXlmWmt$j_<9D(wk56yS^U! z?m%UfWYv?V2N{K0t@EgD@xPQ=gpu(b6AecL?@`CQmC4~dVij4Eb+0HhdB~xi!Tu#h zu5Ut`^4&QV`&ydp4^cdFV?v`_pWIE{ImBo>S)wS{jwMI+{jhq95GrXr_=rt1N~_Et zsHt}xA$;+;cKcFV`s%e+RW|nLEE@5X+ ztD4(R{P-z8BCJeQnC2?;NU+JzzHS_7SxrPUHCHe9oTf+goO&I;L0pW6iOqx^MEvqMGkjb^nwzp*=U6it?{MVd@)mNql^5rw)jD6XLjqW4Dj})#fA} zV0PxYxM#^O%w$pVWN{{l@7B7$(lR>wxZ;S<@TrgU63H7nYAr`=rk_=lxOcNb|+~#)8m{{7U7#$#ZX>_^^{326_T76dHBBwrS*Nj@a^gpC@cT z5Epka=u}15`Id`EvY*+DMup~`4N_r`+sn@z$FDqe&7)12C%3S}#8#Q<0|Ud`z?!ir nawDk# z`F_5i_j#}FZm6F+denWRTrSt>P;Iag-xcQ?F&zIJeM=(vHqxkl%5u4GALCp@T+4gP zU9REV)kw459Ilg~o^;EK9!2hS(!kL!SLNiiA;UIg6HydbH9y(E?NgFa6+bzH4}-7~ zK&@(R#zak-`UuRlK~W(mPa-PQ5(Y>jTPD)Ugl0);KbggqaNFsoNg^9!xB1B`Cn3=s zZXg1>i3q_BCShhQpN?VNjZ*aLyMC{QAR1CCv+1h#_T+${h>gh z!PH}F0uNY?Q>%$kO+a8oL7-SSlcgIDOCim&WeuWG&`)A<+^VWb9PkK&40$Tb`(oIf zT$GB60&a0$IV!UtCIeKMAJk#HV*zJ=ZZ{}8#2Ek4V*tbXJOW1vJOGrJ<3vh^kfVG8 z&p{x17=hsmXwys;Z%8>&it4aZFe1x)q3BTrDi#x>6yxD|O5~xBf*fLijJTNB$2zvp zI!UTkExg7Z`Hj?s=H^=omB^Y$lA*IH{3LYTfD|&{tq!8cO=Zr{PqiWpdL5VKvRiu0 zPRS;!iev3==tBBh_@5;~KRY^=-;g2dJKs{* zEiFy9VcWY8^u6wxsqNl8q2{n+uC*MCV7T500tp zQ1`N)4L`ROwOQF&(R}*yT6y{Jt6DY|#V$WR?0oO9FK@1!e(Li0FK;{1xughGUN$as o_Pv@*?Dy~g(>Jmp9?m^^-x~DiZxd&&a=uYQHTA*u)h#dl3+WsS0{{R3 literal 0 HcmV?d00001 From 0e77235ef9ce6746f84aa8d8c592c5fcd81a589c Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 9 Aug 2020 13:55:00 +0200 Subject: [PATCH 07/12] Update to MC 1.16.2-rc1 --- build.gradle.kts | 30 ++++++++++--------- jGui | 2 +- settings.gradle.kts | 6 ++-- .../recording/mixin/MixinWorldClient.java | 12 ++++++-- .../replaymod/replay/FullReplaySender.java | 4 +++ .../replaymod/replay/QuickReplaySender.java | 9 ++++++ .../replay/mixin/MixinPlayerControllerMP.java | 4 +++ versions/common.gradle | 11 +++++-- 8 files changed, 57 insertions(+), 21 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index baf02eec..effee147 100755 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -178,20 +178,22 @@ val doRelease by tasks.registering { defaultTasks("shadowJar") preprocess { - "1.16.1"(11601, "yarn") { - "1.15.2"(11502, "yarn") { - "1.14.4"(11404, "yarn", file("versions/mapping-fabric-1.15.2-1.14.4.txt")) { - "1.14.4-forge"(11404, "srg", file("versions/mapping-1.14.4-fabric-forge.txt")) { - "1.12.2"(11202, "srg", file("versions/1.14.4-forge/mapping.txt")) { - "1.12.1"(11201, "srg") { - "1.12"(11200, "srg") { - "1.11.2"(11102, "srg", file("versions/1.12/mapping.txt")) { - "1.11"(11100, "srg", file("versions/1.11.2/mapping.txt")) { - "1.10.2"(11002, "srg", file("versions/1.11/mapping.txt")) { - "1.9.4"(10904, "srg") { - "1.8.9"(10809, "srg", file("versions/1.9.4/mapping.txt")) { - "1.8"(10800, "srg", file("versions/1.8.9/mapping.txt")) { - "1.7.10"(10710, "srg", file("versions/1.8/mapping.txt")) + "1.16.2"(11602, "yarn") { + "1.16.1"(11601, "yarn") { + "1.15.2"(11502, "yarn") { + "1.14.4"(11404, "yarn", file("versions/mapping-fabric-1.15.2-1.14.4.txt")) { + "1.14.4-forge"(11404, "srg", file("versions/mapping-1.14.4-fabric-forge.txt")) { + "1.12.2"(11202, "srg", file("versions/1.14.4-forge/mapping.txt")) { + "1.12.1"(11201, "srg") { + "1.12"(11200, "srg") { + "1.11.2"(11102, "srg", file("versions/1.12/mapping.txt")) { + "1.11"(11100, "srg", file("versions/1.11.2/mapping.txt")) { + "1.10.2"(11002, "srg", file("versions/1.11/mapping.txt")) { + "1.9.4"(10904, "srg") { + "1.8.9"(10809, "srg", file("versions/1.9.4/mapping.txt")) { + "1.8"(10800, "srg", file("versions/1.8.9/mapping.txt")) { + "1.7.10"(10710, "srg", file("versions/1.8/mapping.txt")) + } } } } diff --git a/jGui b/jGui index 037d54f8..f80c54c9 160000 --- a/jGui +++ b/jGui @@ -1 +1 @@ -Subproject commit 037d54f83a736123a7b834f2485b0adc08744033 +Subproject commit f80c54c96b51acd14202000fe6bed83baabbbaf5 diff --git a/settings.gradle.kts b/settings.gradle.kts index 1f50c264..4cc0c4dc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -28,7 +28,8 @@ val jGuiVersions = listOf( "1.14.4-forge", "1.14.4", "1.15.2", - "1.16.1" + "1.16.1", + "1.16.2" ) val replayModVersions = listOf( "1.7.10", @@ -44,7 +45,8 @@ val replayModVersions = listOf( "1.14.4-forge", "1.14.4", "1.15.2", - "1.16.1" + "1.16.1", + "1.16.2" ) include(":jGui") diff --git a/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java b/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java index 4186d2f7..1f60d03b 100644 --- a/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java +++ b/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java @@ -48,8 +48,16 @@ public abstract class MixinWorldClient extends World implements RecordingEventHa private MinecraftClient client; //#if MC>=11600 - //$$ protected MixinWorldClient(MutableWorldProperties mutableWorldProperties, RegistryKey registryKey, RegistryKey registryKey2, DimensionType dimensionType, Supplier profiler, boolean bl, boolean bl2, long l) { - //$$ super(mutableWorldProperties, registryKey, registryKey2, dimensionType, profiler, bl, bl2, l); + //$$ protected MixinWorldClient(MutableWorldProperties mutableWorldProperties, RegistryKey registryKey, + //#if MC<11602 + //$$ RegistryKey registryKey2, + //#endif + //$$ DimensionType dimensionType, Supplier profiler, boolean bl, boolean bl2, long l) { + //$$ super(mutableWorldProperties, registryKey, + //#if MC<11602 + //$$ registryKey2, + //#endif + //$$ dimensionType, profiler, bl, bl2, l); //$$ } //#else //#if MC>=11400 diff --git a/src/main/java/com/replaymod/replay/FullReplaySender.java b/src/main/java/com/replaymod/replay/FullReplaySender.java index 45034056..fb2c13ec 100644 --- a/src/main/java/com/replaymod/replay/FullReplaySender.java +++ b/src/main/java/com/replaymod/replay/FullReplaySender.java @@ -625,7 +625,11 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend false, //#if MC>=11600 //$$ packet.method_29443(), + //#if MC>=11602 + //$$ (net.minecraft.util.registry.DynamicRegistryManager.Impl) packet.getRegistryManager(), + //#else //$$ (net.minecraft.util.registry.RegistryTracker.Modifiable) packet.getDimension(), + //#endif //$$ packet.method_29444(), //$$ packet.getDimensionId(), //#else diff --git a/src/main/java/com/replaymod/replay/QuickReplaySender.java b/src/main/java/com/replaymod/replay/QuickReplaySender.java index 5fa12715..90ab72f5 100644 --- a/src/main/java/com/replaymod/replay/QuickReplaySender.java +++ b/src/main/java/com/replaymod/replay/QuickReplaySender.java @@ -39,6 +39,11 @@ import java.io.IOException; import java.util.Collections; import java.util.function.Consumer; +//#if MC>=11602 +//$$ import net.minecraft.util.registry.DynamicRegistryManager; +//$$ import net.minecraft.util.registry.Registry; +//#endif + //#if MC>=11600 //$$ import net.minecraft.world.World; //#else @@ -195,7 +200,11 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe replay.reset(); ctx.fireChannelRead(new PlayerRespawnS2CPacket( //#if MC>=11600 + //#if MC>=11602 + //$$ DimensionType.addRegistryDefaults(new DynamicRegistryManager.Impl()).get(Registry.DIMENSION_TYPE_KEY).get(DimensionType.OVERWORLD_REGISTRY_KEY), + //#else //$$ DimensionType.OVERWORLD_REGISTRY_KEY, + //#endif //$$ World.OVERWORLD, //$$ 0, //$$ GameMode.SPECTATOR, diff --git a/src/main/java/com/replaymod/replay/mixin/MixinPlayerControllerMP.java b/src/main/java/com/replaymod/replay/mixin/MixinPlayerControllerMP.java index c1a358de..8a01ea1d 100644 --- a/src/main/java/com/replaymod/replay/mixin/MixinPlayerControllerMP.java +++ b/src/main/java/com/replaymod/replay/mixin/MixinPlayerControllerMP.java @@ -51,7 +51,11 @@ public abstract class MixinPlayerControllerMP { //#endif //#if MC>=11400 + //#if MC>=11602 + //$$ @Inject(method = "createPlayer(Lnet/minecraft/client/world/ClientWorld;Lnet/minecraft/stat/StatHandler;Lnet/minecraft/client/recipebook/ClientRecipeBook;ZZ)Lnet/minecraft/client/network/ClientPlayerEntity;", at=@At("HEAD"), cancellable = true) + //#else @Inject(method = "createPlayer", at=@At("HEAD"), cancellable = true) + //#endif private void replayModReplay_createReplayCamera( //#if MC>=11400 ClientWorld worldIn, diff --git a/versions/common.gradle b/versions/common.gradle index 2fa6b247..eefc5844 100644 --- a/versions/common.gradle +++ b/versions/common.gradle @@ -226,21 +226,25 @@ dependencies { 11404: '1.14.4', 11502: '1.15.2', 11601: '1.16.1', + 11602: '1.16.2-rc1', ][mcVersion] mappings 'net.fabricmc:yarn:' + [ 11404: '1.14.4+build.16', 11502: '1.15.2+build.14', 11601: '1.16.1+build.17:v2', + 11602: '1.16.2-rc1+build.6:v2', ][mcVersion] modCompile 'net.fabricmc:fabric-loader:' + [ 11404: '0.7.8+build.189', 11502: '0.7.8+build.189', 11601: '0.8.8+build.202', + 11602: '0.9.1+build.205', ][mcVersion] def fabricApiVersion = [ 11404: '0.4.3+build.247-1.14', 11502: '0.5.1+build.294-1.15', 11601: '0.14.0+build.371-1.16', + 11602: '0.17.1+build.394-1.16', ][mcVersion] def fabricApiModules = [ "api-base", @@ -292,7 +296,7 @@ dependencies { shadow 'com.github.ReplayMod.JavaBlend:2.79.0:a0696f8' - shadow "com.github.ReplayMod:ReplayStudio:20b5183", shadeExclusions + shadow "com.github.ReplayMod:ReplayStudio:14192d1", shadeExclusions implementation(jGui){ transitive = false // FG 1.2 puts all MC deps into the compile configuration and we don't want to shade those @@ -301,7 +305,10 @@ dependencies { shadow 'com.github.ReplayMod:lwjgl-utils:27dcd66' if (FABRIC) { - if (mcVersion >= 11600) { + if (mcVersion >= 11602) { + // TODO re-add to runtime once available + modCompileOnly 'io.github.prospector:modmenu:1.14.0+build.24' + } else if (mcVersion >= 11600) { modCompile 'io.github.prospector:modmenu:1.14.0+build.24' } else { modCompile 'io.github.prospector.modmenu:ModMenu:1.6.2-92' From da275a60804b61cda925f0d2e8f3b5cb635a29be Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Tue, 11 Aug 2020 18:16:08 +0200 Subject: [PATCH 08/12] Update to 1.16.2 --- jGui | 2 +- versions/common.gradle | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jGui b/jGui index f80c54c9..bf00dcf2 160000 --- a/jGui +++ b/jGui @@ -1 +1 @@ -Subproject commit f80c54c96b51acd14202000fe6bed83baabbbaf5 +Subproject commit bf00dcf2ce6cec358f08ff80bc4cfa3c289a988a diff --git a/versions/common.gradle b/versions/common.gradle index eefc5844..02aada14 100644 --- a/versions/common.gradle +++ b/versions/common.gradle @@ -226,13 +226,13 @@ dependencies { 11404: '1.14.4', 11502: '1.15.2', 11601: '1.16.1', - 11602: '1.16.2-rc1', + 11602: '1.16.2', ][mcVersion] mappings 'net.fabricmc:yarn:' + [ 11404: '1.14.4+build.16', 11502: '1.15.2+build.14', 11601: '1.16.1+build.17:v2', - 11602: '1.16.2-rc1+build.6:v2', + 11602: '1.16.2+build.1:v2', ][mcVersion] modCompile 'net.fabricmc:fabric-loader:' + [ 11404: '0.7.8+build.189', @@ -296,7 +296,7 @@ dependencies { shadow 'com.github.ReplayMod.JavaBlend:2.79.0:a0696f8' - shadow "com.github.ReplayMod:ReplayStudio:14192d1", shadeExclusions + shadow "com.github.ReplayMod:ReplayStudio:bc8baba", shadeExclusions implementation(jGui){ transitive = false // FG 1.2 puts all MC deps into the compile configuration and we don't want to shade those From 8ffb98efd1a544ffd7374c1c841b73eb9563a9e6 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 16 Aug 2020 10:03:55 +0200 Subject: [PATCH 09/12] Fix recording of client-triggered world events in 1.16+ (fixes #333) --- .../java/com/replaymod/recording/mixin/MixinWorldClient.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java b/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java index 4186d2f7..be60d1dd 100644 --- a/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java +++ b/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java @@ -109,7 +109,11 @@ public abstract class MixinWorldClient extends World implements RecordingEventHa // Same goes for level events (also called effects). E.g. door open, block break, etc. //#if MC>=11400 + //#if MC>=11600 + //$$ @Inject(method = "syncWorldEvent", at = @At("HEAD")) + //#else @Inject(method = "playLevelEvent", at = @At("HEAD")) + //#endif private void playLevelEvent (PlayerEntity player, int type, BlockPos pos, int data, CallbackInfo ci) { //#else //$$ // These are handled in the World class, so we override the method in WorldClient and add our special handling. From 7c229c0216a8196ba391fa0eb4a2088d4c4b9568 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sat, 22 Aug 2020 13:36:16 +0200 Subject: [PATCH 10/12] Enable git's autocrlf --- .gitattributes | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..176a458f --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto From 27edfcb4f3cd0eac0c7fb24e87ee3fa67324ab0a Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sat, 22 Aug 2020 14:04:05 +0200 Subject: [PATCH 11/12] Fix incompatibility with mods which mixin into Main (fixes #327) --- .../core/DummyChainLoadEntryPoint.java | 18 ++++++++++++++++++ src/main/resources/fabric.mod.json | 3 +++ 2 files changed, 21 insertions(+) create mode 100644 src/main/java/com/replaymod/core/DummyChainLoadEntryPoint.java diff --git a/src/main/java/com/replaymod/core/DummyChainLoadEntryPoint.java b/src/main/java/com/replaymod/core/DummyChainLoadEntryPoint.java new file mode 100644 index 00000000..3917859d --- /dev/null +++ b/src/main/java/com/replaymod/core/DummyChainLoadEntryPoint.java @@ -0,0 +1,18 @@ +//#if FABRIC>=1 +package com.replaymod.core; + +import net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint; + +// Required for ReplayModMMLauncher. +// +// Chain-loading mixin configurations only works when the first class that is loaded doesn't have any mixins which +// target it. The first class would ordinarily be MC's Main but there are valid use cases for targeting it, see +// e.g. https://github.com/ReplayMod/ReplayMod/issues/327 +// So, instead of relying on the bad assumption that Main doesn't have any mixins, we'll instead register this +// dummy pre-launch entry point which is practically guaranteed to not have any mixins and gets called before Main. +public class DummyChainLoadEntryPoint implements PreLaunchEntrypoint { + @Override + public void onPreLaunch() { + } +} +//#endif diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 3f30a5c9..6bc530eb 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -25,6 +25,9 @@ "modmenu": [ "com.replaymod.core.gui.ModMenuApiImpl" ], + "preLaunch": [ + "com.replaymod.core.DummyChainLoadEntryPoint" + ], "mm:early_risers": [ "com.replaymod.core.ReplayModMMLauncher" ] From 1208fb92a18e63572bc05f9f194bc7b460708246 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sat, 22 Aug 2020 17:12:32 +0200 Subject: [PATCH 12/12] Add .gitkeep file to 1.16.2 folder --- versions/1.16.2/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 versions/1.16.2/.gitkeep diff --git a/versions/1.16.2/.gitkeep b/versions/1.16.2/.gitkeep new file mode 100644 index 00000000..e69de29b