Replay Mod (Fabric & Forge)

Replay Mod (Fabric & Forge)

787k Downloads

Bugs with the 1.15.2 Version of Replaymod

Xanton19 opened this issue · 13 comments

commented

Wow, Johni0702, I am very impressed that you made a playable 1.15 version of Replaymod in a short timeframe, I really appreciate it, thank you very much!

I don't want to bother or overwhelm you with bugs, that have been discovered, as it is expected with early versions.

Now the Bugs I have encountered in the 1.15.2 Version until now are:

Invisible Entities show up in the Replay, even they are not supposed to be there (For example Invisible Armour Stands show up in the Mineplex lobby)
Screenshot (18565)

Strange Text character always appears at the end of the text line
Screenshot (18567)
Screenshot (18562)

As you have mentioned in the closing of my "1.15 Compiling Failed" thread, Optifine is incompatible with the Replaymod

My compiled Replaymod 1.15 jar (Needed to compress it to zip, as Github doesn't support uploading jar files and I know that a jar file is a zip compressed file, I just don't want to make things complicated): replaymod-1.15.2-2.2.0-b7-43-g065d713.jar.zip

An issue I have encountered with the 1.14.4 version of Replaymod and Worlddownloader for Fabric is that it crashes when I download the world from a replay for example.

commented

The weird characters are probably because you built the mod on Windows which defaults to a different text encoding than other OSs.
Could you try adding the following line to the gradle.properties file and tell me if that fixes it?

file.encoding=utf-8

You might need to run ./gradlew clean before re-building for that change to take effect.

commented

The weird characters are probably because you built the mod on Windows which defaults to a different text encoding than other OSs.
Could you try adding the following line to the gradle.properties file and tell me if that fixes it?

file.encoding=utf-8

You might need to run ./gradlew clean before re-building for that change to take effect.

I have tried to compile on Windows with file.encoding=utf-8, but still, it does not work. I might try it later out on my Linux partition. Speaking of Linux, which Linux Distro are you using?

commented

Here is the info about my Java Version:

$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
Eclipse OpenJ9 VM (build openj9-0.18.1, JRE 1.8.0 Windows 10 amd64-64-Bit Compressed References 20200122_564 (JIT enabled, AOT enabled)
OpenJ9 - 51a5857d2
OMR - 7a1b0239a
JCL - 8cf8a30581 based on jdk8u242-b08)

Here is my Build (based on Windows) (If you wonder, why the build is one commit ahead of the 1.15 branch, it is because the latest commit I have done is the addition of the file.encoding=utf-8 line):
replaymod-1.15.2-2.2.0-b7-44-gd017cd1.jar.zip
gradle-properties.zip

commented

Sorry for dumb, but is there a 1.15 version of ReplayMod available to download? I put that compiled JAR in my mods folder but booting in vanilla 1.15 doesn't recognize the mod, I assume I need to boot with the correct launcher. I saw a Tweet that said there may be an official release in a few weeks, but is there a method to launch the beta release?

commented

@beskhu3epnm The 1.15 version of the ReplayMod is currently only available to a specific group of testers and those that can compile it themselves.
That's mostly just because it's the default option but the barrier to entry also has the nice side-effect of more or less filtering out low-quality bug reports, so I can focus on fixing what's broken instead of telling people for the 15th time that I've already fixed their bug two weeks ago and they should update.

commented

Okay that's fair enough. Good luck with the development and ironing out the bugs. I'm excited for the stable release.

commented

Update

  • The issue with the Invisible Entities and the compatibility with OptiFine has been fixed.
  • I can confirm that the strange text character at the end of a line only appears when compiled in Windows. So builds on Linux don't have the text character issue.
  • I wanted to try the latest 1.14.4 version from the 1.15 Branch to test the Worlddownloader for Fabric and the 1.14.4 Version crashes as soon as it loads to the world, even without worlddownloader.

Crashlog is:

Description: Unexpected error

org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:364)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:191)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:178)
at org.spongepowered.asm.mixin.transformer.FabricMixinTransformerProxy.transformClassBytes(FabricMixinTransformerProxy.java:23)
at net.fabricmc.loader.launch.knot.KnotClassDelegate.loadClassData(KnotClassDelegate.java:174)
at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:143)
at java.lang.ClassLoader.loadClass(ClassLoader.java:881)
at net.minecraft.class_761.method_3273(class_761.java:819)
at net.minecraft.class_757.method_3178(class_757.java:832)
at net.minecraft.class_757.method_3188(class_757.java:766)
at net.minecraft.class_757.method_3192(class_757.java:630)
at net.minecraft.class_310.method_1523(class_310.java:954)
at net.minecraft.class_310.method_1514(class_310.java:410)
at net.minecraft.client.main.Main.main(Main.java:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:192)
at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:138)
at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:26)
Caused by: org.spongepowered.asm.mixin.throwables.MixinApplyError: Mixin [mixins.render.blend.replaymod.json:ContainerLocalRenderInformationAccessor] from phase [DEFAULT] in config [mixins.render.blend.replaymod.json] FAILED during APPLY
at org.spongepowered.asm.mixin.transformer.MixinProcessor.handleMixinError(MixinProcessor.java:643)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.handleMixinApplyError(MixinProcessor.java:595)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:356)
... 20 more
Caused by: org.spongepowered.asm.mixin.gen.throwables.InvalidAccessorException: No candidates were found matching renderer:Lnet/minecraft/class_851; in net/minecraft/class_761$class_762 for mixins.render.blend.replaymod.json:ContainerLocalRenderInformationAccessor->@Accessor[FIELD_GETTER]::getRenderChunk()Lnet/minecraft/class_851; [INJECT Applicator Phase -> mixins.render.blend.replaymod.json:ContainerLocalRenderInformationAccessor -> Apply Accessors -> -> Locate -> mixins.render.blend.replaymod.json:ContainerLocalRenderInformationAccessor->@Accessor[FIELD_GETTER]::getRenderChunk()Lnet/minecraft/class_851;]
at org.spongepowered.asm.mixin.gen.AccessorInfo.findTarget(AccessorInfo.java:518)
at org.spongepowered.asm.mixin.gen.AccessorInfo.findTargetField(AccessorInfo.java:501)
at org.spongepowered.asm.mixin.gen.AccessorInfo.locate(AccessorInfo.java:475)
at org.spongepowered.asm.mixin.transformer.MixinTargetContext.generateAccessors(MixinTargetContext.java:1307)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyAccessors(MixinApplicatorStandard.java:1051)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:393)
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:320)
at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:345)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:570)
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:351)
... 20 more

A detailed walkthrough of the error, its code path and all known details is as follows:

-- Head --
Thread: Client thread
Stacktrace:
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:364)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:191)
at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:178)
at org.spongepowered.asm.mixin.transformer.FabricMixinTransformerProxy.transformClassBytes(FabricMixinTransformerProxy.java:23)
at net.fabricmc.loader.launch.knot.KnotClassDelegate.loadClassData(KnotClassDelegate.java:174)
at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:143)
at java.lang.ClassLoader.loadClass(ClassLoader.java:881)
at net.minecraft.class_761.method_3273(class_761.java:819)
at net.minecraft.class_757.method_3178(class_757.java:832)
at net.minecraft.class_757.method_3188(class_757.java:766)

commented

@Xanton19 I believe that's an issue in Mixin: SpongePowered/Mixin#390
You can work around the issue by replacing the single $ in

//$$ @Mixin(targets = "net.minecraft.client.render.WorldRenderer$ChunkInfo")
with a . (don't change the double dollars, they're removed by the preprocessor together with the comment when converting to 1.14). That should make it work in a live environment but will break in a dev environment.
The reason it's not an issue with the 1.15 version is because the entire blend export feature hasn't yet been updated to 1.15 (and given it was more of a fun experimental thing, it probably won't be in the near future).

commented

@beskhu3epnm

If you want to compile the mod yourself, here are the commands you need, assuming you have git and java JDK already installed.

I hope I don't confuse you with the Steps.

First, open the terminal and type the following into the command-line:

  1. git clone https://github.com/ReplayMod/ReplayMod.git
  2. cd ./ReplayMod
  3. git submodule update --init --recursive
  4. ./gradlew :1.15.2:shadowJar

Once you have successfully compiled the mod to a 1.15 Jar, you can locate it in your ReplayMod folder at versions/1.15.2/build/libs.

Lastly, copy the one jar file without the name ending -obf.jar and -dev.jar into your 1.15.2 mods folder.

If you have trouble compiling it, I might give you a newly compiled version of the mod with the latest commit, if @Johni0702 does not mind it.

commented

@Johni0702 Thank you very much for your helpful and fast reply.

Replacing the mentioned line indeed fixed the issue to load into the world.


Back in 1.12.2, I think, I have been "downloading" the world form the replay directly with Worlddownloader, as it was convenient to sort of "export" the world at that current state from the replay.

It is absolutely not an urgent Bugfix, because just a little or no amount of people use Worlddownloader to "download" the world from replays.

I just wanted to inform that Worlddownloader for Fabric in 1.14.4 crashes while attempting to download or exit the replay, with the error being:

Description: Unexpected error

java.lang.NullPointerException: Unexpected error
at com.replaymod.replay.handler.GuiHandler.injectIntoIngameMenu(GuiHandler.java:92)
at com.replaymod.replay.handler.GuiHandler$$Lambda$1634/0000000000000000.initScreen(Unknown Source)
at com.replaymod.lib.de.johni0702.minecraft.gui.versions.callbacks.InitScreenCallback.lambda$null$0(InitScreenCallback.java:14)
at com.replaymod.lib.de.johni0702.minecraft.gui.versions.callbacks.InitScreenCallback$$Lambda$1493/0000000000000000.initScreen(Unknown Source)
at net.minecraft.class_437.handler$zdg000$init(class_437.java:541)
at net.minecraft.class_437.init(class_437.java:331)
at net.minecraft.class_310.method_1507(class_310.java:830)
at net.minecraft.class_310.method_20539(class_310.java:1230)
at net.minecraft.class_309.method_1466(class_309.java:450)
at net.minecraft.class_309$$Lambda$1729/0000000000000000.invoke(Unknown Source)
at org.lwjgl.glfw.GLFWKeyCallbackI.callback(GLFWKeyCallbackI.java:37)
at org.lwjgl.system.JNI.invokeV(Native Method)
at org.lwjgl.glfw.GLFW.glfwPollEvents(GLFW.java:3101)
at net.minecraft.class_1041.method_16001(class_1041.java:408)
at net.minecraft.class_1041.method_15998(class_1041.java:279)
at net.minecraft.class_310.method_15994(class_310.java:1023)
at net.minecraft.class_310.method_1523(class_310.java:976)
at net.minecraft.class_310.method_1514(class_310.java:410)
at net.minecraft.client.main.Main.main(Main.java:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:192)
at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:138)
at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:26)

commented

Thank you so much @Xanton19 for your clear and easy to understand instructions. I compiled the beta mod from source and placed the JAR in the mods folder. Installing the 1.15.2 Fabric installer and API, the game booted fine and the Replay mod is installed! I'm now going to try it out. I appreciate your help because I wouldn't have been able to figure it out myself otherwise.

commented

Above commit should fix that crash with WDL on 1.14+.
I haven't actually tested it myself because it was already fairly obvious what caused it just from the error (so I didn't bother setting up WDL).

commented

I moved the remaining issue in this thread to #132 so I can close it. For future issues (or if any of the previous ones aren't actually resolved), please open a new issues. And please keep each of them to one bug only, otherwise it gets difficult to track.