Giter VIP home page Giter VIP logo

worldtools's People

Contributors

avanatiker avatar calvineries avatar ironexception avatar p529 avatar rfresh2 avatar yomo2b2t avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

worldtools's Issues

Data in chests and command blocks do not save.

Items in chests and commands in command blocks do not save using WorldTools Fabric 1.1.1.

MC Version:

  • fabric-loader-0.15.3-1.20.1

Mods:

  • cloth-config-11.1.118-fabric
  • fabric-api-0.91.0+1.20.1
  • fabric-language-kotlin-1.10.17+kotlin.1.9.22
  • modmenu-7.2.2
  • WorldTools-fabric-1.1.1

ViaFabricPlus Support (Support for older servers and world formats)

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.

Expand world name character limit to more than 16 characters

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:

  • Increase Character Limit: The character limit for world download names within the World Tools mod is increased from 16 to at least 32 characters, allowing for more detailed naming.
  • UI Adaptation: The user interface of the World Tools mod is adapted to accommodate longer world names without disrupting the layout or usability.

Unable to save Map data

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!

ModMenu Support and config menu and various options

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

Running into error with storage containers

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)

Saving chunks slow

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

Missing Container Contents on Block Entity Reload

Steps to reproduce:

  1. Start WDL with a chest that contains contents next to you
  2. Open the chest to save the contents
  3. Move out of range of the chest so it unloads
  4. Move back in range of the chest
  5. Save capture
  6. Open WDL in SP, chest contents will be missing

World MetaData Not getting Saved

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.

Containers not always saving on Mac

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?

F12 Menu does not show up and sometimes multiple servers have chunks saved to the same file(Fabric)

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.

Still unable to save worlds during ReplayMod playback

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.

Version 1.1.1 is incompatible with MysteryMod-1.20.1-1.0.1.jar Mod. - 1.0.0 runs fine

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

Advertise quilt support on modrinth

Untill modrinth makes ther launcher accept fabric mods for auttoupdateing on quilt if they dont advetise quilt support this will be very usefull

Unable to save worlds during ReplayMod playback

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.