WorldTools: World Downloader (Fabric / Forge)

WorldTools: World Downloader (Fabric / Forge)

4.1k Downloads

Still unable to save worlds during ReplayMod playback

VideoGameSmash12 opened this issue ยท 3 comments

commented

I previously reported an issue (#4) where the mod was able to capture data from recordings generated by the ReplayMod, but wasn't able to save it properly as server information wasn't declared so it would fail trying to write the chunk data to disk. The issue was closed yesterday.

I decided to test to see if the mod works with the ReplayMod, and the issue is worse now - I can't start capturing the data from recordings as it throws an IllegalStateException whenever I attempt to run the /worldtools capture command (which is then caught by Minecraft's command error handling system). If I attempt to access the WorldTools menu from the pause screen, the client crashes.

---- Minecraft Crash Report ----
// Hey, that tickles! Hehehe!

Time: 2023-12-22 09:39:00
Description: mouseClicked event handler

java.lang.IllegalStateException: Server info should not be null
	at org.waste.of.time.CaptureManager.getServerInfo(CaptureManager.java:17)
	at org.waste.of.time.CaptureManager.getLevelName(CaptureManager.java:23)
	at org.waste.of.time.gui.ManagerScreen.method_25426(ManagerScreen.java:21)
	at net.minecraft.class_437.method_25423(class_437.java:297)
	at net.minecraft.class_310.method_1507(class_310.java:1080)
	at org.waste.of.time.event.Events.onGameMenuScreenInitWidgets$lambda$4(Events.java:141)
	at net.minecraft.class_4185.method_25306(class_4185.java:94)
	at net.minecraft.class_4264.method_25348(class_4264.java:56)
	at net.minecraft.class_339.method_25402(class_339.java:189)
	at net.minecraft.class_4069.method_25402(class_4069.java:38)
	at net.minecraft.class_312.method_1611(class_312.java:98)
	at net.minecraft.class_437.method_25412(class_437.java:409)
	at net.minecraft.class_312.method_1601(class_312.java:98)
	at net.minecraft.class_312.method_22686(class_312.java:169)
	at net.minecraft.class_1255.execute(class_1255.java:102)
	at net.minecraft.class_312.redirect$efp001$viafabricplus$redirectSync(class_312.java:4038)
	at net.minecraft.class_312.method_22684(class_312.java:169)
	at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:43)
	at org.lwjgl.system.JNI.invokeV(Native Method)
	at org.lwjgl.glfw.GLFW.glfwWaitEventsTimeout(GLFW.java:3474)
	at com.mojang.blaze3d.systems.RenderSystem.limitDisplayFPS(RenderSystem.java:237)
	at net.minecraft.class_310.method_1523(class_310.java:1244)
	at net.minecraft.class_310.method_1514(class_310.java:802)
	at net.minecraft.client.main.Main.main(Main.java:250)
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470)
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
	at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:87)
	at org.prismlauncher.EntryPoint.listen(EntryPoint.java:130)
	at org.prismlauncher.EntryPoint.main(EntryPoint.java:70)


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

-- Head --
Thread: Render thread
Stacktrace:
	at org.waste.of.time.CaptureManager.getServerInfo(CaptureManager.java:17)
	at org.waste.of.time.CaptureManager.getLevelName(CaptureManager.java:23)
	at org.waste.of.time.gui.ManagerScreen.method_25426(ManagerScreen.java:21)
	at net.minecraft.class_437.method_25423(class_437.java:297)
	at net.minecraft.class_310.method_1507(class_310.java:1080)
	at org.waste.of.time.event.Events.onGameMenuScreenInitWidgets$lambda$4(Events.java:141)
	at net.minecraft.class_4185.method_25306(class_4185.java:94)
	at net.minecraft.class_4264.method_25348(class_4264.java:56)
	at net.minecraft.class_339.method_25402(class_339.java:189)
	at net.minecraft.class_4069.method_25402(class_4069.java:38)
	at net.minecraft.class_312.method_1611(class_312.java:98)
	at net.minecraft.class_437.method_25412(class_437.java:409)
	at net.minecraft.class_312.method_1601(class_312.java:98)
	at net.minecraft.class_312.method_22686(class_312.java:169)
	at net.minecraft.class_1255.execute(class_1255.java:102)
	at net.minecraft.class_312.redirect$efp001$viafabricplus$redirectSync(class_312.java:4038)
	at net.minecraft.class_312.method_22684(class_312.java:169)
	at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:43)
	at org.lwjgl.system.JNI.invokeV(Native Method)
	at org.lwjgl.glfw.GLFW.glfwWaitEventsTimeout(GLFW.java:3474)

-- Affected screen --
Details:
	Screen name: net.minecraft.class_433
Stacktrace:
	at net.minecraft.class_437.method_25412(class_437.java:409)
	at net.minecraft.class_312.method_1601(class_312.java:98)
	at net.minecraft.class_312.method_22686(class_312.java:169)
	at net.minecraft.class_1255.execute(class_1255.java:102)
	at net.minecraft.class_312.redirect$efp001$viafabricplus$redirectSync(class_312.java:4038)
	at net.minecraft.class_312.method_22684(class_312.java:169)
	at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:43)
	at org.lwjgl.system.JNI.invokeV(Native Method)
	at org.lwjgl.glfw.GLFW.glfwWaitEventsTimeout(GLFW.java:3474)
	at com.mojang.blaze3d.systems.RenderSystem.limitDisplayFPS(RenderSystem.java:237)
	at net.minecraft.class_310.method_1523(class_310.java:1244)
	at net.minecraft.class_310.method_1514(class_310.java:802)
	at net.minecraft.client.main.Main.main(Main.java:250)
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470)
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
	at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:87)
	at org.prismlauncher.EntryPoint.listen(EntryPoint.java:130)
	at org.prismlauncher.EntryPoint.main(EntryPoint.java:70)

However, I have discovered a workaround. If you join the server and start a capture there, you can then leave the server while the capture is ongoing and and begin playing back the ReplayMod recording, and it'll start saving worlds from there instead. It's not perfect, but it works pretty well.

commented

Ok thank you for trying again. Ill try to find a safer way to provide the world info not relying hard on server info. i have to try it myself though never used ReplayMod. What do you think about the latest nightly? any other issues or ideas?

commented

It works well, and as far as other ideas or issues there's not really much I can come up with. I want to use it for recovering chunks from ReplayMod recordings because both mods when used in tandem make it possible to recover entire sections of worlds from hours worth of recordings within seconds.

commented

I think this is resolved in 1.2.0: https://github.com/Avanatiker/WorldTools/releases/tag/1.2.0%2B1.20.1

I tested briefly with ReplayMod and was able to capture while playing back a replay