Pokechu22 / WorldDownloader

Makes a copy of parts of a multiplayer world for singleplayer use (EG, for backups or renders)
https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/minecraft-mods/2520465-world-downloader-mod-create-backups-of-your-builds
Other
572 stars 135 forks source link

Game crashes when opening a ReplayMod replay with WorldDownloader #245

Open Zenthaa opened 2 years ago

Zenthaa commented 2 years ago

The game launches fine, and you can play on multiplayer, record using ReplayMod and download the server world without issues. However if you try view a ReplayMod replay while WorldDownloader is active, the game crashes (therefore you can't download replaymod worlds).

Crash report: ``` ---- Minecraft Crash Report ---- // Surprise! Haha. Well, this is awkward. Time: 2/19/22 1:41 PM Description: Calling Gui method java.lang.NullPointerException: Calling Gui method at net.minecraft.client.network.NetHandlerPlayClient.handler$init$zzd000(NetHandlerPlayClient.java:2268) at net.minecraft.client.network.NetHandlerPlayClient.(NetHandlerPlayClient.java:287) at com.replaymod.replay.ReplayHandler.setup(ReplayHandler.java:143) at com.replaymod.replay.ReplayHandler.(ReplayHandler.java:86) at com.replaymod.replay.ReplayModReplay.startReplay(ReplayModReplay.java:194) at com.replaymod.replay.ReplayModReplay.startReplay(ReplayModReplay.java:180) at com.replaymod.replay.ReplayModReplay.startReplay(ReplayModReplay.java:176) at com.replaymod.replay.gui.screen.GuiReplayViewer$3.run(GuiReplayViewer.java:113) at de.johni0702.minecraft.gui.element.AbstractGuiClickable.onClick(AbstractGuiClickable.java:71) at de.johni0702.minecraft.gui.element.AbstractGuiButton.onClick(AbstractGuiButton.java:98) at de.johni0702.minecraft.gui.element.AbstractGuiClickable.mouseClick(AbstractGuiClickable.java:53) at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at de.johni0702.minecraft.gui.element.AbstractComposedGuiElement$3.invoke(AbstractComposedGuiElement.java:151) at com.sun.proxy.$Proxy32.mouseClick(Unknown Source) at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at de.johni0702.minecraft.gui.element.AbstractComposedGuiElement$3.invoke(AbstractComposedGuiElement.java:148) at com.sun.proxy.$Proxy32.mouseClick(Unknown Source) at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at de.johni0702.minecraft.gui.element.AbstractComposedGuiElement$3.invoke(AbstractComposedGuiElement.java:148) at com.sun.proxy.$Proxy32.mouseClick(Unknown Source) 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:497) at de.johni0702.minecraft.gui.element.AbstractComposedGuiElement$2.invoke(AbstractComposedGuiElement.java:81) at com.sun.proxy.$Proxy32.mouseClick(Unknown Source) at de.johni0702.minecraft.gui.container.AbstractGuiScreen$MinecraftGuiScreen.func_73864_a(AbstractGuiScreen.java:181) at net.minecraft.client.gui.GuiScreen.func_146274_d(GuiScreen.java:533) at de.johni0702.minecraft.gui.container.AbstractGuiScreen$MinecraftGuiScreen.func_146274_d(AbstractGuiScreen.java:201) at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:501) at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1759) at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1098) at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398) at net.minecraft.client.main.Main.main(SourceFile:123) 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:497) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Client thread Stacktrace: at net.minecraft.client.network.NetHandlerPlayClient.handler$init$zzd000(NetHandlerPlayClient.java:2268) at net.minecraft.client.network.NetHandlerPlayClient.(NetHandlerPlayClient.java:287) at com.replaymod.replay.ReplayHandler.setup(ReplayHandler.java:143) at com.replaymod.replay.ReplayHandler.(ReplayHandler.java:86) -- World Downloader Mod - Core -- Details: WDL version: 4.0.4.0 Minecraft version: Minecraft 1.12.2 (1.12.2/fml,forge,LiteLoader/Forge) Expected version: 1.12.2 Protocol version: 340 Data version: 1343 File location: ~~ERROR~~ IllegalArgumentException: URI is not hierarchical Stacktrace: at java.lang.Thread.getStackTrace(Thread.java:1552) at net.minecraft.crash.CrashReportCategory.func_85073_a(CrashReportCategory.java:116) at net.minecraft.crash.CrashReport.func_85057_a(CrashReport.java:292) at wdl.WDL.addInfoToCrash(WDL.java:1580) at wdl.WDLHooks.onCrashReportPopulateEnvironment0(WDLHooks.java:483) at wdl.WDLHooks.onCrashReportPopulateEnvironment(WDLHooks.java:480) at net.minecraft.crash.CrashReport.handler$onCrashReportPopulateEnvironment$zze000(CrashReport.java:532) at net.minecraft.crash.CrashReport.func_71504_g(CrashReport.java:120) at net.minecraft.crash.CrashReport.(CrashReport.java:40) at net.minecraft.crash.CrashReport.func_85055_a(CrashReport.java:359) at de.johni0702.minecraft.gui.element.AbstractComposedGuiElement$3.invoke(AbstractComposedGuiElement.java:166) at com.sun.proxy.$Proxy32.mouseClick(Unknown Source) at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at de.johni0702.minecraft.gui.element.AbstractComposedGuiElement$3.invoke(AbstractComposedGuiElement.java:148) at com.sun.proxy.$Proxy32.mouseClick(Unknown Source) at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at de.johni0702.minecraft.gui.element.AbstractComposedGuiElement$3.invoke(AbstractComposedGuiElement.java:148) at com.sun.proxy.$Proxy32.mouseClick(Unknown Source) 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:497) at de.johni0702.minecraft.gui.element.AbstractComposedGuiElement$2.invoke(AbstractComposedGuiElement.java:81) at com.sun.proxy.$Proxy32.mouseClick(Unknown Source) at de.johni0702.minecraft.gui.container.AbstractGuiScreen$MinecraftGuiScreen.func_73864_a(AbstractGuiScreen.java:181) at net.minecraft.client.gui.GuiScreen.func_146274_d(GuiScreen.java:533) at de.johni0702.minecraft.gui.container.AbstractGuiScreen$MinecraftGuiScreen.func_146274_d(AbstractGuiScreen.java:201) at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:501) at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1759) at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1098) at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398) at net.minecraft.client.main.Main.main(SourceFile:123) 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:497) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) -- World Downloader Mod - Extensions -- Details: Number loaded: 2 Hologram: Id: Hologram Version: 2.0 Display name: Hologram support Main author: Pokechu22 Description: Provides basic support for disabling holograms. Main class: wdl.HologramHandler Containing file: Unknown (java.lang.IllegalArgumentException: URI is not hierarchical) Implemented interfaces (2) 0: wdl.api.IEntityManager 1: wdl.api.IWDLModDescripted Superclass: java.lang.Object Classloader: net.minecraft.launchwrapper.LaunchClassLoader@5fdef03a (net.minecraft.launchwrapper.LaunchClassLoader) Annotations (0) EntityRealigner: Id: EntityRealigner Version: 1.0 Display name: Entity realigner Main author: Pokechu22 Description: Realigns entities to their serverside position to deal with entities that drift clientside (for example, boats). Main class: wdl.EntityRealigner Containing file: Unknown (java.lang.IllegalArgumentException: URI is not hierarchical) Implemented interfaces (2) 0: wdl.api.IEntityEditor 1: wdl.api.IWDLModDescripted Superclass: java.lang.Object Classloader: net.minecraft.launchwrapper.LaunchClassLoader@5fdef03a (net.minecraft.launchwrapper.LaunchClassLoader) Annotations (0) -- World Downloader Mod - State -- Details: minecraft: net.minecraft.client.Minecraft@23d07ad3 worldClient: ~~NULL~~ networkManager: ~~NULL~~ thePlayer: ~~NULL~~ windowContainer: ~~NULL~~ lastClickedBlock: ~~NULL~~ lastEntity: ~~NULL~~ saveHandler: ~~NULL~~ chunkLoader: ~~NULL~~ newTileEntities: {} newEntities: {} newMapDatas: {} downloading: false isMultiworld: false propsFound: false startOnChange: false overrideLastModifiedCheck: false saving: false worldLoadingDeferred: false worldName: ~~NULL~~ baseFolderName: ~~NULL~~ baseProps: wdl.config.Configuration@164db8f0 worldProps: wdl.config.Configuration@164db8f0 globalProps: wdl.config.Configuration@8a7cd7c defaultProps: wdl.config.DefaultConfiguration@21f0cc97 gameRules: net.minecraft.world.GameRules@1f6d3a81 -- World Downloader Mod - Base properties -- Details: -: empty -- World Downloader Mod - World properties -- Details: -: empty -- World Downloader Mod - Global properties -- Details: TutorialShown: true UpdateETag: W/"8e54330af12571ea153877feea31b94468ff888c30268b2adcf79370e6437df6" -- Sanity checks -- Details: TRIPWIRE: Passed VERSION: Passed TRANSLATION: Passed MIXIN_INVENTORYBASIC: Passed MIXIN_GUIINGAMEMENU: Passed MIXIN_WORLDCLIENT: Passed MIXIN_NHPC: Passed MIXIN_CRASHREPORT: Passed ENCODING: Passed -- Gui -- Details: Method: public abstract boolean de.johni0702.minecraft.gui.function.Clickable.mouseClick(org.lwjgl.util.ReadablePoint,int) ComposedElement: de.johni0702.minecraft.gui.element.GuiButton@13775818 Element: de.johni0702.minecraft.gui.element.GuiButton@13775818 -- Gui -- Details: Method: public abstract boolean de.johni0702.minecraft.gui.function.Clickable.mouseClick(org.lwjgl.util.ReadablePoint,int) ComposedElement: de.johni0702.minecraft.gui.container.GuiPanel@67e55073 Element: de.johni0702.minecraft.gui.container.GuiPanel@67e55073 -- Gui -- Details: Method: public abstract boolean de.johni0702.minecraft.gui.function.Clickable.mouseClick(org.lwjgl.util.ReadablePoint,int) ComposedElement: de.johni0702.minecraft.gui.container.GuiPanel@26fee400 Element: de.johni0702.minecraft.gui.container.GuiPanel@26fee400 -- Gui -- Details: Method: public abstract boolean de.johni0702.minecraft.gui.function.Clickable.mouseClick(org.lwjgl.util.ReadablePoint,int) ComposedElement: com.replaymod.replay.gui.screen.GuiReplayViewer@331df3e Element: com.replaymod.replay.gui.screen.GuiReplayViewer@331df3e -- Affected screen -- Details: Screen name: de.johni0702.minecraft.gui.container.AbstractGuiScreen.MinecraftGuiScreen -- System Details -- Details: Minecraft Version: 1.12.2 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_51, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 465809600 bytes (444 MB) / 973078528 bytes (928 MB) up to 2147483648 bytes (2048 MB) JVM Flags: 8 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0 FML: MCP 9.42 Powered by Forge 14.23.5.2859 13 mods loaded, 13 mods active States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored | State | ID | Version | Source | Signature | |:------ |:----------------------- |:--------------- |:----------------------------- |:---------------------------------------- | | LCHIJA | minecraft | 1.12.2 | minecraft.jar | None | | LCHIJA | mcp | 9.42 | minecraft.jar | None | | LCHIJA | FML | 8.0.99.99 | forge-1.12.2-14.23.5.2859.jar | e3c3d50c7c986df74c645c0ac54639741c90a557 | | LCHIJA | forge | 14.23.5.2859 | forge-1.12.2-14.23.5.2859.jar | e3c3d50c7c986df74c645c0ac54639741c90a557 | | LCHIJA | replaymod-compat | 1.12.2-2.0.1-b1 | replaymod-1.12.2-2.0.1-b1.jar | None | | LCHIJA | replaymod-replay | 1.12.2-2.0.1-b1 | replaymod-1.12.2-2.0.1-b1.jar | None | | LCHIJA | replaymod | 1.12.2-2.0.1-b1 | replaymod-1.12.2-2.0.1-b1.jar | None | | LCHIJA | replaymod-render | 1.12.2-2.0.1-b1 | replaymod-1.12.2-2.0.1-b1.jar | None | | LCHIJA | replaymod-editor | 1.12.2-2.0.1-b1 | replaymod-1.12.2-2.0.1-b1.jar | None | | LCHIJA | replaymod-extras | 1.12.2-2.0.1-b1 | replaymod-1.12.2-2.0.1-b1.jar | None | | LCHIJA | replaymod-online | 1.12.2-2.0.1-b1 | replaymod-1.12.2-2.0.1-b1.jar | None | | LCHIJA | replaymod-recording | 1.12.2-2.0.1-b1 | replaymod-1.12.2-2.0.1-b1.jar | None | | LCHIJA | replaymod-simplepathing | 1.12.2-2.0.1-b1 | replaymod-1.12.2-2.0.1-b1.jar | None | Loaded coremods (and transformers): LoadingPlugin (replaymod-1.12.2-2.0.1-b1.jar) GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 456.71' Renderer: 'GeForce GTX 950/PCIe/SSE2' Launched Version: 1.12.2 LWJGL: 2.9.4 OpenGL: GeForce GTX 950/PCIe/SSE2 GL version 4.6.0 NVIDIA 456.71, NVIDIA Corporation GL Caps: Using GL 1.3 multitexturing. Using GL 1.3 texture combiners. Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported. Shaders are available because OpenGL 2.1 is supported. VBOs are available because OpenGL 1.5 is supported. Using VBOs: Yes Is Modded: Definitely; Client brand changed to 'fml,forge,LiteLoader' Type: Client (map_client.txt) Resource Packs: �l�b Zentha �6[16x] Current Language: English (US) Profiler Position: N/A (disabled) CPU: 4x Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz ```
Pokechu22 commented 2 years ago

This is something that theoretically should work (and I think worked in the past, but was also broken at other times in the past), but I've never tested myself. I don't know when I'll have time to look into it, but it is something that should be fixable (though I can't tell exactly what the cause is from that crash report).

Zenthaa commented 2 years ago

Do you know any historical versions which work with ReplayMod? Apparently in v4.0.4.0 you fixed compatibility with ReplayMod, but im not sure which version of ReplayMod you were talking about. The latest version just crashes on startup, and the one I used (the very first 1.12.2 release) has this issue, but maybe something in between them works? I can test each version out if you'd like.

Pokechu22 commented 2 years ago

I unfortunately don't know/remember. But it'd probably have been one that was released at around the same time.

Zenthaa commented 2 years ago

Okay, I'll look for a version which would be the most recent at that time.

Zenthaa commented 2 years ago

I found a working version :)

For anyone who needs it, Replay Mod v1.12.2-2.2.0-b7 and World Downloader v4.0.4.0 are compatible (although the disconnect button on servers is like hidden behind the pause recording and stop recording buttons, but is still accessible if you click in the small gap between the 2 of them)

Pokechu22 commented 2 years ago

I'd appreciate it if you could try and figure out the first version of WDL that stopped working with Replay Mod v1.12.2-2.2.0-b7 (assuming that the current version doesn't work - check that first), and the first version of replaymod that stopped working with WDL, though if you don't have time to do that it's fine. The binary search algorithm (AKA bisecting; you just pick a version halfway between the ones that work and the ones that don't and use whether it works to narrow in on the version where it change) makes doing something like that fairly easy.

Zenthaa commented 2 years ago

I can do that tomorrow, or maybe later today if I get the chance. It should only take about 15 minutes I think since theres ~2^5 versions, and I can test each one in 2-3 minutes. I'll let you know when I find out which version causes it

Zenthaa commented 2 years ago

The latest version of WDL is compatible with Replay Mod v1.12.2-2.2.0-b7. But the latest version of WDL causes Replay Mod to disable itself in the following 2 versions (Replay Mod v1.12.2-2.3.0-b1 and Replay Mod v1.12.2-2.3.0) before it completely fails to launch in Replay Mod v1.12.2-2.3.1

Pokechu22 commented 2 years ago

Thanks. Looking at differences between those versions, I'm guessing this has to do with an update to the Mixin library used by replaymod conflicting with the version liteloader users. ReplayMod has instructions on how to work around that on their website, though I think that will result in using 1.12.2-2.4.5 (possibly the snippet can be edited to use a newer version).

Zenthaa commented 2 years ago

Sounds good :) Let me know if you need me to test anything else

carlos837 commented 2 years ago

hi @Zenthaa, could you help me please.

265