From 41390b02e7869333539ec7acd819eba0304a66ec Mon Sep 17 00:00:00 2001 From: LindaJuffermans Date: Wed, 30 Sep 2020 11:20:02 +0200 Subject: [PATCH 01/23] Added LiteLoader compatibility information and workaround steps. --- docs/content.md | 30 ++++++++++++++++++++++++++++++ docs/img/multimc-addempty.jpg | Bin 0 -> 25443 bytes docs/img/multimc-addempty.png | Bin 0 -> 5690 bytes docs/img/mutlimc-liteloader.jpg | Bin 0 -> 60215 bytes docs/img/mutlimc-liteloader.png | Bin 0 -> 48570 bytes 5 files changed, 30 insertions(+) create mode 100644 docs/img/multimc-addempty.jpg create mode 100644 docs/img/multimc-addempty.png create mode 100644 docs/img/mutlimc-liteloader.jpg create mode 100644 docs/img/mutlimc-liteloader.png diff --git a/docs/content.md b/docs/content.md index 9b10d11a..36680cf2 100755 --- a/docs/content.md +++ b/docs/content.md @@ -594,3 +594,33 @@ Minecraft may crash if you try to use [RandomPatches](https://www.curseforge.com ### Sodium [sodium] ReplayMod can record when [Sodium](https://www.curseforge.com/minecraft/mc-mods/sodium) is installed but will crash during render. Disable Sodium before rendering, it can be re-enabled after that. + + +### LiteLoader [liteloader] +![](img/mutlimc-liteloader.jpg) +The MultiMC interface to place ReplayMod above LiteLoader. + +![](img/multimc-addempty.jpg) +The properties for the new *Empty*. + +[LiteLoader](http://www.liteloader.com/) is known to cause issues due to the mixin version it contains. + +You can use MultiMC to workaround this problem. +> The MultiMC `Edit` function requires that your computer has a default editor for json files associated. + +1: Create your instance then edit the instance +2: Click `Install Forge` +3: Click `Install LiteLoader` +4: Click `Add Empty`; use `ReplayMod` as name and `com.replaymod` as uid +5: Select the new *ReplayMod* and click `Edit` +6: Replace the contents with one of the below snippets +7: Save and close the text editor +8: Move *ReplayMod* up until it is **above** *LiteLoader* +9: Remove the ReplayMod jar from the mods folder if you installed it previously. + +** Snippet for 1.8.9 ** +`{ "formatVersion": 1, "name": "ReplayMod", "uid": "com.replaymod", "version": "1.8.9-2.4.5", "libraries": [{ "name": "com.replaymod:replaymod:1.8.9-2.4.5", "MMC-absoluteUrl": "https://minio.replaymod.com/replaymod/replaymod-1.8.9-2.4.5.jar" }]}` + +** Snippet for 1.12.2 ** +`{ "formatVersion": 1, "name": "ReplayMod", "uid": "com.replaymod", "version": "1.12.2-2.4.5", "libraries": [{ "name": "com.replaymod:replaymod:1.12.2-2.4.5", "MMC-absoluteUrl": "https://minio.replaymod.com/replaymod/replaymod-1.12.2-2.4.5.jar" }]}` + diff --git a/docs/img/multimc-addempty.jpg b/docs/img/multimc-addempty.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8c7e3b06e6d6f91f78d8b508b793d11489af0d06 GIT binary patch literal 25443 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

XkjKbNv;#1R|>?txtD# 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

PA3B{9%33`Ou5A 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�ozgmrdD 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 CUS!Dt literal 0 HcmV?d00001 diff --git a/docs/img/mutlimc-liteloader.png b/docs/img/mutlimc-liteloader.png new file mode 100644 index 0000000000000000000000000000000000000000..5cff1a34d49121a7ad35cf842537158c4d86f362 GIT binary patch literal 48570 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 T_2`?L&ZUaGy*oskyomzly@! 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 Date: Wed, 21 Oct 2020 15:52:25 +0200 Subject: [PATCH 02/23] 1.7 Animations w/shaders can cause floating glass and water --- docs/content.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/content.md b/docs/content.md index 36680cf2..ae59da6e 100755 --- a/docs/content.md +++ b/docs/content.md @@ -583,6 +583,9 @@ The [LabyMod](https://www.curseforge.com/minecraft/mc-mods/labymod) is not compa ### OldAnimationsMod [oldanimationsmod] In case your Minecraft crashes when you are using both ReplayMod and [OldAnimationsMod](https://oldanimationsmod.net/), try removing OldAnimationsMod. +### Orange's 1.7 Animations [17animations] +If you use ReplayMod with shaders and [1.7 Animations](https://www.curseforge.com/minecraft/mc-mods/old-animations-mod) you may see floating water and glass. Remove 1.7 Animations to resolve this. + ### Sk1er Club: Patcher [patcher] We have seen reports of crashes that were related to [Patcher](https://sk1er.club/mods/patcher); in case of crashes try removing Patcher. From d7e309bca4d9d903281bed85d696578eebcfd47a Mon Sep 17 00:00:00 2001 From: LindaJuffermans Date: Wed, 21 Oct 2020 15:55:04 +0200 Subject: [PATCH 03/23] Removed old issue from zeranoe's ffmpeg 4.3 missing libx264 --- docs/content.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/content.md b/docs/content.md index 36680cf2..fe1e9609 100755 --- a/docs/content.md +++ b/docs/content.md @@ -535,11 +535,6 @@ On Windows, this path might look like `C:\ffmpeg\ffmpeg.exe`. Then, open the **"Command Line Settings" Section** in the Render Settings and paste this path into the **left input field** and retry rendering. -## Rendering Failed [libx264] -An error screen is displayed with FFmpeg error: `Unknown encoder 'libx264'` - -The FFmpeg version you have installed is compiled without `--enable-_libx264_`. The 4.3 version on [https://ffmpeg.zeranoe.com/](https://ffmpeg.zeranoe.com/) has this issue. To fix it, install another version (e.g. the latest snapshot). - ## Crash while rendering [crash] If Minecraft crashes after a few frames of rendering, it most likely means the **FFmpeg** didn't like the **Command Line Arguments** you passed. If you customized the Command Line Arguments manually, re-check them - it's probably your own fault. From d9ba1d24f5b59726728216f03a3aa19b5cf3afdf Mon Sep 17 00:00:00 2001 From: LindaJuffermans Date: Mon, 26 Oct 2020 16:40:27 +0100 Subject: [PATCH 04/23] Future Client crashes on the Mixin --- docs/content.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/content.md b/docs/content.md index a3fe36d7..065a697a 100755 --- a/docs/content.md +++ b/docs/content.md @@ -544,8 +544,9 @@ If you customized the Command Line Arguments manually, re-check them - it's prob - If you did **not** customize the **Command Line Arguments**, you might have entered some insanely high (or low) values e.g. for Bitrate or Video Resolution. Try again with other, more reasonable values. - Make sure the camera doesn't move below Y=0 or above Y=255 -## Unsupported Launchers [launchers] -[Lunar Client](https://www.lunarclient.com/) does not support ReplayMod +## Unsupported Launchers and clients [launchers] +[Future Client](https://www.futureclient.net/) is not compatible with the Mixin required by ReplayMod. +[Lunar Client](https://www.lunarclient.com/) does not support ReplayMod [Badlion Client](https://www.badlion.net/) offers a different ReplayMod that is not the same as this one. ## Compatibility with other Mods [compatibility] From 3b428c7574ae7452645b1785834acf6595f3ebc8 Mon Sep 17 00:00:00 2001 From: LindaJuffermans Date: Wed, 28 Oct 2020 19:47:22 +0100 Subject: [PATCH 05/23] Removed links to other mods which may trigger Chrome's safe browsing block. --- docs/content.md | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/docs/content.md b/docs/content.md index 065a697a..2b49f3d6 100755 --- a/docs/content.md +++ b/docs/content.md @@ -43,7 +43,7 @@ If in doubt, consult the documentation of your distribution. ## Settings [settings] To access the **Replay Mod Settings** from the Main Menu click the **"Replay Viewer"** button and click the **Settings** button. -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. +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_ 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 hamburger button in the lower left corner. @@ -544,22 +544,21 @@ If you customized the Command Line Arguments manually, re-check them - it's prob - If you did **not** customize the **Command Line Arguments**, you might have entered some insanely high (or low) values e.g. for Bitrate or Video Resolution. Try again with other, more reasonable values. - Make sure the camera doesn't move below Y=0 or above Y=255 -## Unsupported Launchers and clients [launchers] -[Future Client](https://www.futureclient.net/) is not compatible with the Mixin required by ReplayMod. -[Lunar Client](https://www.lunarclient.com/) does not support ReplayMod -[Badlion Client](https://www.badlion.net/) offers a different ReplayMod that is not the same as this one. +## Unsupported Launchers [launchers] +_Future Client_ is not compatible with the Mixin required by ReplayMod. +_Lunar Client_ does not support ReplayMod +_Badlion Client_ offers a different ReplayMod that is not the same as this one. ## Compatibility with other Mods [compatibility] ### General information [general] In General, the Replay Mod _should_ be compatible with most Forge and Fabric Mods. ### Shaders Mod [shaders] -[Karyonix' Shaders Mod](http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1286604-shaders-mod-updated-by-karyonix) -is no longer compatible with Minecraft Forge starting with 1.9.4. As such it is not compatible with the Replay Mod either. -Please use [Optifine](https://optifine.net/) instead. +_Karyonix' Shaders Mod_ is no longer compatible with Minecraft Forge starting with 1.9.4. As such it is not compatible with the Replay Mod either. +Please use _Optifine_ instead. ### Custom Main Menu [custom-main-menu] -The [Custom Main Menu](https://www.curseforge.com/minecraft/mc-mods/custom-main-menu) mod is often used in mod packs to customize their Main Menu with a button layout fitting the background image, links to their website / bug tracker and similar. +The _Custom Main Menu_ mod is often used in mod packs to customize their Main Menu with a button layout fitting the background image, links to their website / bug tracker and similar. If you are familiar with it, the button id for the Replay Mod is: **17890234** (text: `replaymod.gui.replayviewer`). Due to the nature of this Custom Main Menu mod, buttons added to the Main Menu by 3rd party mods like the **Replay Mod** will not show up by default. @@ -571,28 +570,28 @@ For an explanation of this config file, have a look at Custom Main Menu's page. You can find a list of already modified config files [here](https://gist.github.com/Johni0702/3f3fab81dbf7ada83d045d9fe8f345aa). ### Tickrate Changer [tickrate-changer] -The [Tickrate Changer](https://www.curseforge.com/minecraft/mc-mods/tickratechanger) mod may cause minecraft to freeze when you try to use the Replay Viewer UI. +The _Tickrate Changer_ mod may cause minecraft to freeze when you try to use the Replay Viewer UI. ### LabyMod [labymod] -The [LabyMod](https://www.curseforge.com/minecraft/mc-mods/labymod) is not compatible with ReplayMod. +The _LabyMod_ is not compatible with ReplayMod. ### OldAnimationsMod [oldanimationsmod] -In case your Minecraft crashes when you are using both ReplayMod and [OldAnimationsMod](https://oldanimationsmod.net/), try removing OldAnimationsMod. +In case your Minecraft crashes when you are using both ReplayMod and _OldAnimationsMod_, try removing OldAnimationsMod. ### Orange's 1.7 Animations [17animations] -If you use ReplayMod with shaders and [1.7 Animations](https://www.curseforge.com/minecraft/mc-mods/old-animations-mod) you may see floating water and glass. Remove 1.7 Animations to resolve this. +If you use ReplayMod with shaders and _1.7 Animations_ you may see floating water and glass. Remove 1.7 Animations to resolve this. ### Sk1er Club: Patcher [patcher] -We have seen reports of crashes that were related to [Patcher](https://sk1er.club/mods/patcher); in case of crashes try removing Patcher. +We have seen reports of crashes that were related to _Patcher_; in case of crashes try removing Patcher. ### Baritone [baritone] -The [Baritone](https://github.com/cabaletta/baritone/) mod can cause a crash when you're trying to load a replay. If you experience such problems, try running without Baritone. +The _Baritone_ mod can cause a crash when you're trying to load a replay. If you experience such problems, try running without Baritone. ### RandomPatches [randompatches] -Minecraft may crash if you try to use [RandomPatches](https://www.curseforge.com/minecraft/mc-mods/randompatches) together with ReplayMod. Try removing RandomPatches if Minecraft crashes on startup. +Minecraft may crash if you try to use _RandomPatches_ together with ReplayMod. Try removing RandomPatches if Minecraft crashes on startup. ### Sodium [sodium] -ReplayMod can record when [Sodium](https://www.curseforge.com/minecraft/mc-mods/sodium) is installed but will crash during render. Disable Sodium before rendering, it can be re-enabled after that. +ReplayMod can record when _Sodium_ is installed but will crash during render. Disable Sodium before rendering, it can be re-enabled after that. ### LiteLoader [liteloader] @@ -602,7 +601,7 @@ The MultiMC interface to place ReplayMod above LiteLoader. ![](img/multimc-addempty.jpg) The properties for the new *Empty*. -[LiteLoader](http://www.liteloader.com/) is known to cause issues due to the mixin version it contains. +_LiteLoader_ is known to cause issues due to the mixin version it contains. You can use MultiMC to workaround this problem. > The MultiMC `Edit` function requires that your computer has a default editor for json files associated. From 57900edf31902f495024b95b8ebdd01a8c16003e Mon Sep 17 00:00:00 2001 From: LindaJuffermans Date: Wed, 28 Oct 2020 19:49:33 +0100 Subject: [PATCH 06/23] Fixed linebreak after Lunar Client --- docs/content.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content.md b/docs/content.md index 2b49f3d6..24ae47c5 100755 --- a/docs/content.md +++ b/docs/content.md @@ -546,7 +546,7 @@ If you customized the Command Line Arguments manually, re-check them - it's prob ## Unsupported Launchers [launchers] _Future Client_ is not compatible with the Mixin required by ReplayMod. -_Lunar Client_ does not support ReplayMod +_Lunar Client_ does not support ReplayMod. _Badlion Client_ offers a different ReplayMod that is not the same as this one. ## Compatibility with other Mods [compatibility] From 28b2f873242d292fc9a945bbdae76c8bae410763 Mon Sep 17 00:00:00 2001 From: LindaJuffermans Date: Sat, 7 Nov 2020 15:49:59 +0100 Subject: [PATCH 07/23] Resource Loader is not compatible --- docs/content.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/content.md b/docs/content.md index 24ae47c5..9ce0e4c3 100755 --- a/docs/content.md +++ b/docs/content.md @@ -593,6 +593,8 @@ Minecraft may crash if you try to use _RandomPatches_ together with ReplayMod. T ### Sodium [sodium] ReplayMod can record when _Sodium_ is installed but will crash during render. Disable Sodium before rendering, it can be re-enabled after that. +### Resource Loader [resourceloader] +The _Resource Loader_ mod is not compatible with ReplayMod. ### LiteLoader [liteloader] ![](img/mutlimc-liteloader.jpg) From 3cc2a90b648a1305406600f42029a99311952369 Mon Sep 17 00:00:00 2001 From: LindaJuffermans Date: Sat, 7 Nov 2020 15:55:09 +0100 Subject: [PATCH 08/23] Update ffmpeg link to the essential release ZIP file directly. --- docs/content.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content.md b/docs/content.md index 24ae47c5..388595e5 100755 --- a/docs/content.md +++ b/docs/content.md @@ -20,7 +20,7 @@ After installing Forge, simply put the downloaded `ReplayMod.jar` file in the `/ To render your creations with **Replay Mod** you will need to have FFmpeg installed. ### Windows [windows] -Download the **latest** FFmpeg build from (the essentials version is sufficient). +Download the latest FFmpeg release from https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip. In your `.minecraft` folder, create a `ffmpeg` folder. Extract the downloaded .zip file into this folder. The FFmpeg executable should end up at `.minecraft\ffmpeg\bin\ffmpeg.exe`. From f1e197b8302ce6da7e0931d7c737677c75a75f07 Mon Sep 17 00:00:00 2001 From: LindaJuffermans Date: Sat, 7 Nov 2020 20:34:37 +0100 Subject: [PATCH 09/23] Quick Mode is only available for MC 1.9.4 and up. --- docs/content.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/content.md b/docs/content.md index 24ae47c5..0d199d13 100755 --- a/docs/content.md +++ b/docs/content.md @@ -446,6 +446,8 @@ When you first enable **Quick Mode** in a replay, an internal reference of certa 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`. +**Quick Mode** is available in ReplayMod for Minecraft 1.9.4 and up. + ## Player Overview [overview] ![](img/player-overview.jpg) The **Player Overview** Screen From 6552fc68c08c553f800711c499c990a1e6f3b372 Mon Sep 17 00:00:00 2001 From: LindaJuffermans Date: Tue, 10 Nov 2020 09:32:32 +0100 Subject: [PATCH 10/23] LabyMod update 3.7.x has been tested with ReplayMod and works. --- docs/content.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/content.md b/docs/content.md index 24ae47c5..7dc4290b 100755 --- a/docs/content.md +++ b/docs/content.md @@ -573,7 +573,8 @@ You can find a list of already modified config files [here](https://gist.github. The _Tickrate Changer_ mod may cause minecraft to freeze when you try to use the Replay Viewer UI. ### LabyMod [labymod] -The _LabyMod_ is not compatible with ReplayMod. +_LabyMod_ v3.7.x has been reported to be compatible with ReplayMod and other Forge mods. +Lower versions are not compatible. ### OldAnimationsMod [oldanimationsmod] In case your Minecraft crashes when you are using both ReplayMod and _OldAnimationsMod_, try removing OldAnimationsMod. From bcaf946f136b8d85b844e6517f3464f2661d6c8d Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sat, 14 Nov 2020 09:55:36 +0100 Subject: [PATCH 11/23] Move .gitkeep from 1.16.3 to 1.16.4 folder (fixup c620e2c) --- versions/{1.16.3 => 1.16.4}/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename versions/{1.16.3 => 1.16.4}/.gitkeep (100%) diff --git a/versions/1.16.3/.gitkeep b/versions/1.16.4/.gitkeep similarity index 100% rename from versions/1.16.3/.gitkeep rename to versions/1.16.4/.gitkeep From 6879729633192eda246630e5770d7f5e49f7c869 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 15 Nov 2020 13:17:00 +0100 Subject: [PATCH 12/23] Fix OpenEXR export option throwing UnsatisfiedLinkError on Windows --- ...in_WindowsWorkaroundForTinyEXRNatives.java | 81 +++++++++++++++++++ .../resources/mixins.render.replaymod.json | 1 + 2 files changed, 82 insertions(+) create mode 100644 src/main/java/com/replaymod/render/mixin/Mixin_WindowsWorkaroundForTinyEXRNatives.java diff --git a/src/main/java/com/replaymod/render/mixin/Mixin_WindowsWorkaroundForTinyEXRNatives.java b/src/main/java/com/replaymod/render/mixin/Mixin_WindowsWorkaroundForTinyEXRNatives.java new file mode 100644 index 00000000..3df81c08 --- /dev/null +++ b/src/main/java/com/replaymod/render/mixin/Mixin_WindowsWorkaroundForTinyEXRNatives.java @@ -0,0 +1,81 @@ +//#if MC>=11400 +package com.replaymod.render.mixin; + +import org.lwjgl.system.Library; +import org.lwjgl.system.Platform; +import org.lwjgl.util.tinyexr.TinyEXR; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.function.Consumer; +import java.util.regex.Pattern; + +/** + * It appears like natives on Windows cannot be loaded if one of their dependencies has already been loaded by a + * different class loader. In our case we cannot load tinyexr (on the knot class loader) because lwjgl has already + * been loaded on the system class loader. + * + * If we force the tinyexr native to load on the system class loader (by calling `Library.loadSystem(absPath)`), + * it'll load but we'll get an error when we call any of the native methods. + * + * We can't really load TinyEXR itself via the system class loader because Java does not provide any methods for + * modifying the system class path at runtime and we'd have to use JVM-specific hacks. + * + * Strangely, if we use System.loadLibrary instead of System.load, then it all just works. This mixin implements + * that workaround by finding MC's natives folder, extracting the dll from our jar into that folder and then replacing + * the context class passed to Library.loadSystem (which it uses to find dlls in jars) with Library (which is on the + * system class loader) so it cannot find the dll in our jar and falls back to using System.loadLibrary. + */ +@Mixin(value = TinyEXR.class, remap = false) +public class Mixin_WindowsWorkaroundForTinyEXRNatives { + private static final String LOAD_SYSTEM_CONSUMERS = "Lorg/lwjgl/system/Library;loadSystem(Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/lang/Class;Ljava/lang/String;)V"; + + @ModifyArg(method = "", at = @At(value = "INVOKE", target = LOAD_SYSTEM_CONSUMERS)) + private static Class uglyWindowsHacks(Consumer load, Consumer loadLibrary, Class context, String name) throws IOException { + if (Platform.get() != Platform.WINDOWS) { + return context; // works out of the box on linux + } + + name = System.mapLibraryName(name); + + URL libURL = context.getClassLoader().getResource(name); + if (libURL == null) { + throw new UnsatisfiedLinkError("Failed to locate library: " + name); + } + + String lwjglLibName = Library.JNI_LIBRARY_NAME; + if (!lwjglLibName.endsWith(".dll")) { + lwjglLibName = System.mapLibraryName(lwjglLibName); + } + + String paths = System.getProperty("java.library.path"); + Path nativesDir = null; + for (String dir : Pattern.compile(File.pathSeparator).split(paths)) { + Path path = Paths.get(dir); + if (Files.isReadable(path.resolve(lwjglLibName))) { + nativesDir = path; + break; + } + } + if (nativesDir == null) { + throw new UnsatisfiedLinkError("Failed to locate natives folder in " + paths); + } + + Path libPath = nativesDir.resolve(name); + try (InputStream source = libURL.openStream()) { + Files.copy(source, libPath, StandardCopyOption.REPLACE_EXISTING); + } + + return Library.class; + } +} +//#endif diff --git a/src/main/resources/mixins.render.replaymod.json b/src/main/resources/mixins.render.replaymod.json index 9a7ca987..976fbf9b 100644 --- a/src/main/resources/mixins.render.replaymod.json +++ b/src/main/resources/mixins.render.replaymod.json @@ -19,6 +19,7 @@ //#endif //#if MC>=11400 "Mixin_PreserveDepthDuringHandRendering", + "Mixin_WindowsWorkaroundForTinyEXRNatives", "MainWindowAccessor", //#endif "WorldRendererAccessor", From 36276d32b6cfbc368995f0a0826e96ec831752f5 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 22 Nov 2020 09:14:51 +0100 Subject: [PATCH 13/23] Fix camera path export roll being inverted (fixes #427) --- src/main/java/com/replaymod/render/CameraPathExporter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/replaymod/render/CameraPathExporter.java b/src/main/java/com/replaymod/render/CameraPathExporter.java index abb9e994..1d26db6a 100644 --- a/src/main/java/com/replaymod/render/CameraPathExporter.java +++ b/src/main/java/com/replaymod/render/CameraPathExporter.java @@ -91,7 +91,7 @@ public class CameraPathExporter { quatYaw.setFromAxisAngle(new Vector4f(0, -1, 0, (float) Math.toRadians(yaw))); quatPitch.setFromAxisAngle(new Vector4f(-1, 0, 0, (float) Math.toRadians(pitch))); - quatRoll.setFromAxisAngle(new Vector4f(0, 0, 1, (float) Math.toRadians(roll))); + quatRoll.setFromAxisAngle(new Vector4f(0, 0, -1, (float) Math.toRadians(roll))); Quaternion quaternion = new Quaternion(0, 0, 0, 1); Quaternion.mul(quaternion, quatYaw, quaternion); From ee0294439189d713e7ad55f1f9d66e0f08570b0a Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 22 Nov 2020 13:00:37 +0100 Subject: [PATCH 14/23] Fix crash when rendering ODS without depth export (fixes #418) --- .../java/com/replaymod/render/capturer/ODSFrameCapturer.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/replaymod/render/capturer/ODSFrameCapturer.java b/src/main/java/com/replaymod/render/capturer/ODSFrameCapturer.java index 473bbf1d..5f8d1713 100644 --- a/src/main/java/com/replaymod/render/capturer/ODSFrameCapturer.java +++ b/src/main/java/com/replaymod/render/capturer/ODSFrameCapturer.java @@ -141,7 +141,9 @@ public class ODSFrameCapturer implements FrameCapturer { for (Channel channel : Channel.values()) { CubicOpenGlFrame leftFrame = leftChannels.get(channel); CubicOpenGlFrame rightFrame = rightChannels.get(channel); - result.put(channel, new ODSOpenGlFrame(leftFrame, rightFrame)); + if (leftFrame != null && rightFrame != null) { + result.put(channel, new ODSOpenGlFrame(leftFrame, rightFrame)); + } } return result; } From d4b7fdf949c56f9afde7ea57844ace8c3eb61af8 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 22 Nov 2020 14:31:03 +0100 Subject: [PATCH 15/23] Update remap (fixes #414) Support remapping of mixin targets declared in static fields (specifically `core.MixinKeyboardListener:ON_KEY_PRESSED`). String literals in annotations can be specified in a static final field instead of inline (so you can e.g. use the same literal in multiple places). This commit adds support for remapping those external literals. --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index e91e2915..a47318d4 100755 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ import java.io.ByteArrayOutputStream plugins { id("fabric-loom") version "0.4-SNAPSHOT" apply false - id("com.replaymod.preprocess") version "3c46acb" + id("com.replaymod.preprocess") version "24ac087" id("com.github.hierynomus.license") version "0.15.0" } From 4739d2278b1d50b9e4a1f28f761885844df74d2f Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 22 Nov 2020 14:51:48 +0100 Subject: [PATCH 16/23] Fix render settings not saving when rendering (fixes #425) Clicking Cancel or Add to Queue does save them but clicking Render does not. This is caused by the fact that the GuiRenderSettings are now a popup and no longer their own screen, so to close them, we need to call its close method, not close the entire screen. --- .../extras/advancedscreenshots/GuiCreateScreenshot.java | 2 +- src/main/java/com/replaymod/render/gui/GuiRenderSettings.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/replaymod/extras/advancedscreenshots/GuiCreateScreenshot.java b/src/main/java/com/replaymod/extras/advancedscreenshots/GuiCreateScreenshot.java index 5e831ebb..62d316cf 100644 --- a/src/main/java/com/replaymod/extras/advancedscreenshots/GuiCreateScreenshot.java +++ b/src/main/java/com/replaymod/extras/advancedscreenshots/GuiCreateScreenshot.java @@ -50,7 +50,7 @@ public class GuiCreateScreenshot extends GuiRenderSettings implements Loadable { buttonPanel.removeElement(queueButton); renderButton.setI18nLabel("replaymod.gui.advancedscreenshots.create").onClick(() -> { // Closing this GUI ensures that settings are saved - getMinecraft().openScreen(null); + close(); mod.runLater(() -> { try { diff --git a/src/main/java/com/replaymod/render/gui/GuiRenderSettings.java b/src/main/java/com/replaymod/render/gui/GuiRenderSettings.java index 5a632c57..cf0f58f5 100644 --- a/src/main/java/com/replaymod/render/gui/GuiRenderSettings.java +++ b/src/main/java/com/replaymod/render/gui/GuiRenderSettings.java @@ -252,7 +252,7 @@ public class GuiRenderSettings extends AbstractGuiPopup { @Override public void run() { // Closing this GUI ensures that settings are saved - getMinecraft().openScreen(null); + close(); try { VideoRenderer videoRenderer = new VideoRenderer(save(false), replayHandler, timeline); videoRenderer.renderVideo(); From f895a13b61eb59780dce9ce59d1799a038134578 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 22 Nov 2020 14:55:07 +0100 Subject: [PATCH 17/23] Apply Saving Replay dialog when pressing Enter (closes #424) --- .../com/replaymod/recording/gui/GuiSavingReplay.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/replaymod/recording/gui/GuiSavingReplay.java b/src/main/java/com/replaymod/recording/gui/GuiSavingReplay.java index e42b6e91..ff8d8b07 100644 --- a/src/main/java/com/replaymod/recording/gui/GuiSavingReplay.java +++ b/src/main/java/com/replaymod/recording/gui/GuiSavingReplay.java @@ -83,10 +83,7 @@ public class GuiSavingReplay { GuiButton applyButton = new GuiButton() .setSize(150, 20) .setI18nLabel("replaymod.gui.done") - .onClick(() -> { - apply.forEach(Runnable::run); - close(); - }); + .onClick(this::apply); panel.addElements(new VerticalLayout.Data(0.5), applyButton); } @@ -98,6 +95,7 @@ public class GuiSavingReplay { .setText(originalName) .setI18nHint("replaymod.gui.delete") .setTextColorDisabled(Colors.RED) + .onEnter(this::apply) .setTooltip(createTooltip(path, metaData)); GuiButton clearButton = new GuiButton() .setSize(20, 20) @@ -133,6 +131,11 @@ public class GuiSavingReplay { }).addElements(null, tooltip, entry); } + private void apply() { + apply.forEach(Runnable::run); + close(); + } + private void applyOutput(Path path, String newName) { if (newName.isEmpty()) { try { From f7f20ee6cbea105a4f8e74d43806d0659a092a84 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 22 Nov 2020 15:03:24 +0100 Subject: [PATCH 18/23] Add setting to disable Saving Replay rename dialog (closes #423) --- src/main/java/com/replaymod/recording/Setting.java | 1 + .../java/com/replaymod/recording/gui/GuiSavingReplay.java | 5 +++++ src/main/resources/assets/replaymod/lang | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/replaymod/recording/Setting.java b/src/main/java/com/replaymod/recording/Setting.java index 27d2d69c..0bb27719 100644 --- a/src/main/java/com/replaymod/recording/Setting.java +++ b/src/main/java/com/replaymod/recording/Setting.java @@ -8,6 +8,7 @@ public final class Setting extends SettingsRegistry.SettingKeys { public static final Setting INDICATOR = make("indicator", "indicator", true); public static final Setting AUTO_START_RECORDING = make("autoStartRecording", "autostartrecording", true); public static final Setting AUTO_POST_PROCESS = make("autoPostProcess", null, true); + public static final Setting RENAME_DIALOG = make("renameDialog", "rename_recording_dialog", true); private static Setting make(String key, String displayName, T defaultValue) { return new Setting<>(key, displayName, defaultValue); diff --git a/src/main/java/com/replaymod/recording/gui/GuiSavingReplay.java b/src/main/java/com/replaymod/recording/gui/GuiSavingReplay.java index ff8d8b07..7f1a1238 100644 --- a/src/main/java/com/replaymod/recording/gui/GuiSavingReplay.java +++ b/src/main/java/com/replaymod/recording/gui/GuiSavingReplay.java @@ -2,6 +2,7 @@ package com.replaymod.recording.gui; import com.replaymod.core.ReplayMod; import com.replaymod.core.utils.Utils; +import com.replaymod.recording.Setting; import com.replaymod.replay.gui.screen.GuiReplayViewer; import com.replaymod.replaystudio.replay.ReplayMetaData; import com.replaymod.replaystudio.us.myles.ViaVersion.api.Pair; @@ -86,6 +87,10 @@ public class GuiSavingReplay { .onClick(this::apply); panel.addElements(new VerticalLayout.Data(0.5), applyButton); + + if (!core.getSettingsRegistry().get(Setting.RENAME_DIALOG)) { + apply(); + } } private GuiTextField addOutput(Path path, ReplayMetaData metaData) { diff --git a/src/main/resources/assets/replaymod/lang b/src/main/resources/assets/replaymod/lang index b45b1a1f..63b7a8be 160000 --- a/src/main/resources/assets/replaymod/lang +++ b/src/main/resources/assets/replaymod/lang @@ -1 +1 @@ -Subproject commit b45b1a1f9ae205a79c03726fce885536dd0dabd0 +Subproject commit 63b7a8bea1ab9a9f005c9ae0e1c54b4432cbc9e6 From 68ca92e8a2f65cc9b3411751bd9fa9c8e47ee311 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 22 Nov 2020 15:06:28 +0100 Subject: [PATCH 19/23] Update changelog URL --- build.gradle.kts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index a47318d4..184e5ed3 100755 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -115,10 +115,7 @@ fun generateVersionsJson(): Map { versions.forEach { val (thisMcVersion, modVersion, preVersion) = it.split("-") + listOf(null, null) if (thisMcVersion == mcVersion) { - mcVersionRoot[it] = if (tagVersions.contains(it)) - "See https://github.com/ReplayMod/ReplayMod/releases/$it" - else - "See https://www.replaymod.com/forum/thread/100" + mcVersionRoot[it] = "See https://www.replaymod.com/changelog.txt" if (latest == null) latest = it if (preVersion == null) { if (recommended == null) recommended = it From d06ef47f1c27ce5bc18408b7a0e5e416bea8cd5b Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 22 Nov 2020 15:15:41 +0100 Subject: [PATCH 20/23] Update ReplayStudio (fixes #426) --- versions/common.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/common.gradle b/versions/common.gradle index 11bba57d..be04eb4f 100644 --- a/versions/common.gradle +++ b/versions/common.gradle @@ -309,7 +309,7 @@ dependencies { shadow 'com.github.ReplayMod.JavaBlend:2.79.0:a0696f8' - shadow "com.github.ReplayMod:ReplayStudio:830678c", shadeExclusions + shadow "com.github.ReplayMod:ReplayStudio:dac74cc", 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 c3c59ec1c0e759cbb7f330b86288ef66c3ab1875 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 22 Nov 2020 15:18:41 +0100 Subject: [PATCH 21/23] Trim video file extension from glb file name (fixes #422) --- src/main/java/com/replaymod/render/CameraPathExporter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/replaymod/render/CameraPathExporter.java b/src/main/java/com/replaymod/render/CameraPathExporter.java index 1d26db6a..7bf0c23a 100644 --- a/src/main/java/com/replaymod/render/CameraPathExporter.java +++ b/src/main/java/com/replaymod/render/CameraPathExporter.java @@ -213,7 +213,7 @@ public class CameraPathExporter { java.nio.file.Path videoPath = settings.getOutputFile().toPath(); java.nio.file.Path glbBasePath = Files.isDirectory(videoPath) ? videoPath.resolve("camera.glb") - : videoPath.resolveSibling(videoPath.getFileName() + ".glb"); + : videoPath.resolveSibling(FilenameUtils.getBaseName(videoPath.getFileName().toString()) + ".glb"); java.nio.file.Path glbPath = glbBasePath; for (int i = 0; Files.exists(glbPath); i++) { String baseName = FilenameUtils.getBaseName(glbBasePath.getFileName().toString()); From 673964ea6afae36affcf563e33e7f239ba16cada Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 22 Nov 2020 16:04:14 +0100 Subject: [PATCH 22/23] Hide Saving Replay popup when no output is produced (fixes #420) I.e. if the had Auto-Recording disabled and never pressed start, there won't be any replays and it would just be the Done button, which is pointless. --- .../replaymod/editor/gui/MarkerProcessor.java | 4 ++++ .../recording/packet/PacketListener.java | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/main/java/com/replaymod/editor/gui/MarkerProcessor.java b/src/main/java/com/replaymod/editor/gui/MarkerProcessor.java index eca8f74f..80e6494d 100644 --- a/src/main/java/com/replaymod/editor/gui/MarkerProcessor.java +++ b/src/main/java/com/replaymod/editor/gui/MarkerProcessor.java @@ -53,6 +53,10 @@ public class MarkerProcessor { } } + public static boolean producesAnyOutput(ReplayFile replayFile) throws IOException { + return !getOutputSuffixes(replayFile).isEmpty(); + } + private enum OutputState { /** A new output file has begun but not data has been written yet. */ NotYetWriting, diff --git a/src/main/java/com/replaymod/recording/packet/PacketListener.java b/src/main/java/com/replaymod/recording/packet/PacketListener.java index 53b7de29..40d4605c 100644 --- a/src/main/java/com/replaymod/recording/packet/PacketListener.java +++ b/src/main/java/com/replaymod/recording/packet/PacketListener.java @@ -39,6 +39,7 @@ import net.minecraft.network.Packet; import net.minecraft.network.PacketByteBuf; import net.minecraft.text.LiteralText; import net.minecraft.util.crash.CrashReport; +import org.apache.commons.io.FilenameUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -65,6 +66,7 @@ import net.minecraft.network.NetworkSide; import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; import java.util.Collections; @@ -266,6 +268,23 @@ public class PacketListener extends ChannelInboundHandlerAdapter { List> outputPaths; synchronized (replayFile) { try { + if (!MarkerProcessor.producesAnyOutput(replayFile)) { + // Immediately close the saving popup, the user doesn't care about it + core.runLater(guiSavingReplay::close); + + // 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(); + Path rawPath = rawFolder.resolve(outputPath.getFileName()); + for (int i = 1; Files.exists(rawPath); i++) { + rawPath = rawPath.resolveSibling(replayName + "." + i + ".mcpr"); + } + Files.createDirectories(rawPath.getParent()); + replayFile.saveTo(rawPath.toFile()); + replayFile.close(); + return; + } + replayFile.save(); replayFile.close(); From 99b1528dccef116f5d3ef44ba68da9a5102f4680 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 22 Nov 2020 16:18:22 +0100 Subject: [PATCH 23/23] Update doRelease task for current branching model --- build.gradle.kts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 184e5ed3..0193959a 100755 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -144,13 +144,19 @@ val doRelease by tasks.registering { listOf(version, null) } - // Create new commit + // Merge release branch into stable but do not yet commit (we need to update the version.txt first) + command("git", "checkout", "stable") + command("git", "merge", "--no-ff", "--no-commit", "release-$version") + + // Update version.txt + file("version.txt").writeText("$version\n") + command("git", "add", "version.txt") + + // Finallize the merge. The message is what is later used to identify releses for building the version.json tree val commitMessage = if (preVersion != null) "Pre-release $preVersion of $modVersion" else "Release $modVersion" - file("version.txt").writeText("$version\n") - command("git", "add", "version.txt") command("git", "commit", "-m", commitMessage) // Generate versions.json content