avanatiker / worldtools Goto Github PK
View Code? Open in Web Editor NEWA powerful Minecraft Mod that captures high-detail snapshots of server worlds locally.
License: GNU General Public License v3.0
A powerful Minecraft Mod that captures high-detail snapshots of server worlds locally.
License: GNU General Public License v3.0
我将这个模组翻译为了中文(Chat GPT 4o翻译+人工校对),文件如下,希望能将此文件放入此MOD中。
I translated this module into Chinese (Chat GPT 4o translation+manual proofreading). The file is as follows. I hope this file can be put into this MOD.
文件见'zh_cn.json'(语言:中文(简体) 版本适配:WorldTools-fabric-1.2.4+1.20.1)
See' zh_cn.json' for the file (language: Chinese (simplified) version adaptation: WorldTools-fabric-1.2.4+1.20.1).
zh_cn.json
Pokechu22/WorldDownloader only supports up to 1.16.5
But this only 1.20.1
Please,I believe many people still need a mod for version 1.18.2 just like me :(
Could you make a version of this mod for 1.20.6?
Having issues with saving containers on a Mac. I have future, rusher and meteor and when I added world tools I got a lot of crashing. removing future seemed to have fixed things. after removing future on 1.20.1 it would save the world, but not containers. Updated everything to 1.20.4 and have better luck with saving containers, but not consistent. It registers every container, but not every container's contents was saved in the wdl. Is there a speed issue with saving containers?
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.
Pretty simple, opening a lectern doesn't save the book contents within it.
This mod is very good! If you add the features mentioned below, it would be even more perfect!
PCA sync protocol can synchronize container data without the player opening the container; And this protocol needs to be installed and enabled on the server, otherwise players will not be able to synchronize container data. Therefore, using the PCA sync protocol to synchronize container data can simplify the process of capturing maps on servers with this protocol, while other servers without this protocol are not affected.
Here is the relevant link for PCA sync protocol: https://github.com/Fallen-Breath/pca-protocol
Please implement a way to force deactivate the mod on serverjoin when the server sends a certain colourcode combination to the client like with the voxelmap.
Can you implement 1.20.4 support?
Can the tool support 1.19.2?
1: I noticed last night that pressing F12 blurs the background, and acts as if I am in a menu, but no buttons or anything else are rendered. I do not know what is causing this, but my best guess is that it may be a conflict with https://modrinth.com/mod/modern-ui
2: I also noticed that the mod will write world data to a save periodically, and leaving a server does not clear this, and since the mod seems to start automatically upon joining a server, and will automatically continue immediately after writing world data to a save, it seems that, after the first server you join, there will always be at least a bit of world data carried over from the last server to the next, which can cause missing or mixed chunks, and having 2 different world saves for the same server, as the first time it writes the world data, it counts it as using the address of the previous server, but not the second write, so you'll have one save of mixed chunks, then another that contains any chunks except the chunks that you saved first, so it will usually be missing the spawn chunks
I currently am not at my PC so I can't test for mod conflicts and such, but will do so later.
Also, thanks for making this mod, I quite believed that a World Downloader mod for modern versions was impossible (excluding the minecraft world downloader that runs as an external app but that's not nearly as useful as a client-sided mod, and significantly more buggy), I haven't tested this out yet, and I'd assume it probably does, but does this work with mods such as ViaFabricPlus? As that would allow downloading worlds from older servers without needing to develop the WorldTools mod for any version of the game besides the newest version.
Firstly thank you so much for a brand new world download tool! I'm amazed by its maturity and extensive features.
The ability to save from ReplayMod replays is especially useful since it allows recovering world fragments from old replay files.
However I'm encountering an issue while attempting to save from an 1.19.2 replay. The replay was recorded on an 1.19.2 multiworld server which had a typical main world & resource world arrangement. The player was in the survival world at the start of the replay, but teleported to the resource world sometimes later.
If I attempt to save from this replay file and let the replay run from start to end (to include the world teleportation), chunks in the main world where the player was before the teleportation would be overwritten by Void. It looks like this:
Note the large section of chunks has been replaced by the Void, and a strange stone platform in the Void.
The area should look like this:
This only happens when saving from old version replays. Multiworld saves as expected when saving from 1.20.2 replays or an actual 1.20.2 multiworld server.
This issue is first observed with an actual old replay from several years back. I successfully reproduced this with a self hosted paper 1.19.2 server with multiverse.
Test environment:
Steps to reproduce:
Load the replay: test.mcpr.zip
Start downloading immediately (Since the replay is very short it's preferable to enable "Automatic start download on join")
Wait until the replay finishes
Stop and save the download
Load the saved world in single player
Expected behavior:
Player spawns in the main surviving world
Actual behavior:
Player immediately starts falling into the void.
Logs: test.log
as title
When attempting to use the mod to extract world data from ReplayMod recordings during playback, the mod does properly extract the entity and chunk data, but fails to properly save it due to an UninitializedPropertyAccessException related to server info.
[03:26:43] [DefaultDispatcher-worker-2/ERROR]: Uncaught exception in thread "DefaultDispatcher-worker-2"
kotlin.UninitializedPropertyAccessException: lateinit property serverInfo has not been initialized
at org.waste.of.time.WorldTools.getServerInfo(WorldTools.java:60) ~[WorldTools-fabric-1.0.0.jar:?]
at org.waste.of.time.WorldTools$dispatchSessionThread$1.invokeSuspend(WorldTools.java:85) ~[WorldTools-fabric-1.0.0.jar:?]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[org_jetbrains_kotlin_kotlin-stdlib-1.9.10-322b6d1b226d3ad5.jar:?]
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) ~[org_jetbrains_kotlinx_kotlinx-coe-jvm-1.7.3-cb5d5a55314c70b3.jar:?]
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115) ~[org_jetbrains_kotlinx_kotlinx-coe-jvm-1.7.3-cb5d5a55314c70b3.jar:?]
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103) ~[org_jetbrains_kotlinx_kotlinx-coe-jvm-1.7.3-cb5d5a55314c70b3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) ~[org_jetbrains_kotlinx_kotlinx-coe-jvm-1.7.3-cb5d5a55314c70b3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) ~[org_jetbrains_kotlinx_kotlinx-coe-jvm-1.7.3-cb5d5a55314c70b3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) ~[org_jetbrains_kotlinx_kotlinx-coe-jvm-1.7.3-cb5d5a55314c70b3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) ~[org_jetbrains_kotlinx_kotlinx-coe-jvm-1.7.3-cb5d5a55314c70b3.jar:?]
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException
While this would technically be considered a mod conflict, you should consider looking into fixing it nonetheless because it would make it possible to retroactively recover world data from ReplayMod recordings.
is there a reason why saving chunks at first is really fast, and then slows down? I assume most of the chunks are done by then but when I save it and join the world its just a checkerboard pattern of chunks
Hey! I am looking for a way to WDL a mapart outpost on a server! When using this tool I only have blank maps even though their names are accurately downloaded.
I tried on 2b2t an another random creative server and ended up with the same results.
Thanks for looking into this, have a good one!
Hey im wondering when/if there will be a 1.20.2 support. would really appreciate it.
1.2.0 and 1.1.0 are labeled as compatible for 1.20.1 but aren't due to Quilt Koltin maxing out at 1.10.10 and world tools needing newer. You should remove the quilt label for 1.20.1
Hi
Griefergames.net Server uses this addon to add more Blocks and many more features.
The Problem that i have is:
When i use my regular mods also with MysteryMod-1.20.1-1.0.1.jar and your old Version 1.0.0 the Worlddownloader runs, but it has no GUI etc. but i can download Maps.
If i use the new 1.1.1 Version the client crashes with the MystMod addon.
I try to find out what's exactly happen but im not a java developer ^^
Here is my crash report and the log:
crash-2024-01-13_08.55.28-client.txt
2024-01-13-3.log
Maybe you will find out something
Best regards
Fizzy Bubbele
Items in chests and commands in command blocks do not save using WorldTools Fabric 1.1.1.
MC Version:
Mods:
As a Minecraft player using the World Tools mod,
I want to be able to name my world downloads with more than 16 characters,
So that I can use more descriptive and meaningful names for my worlds, making them easier to identify and organize.
Acceptance Criteria:
It would be great if the mod were to support using ViaFabricPlus to recognize when a user has joined a server older than the current game version, and have an option to save worlds from older servers in either the world format of the version the server is running, the version of the user (so ATM 1.20.x since that's the only version supported by this mod), or make 2 saves, one in each version. This would mean that, from the latest version of minecraft, WorldTools could be used to download worlds from any version of minecraft, including snapshot, pre-releases, April fools updates, etc. and save those worlds in a way that would allow them to be played in those older clients, rather than always being saved in 1.20.x (or above) format. This would also mean that this mod could be developed only for the latest version whilst working as a WDL mod for any multiplayer-compatible version of minecraft, including bedrock. (However conversion to bedrock shouldn't be a feature, as minecraft has a whole online tool for that, so instead, if a user joins and downloads a world from a bedrock server using ViaVersion and have the world format conversion feature enabled, it should notify them that they can use https://chunker.app/ to convert java worlds to bedrock if they so wish. This would also most likely require adding special support for much older versions, the experimental combat snapshots, and april fools updates especially, as they sometime have significant changes to the world and minecraft. So this is probably a more long-term goal as the mod is still in very early development.
Add a modmenu config, and populate the F12 options screen with a few basic options, most of which will also be available through modmenu:
1: Automatic World Downloading (Disabled by default) - decides whether or not the mod automatically starts downloading worlds upon join
2: Download Distance (locked to client's chunkloading distance by default) - decides the chunk radius around the player in which world data is downloaded, has 3 options: Custom, Client View Distance, and Server View Distance.
3: add buttons at the bottom of the screen to start World Downloading, Stop World Downloading, Clear Cache, and save data to disk. as well as freezing and unfreezing entities, and enabling/disabling chunk loading for a save, and resetting chunk data back to what the original save contained (world tools could save a small file in world saves containing a list of the chunks that were contained in the download, so if, for example, the world seed a user found through a seed-finding mod turns out to be incorrect, they can reset the chunk data and re-enter the seed.
4: Allow enabling or disabling saving of: Chunk data, storage data, sign/other block entity data, entity data, achievements, player data, player inventory data, ender chest data, villager trading/profession data, allay holding data, jukebox disc data, and various other options.
5: Allow manually setting the world seed
Hi When I try to download worlds it doesn't save the metadata including the seed and all new chunks generate empty, is there any possible fix for this? I want to be able to download the world but also have it keep generating, rather than being completely empty.
I'm getting an error on 1.20.2:
Error: java.lang.NoClassDefFoundError: Could not initialize class org.waste.of.time.storage.StorageManager
Seems like the error happens when chests are attempted to be stored.
Stack trace:
java.lang.NoClassDefFoundError: Could not initialize class org.waste.of.time.storage.StorageManager
at org.waste.of.time.WorldTools.checkCache(WorldTools.java:98)
at org.waste.of.time.event.Events.onChunkLoad(Events.java:25)
at net.minecraft.class_631.handler$zle001$worldtools$onChunkLoad(class_631.java:1020)
at net.minecraft.class_631.method_16020(class_631.java:123)
at net.minecraft.class_634.method_38539(class_634.java:732)
at net.minecraft.class_634.method_11128(class_634.java:697)
at net.minecraft.class_2672.method_11528(class_2672.java:45)
at net.minecraft.class_2672.method_11054(class_2672.java:12)
at net.minecraft.class_2600.method_11072(class_2600.java:23)
at net.minecraft.class_1255.method_18859(class_1255.java:156)
at net.minecraft.class_4093.method_18859(class_4093.java:23)
at net.minecraft.class_1255.method_16075(class_1255.java:130)
at net.minecraft.class_1255.method_5383(class_1255.java:115)
at net.minecraft.class_310.method_1523(class_310.java:1231)
at net.minecraft.class_310.method_1514(class_310.java:856)
at net.minecraft.client.main.Main.main(Main.java:253)
at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:468)
at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoClassDefFoundError: net/minecraft/class_167$class_168 [in thread "DefaultDispatcher-worker-1"]
at org.waste.of.time.storage.StorageManager.<clinit>(StorageManager.java:57)
at org.waste.of.time.event.Events$onClientJoin$$inlined$tryWithSession$1.invoke(Events.java:127)
at org.waste.of.time.event.Events$onClientJoin$$inlined$tryWithSession$1.invoke(Events.java:69)
at org.waste.of.time.WorldTools$dispatchSessionThread$1.invokeSuspend(WorldTools.java:82)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
i neeeeed that
Steps to reproduce:
Untill modrinth makes ther launcher accept fabric mods for auttoupdateing on quilt if they dont advetise quilt support this will be very usefull
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.