World Downloader, abbreviated WDL, is a mod that allows saving of a world on a remote server for singleplayer use. Mainly, this means that it can be used to backup your creations on a server. This is a continuation of the older version by cubic72 and nairol.
Currently 1.11 builds are experimental and may not work correctly. Entity tracking is disabled for now, meaning that the mod will not save entities in chunk that were unloaded. Additionally, the game will crash if you open a horse inventory while downloading. If you encounter any other issues, please file a bug report; I'll work on fixing these bugs by the next release.
Currently 1.10.2 builds are experimental and only available for liteloader; future updates should provide both forms. You may need to manually fiddle with liteloader and forge to get these versions to work.
You can also also use 1.10 builds to connect to 1.10.2 servers if necessary.
1.8.8 builds have been discontinued. Please, consider using 1.8.9 or 1.8 instead.
These versions are for Minecraft 1.8.8, and can connect to servers running Minecraft 1.8 to Minecraft 1.8.9. It is installed on clients running Minecraft 1.8.8. There is only a base edit version avaiable; use 1.8.9 instead if you need compatability with other mods. This version is incompatible with optifine 1.8.8 (but you should use optifine 1.8.9 anyways)
Older, non-actively maintained versions of WorldDownloader for versions of minecraft before 1.7.10 can be found in the old thread or via the GitHub releases page (within the 'src' download of very old versions).
This window will appear. Enter the name ("1.9_WDL"), optionally select a group ("WDL"), and make sure that the version is 1.9.
Then, select OK once you've got what you want.
If this is your first time using MultiMC, it will download the game assets (sounds and such). This might take a minute or so.
Once you're back at the main MultiMC screen, select "edit instance" in the sidebar.
Select "Add to Minecraft.jar" in the side bar. You may be prompted to confirm that this is the right way to install the mod; in the case of World Downloader, it is. (Note: the above screenshot is from an older version of multimc where the button was named differently).
Select the zip file for the mod that you downloaded earlier.
Close the edit instance window, and then launch your newly installed version by double-clicking it or by selecting play.
You can also install the mod directly as a launcher profile. This is more complicated, but if you don't want to download a separate launcher, this is the only way.
1. In the first post of the World Downloader thread, find the section titled "Downloads". Click on the link for the Minecraft version you're trying to use.
2. On the GitHub page this takes you to, click on and download the base edit file for your Minecraft version. (It should contain the word "baseedit" and "mc#.#.#.zip", where #.#.# is your Minecraft version number.)
3. Go to your ".minecraft" folder, then go into "versions". Create a copy of the folder for the correct Minecraft version and rename it to "#.#.#.wdl".
4. Open this folder. Rename the two .jar and .json files here to "#.#.#.wdl . jar" and "#.#.#.wdl . json".
5. In your text editor of choice, open #.#.#.wdl . json. You need to edit 2 things:
"downloads" section: This section contains 4 subsections, "client", "client_mappings", "server", and "server_mappings". It will be near the top of the .json file, will start with
(You don't want to replace it with exactly that text; this only shows the layout). This is needed because otherwise the launcher thinks you ahve an out-of-date version.
Open 1.x.x.wdl.jar with 7-zip or another archive manager.
Delete the META-INF from within 1.x.x.wdl.jar (this folder is used to check if the jar has been modified).
Copy all of the files from within the World Downloader zip file into the jar, overwriting files and merging folders if prompted.
Restart the launcher, "edit profile" (or make a new profile) and "use version" 1.x.x.wdl.
* You can the .minecraft folder on ...
Windows by entering %APPDATA%\.minecraft in an Explorer window or in the start->run dialog.
Linux by opening ~/.minecraft/ in a file manager of your choice.
Mac OS X by opening ~/Library/Application Support/minecraft in Finder.
Note: DO NOT EXTRACT THE .LITEMOD FILE! The .litemod file is what is manually loaded. Some browsers may automatically attempt to open it; if you use safari either you can find the original zip in the trash, or the automatic opening in Safari's Preferences (Safari —> Preferences... Untick "Open 'safe' files after downloading").
In most cases, you should be able to just install Liteloader and then put the .litemod into the mods folder. Sometimes, that doesn't work, in which case you need to follow the instructions below.
Check "accept license" and click on "jdk-7u80-macosx-x64.dmg"
If you run mac or linux, you need to also do the following:
Open the Minecraft launcher, select "LiteLoader 1.8" under "Profiles", and click "Edit Profile"
Under "Java Settings (Advanced)", make sure you have the box for "Executable" checked, and type /usr/bin/java into the box (YES, PASTE IT IN EXACTLY LIKE THIS)
Hit "Save Profile"
Run Minecraft using your LiteLoader 1.8 profile, join a server, hit Esc, click "Download World", run around to load the chunks you want to download.
For most versions, there is no forge version of World Downloader. However, you can use the Liteloader version with Forge, which will generally work. Look on the liteloader thread for instructions on how to install with forge, and then insert the .litemod file as described above.
For 1.14.4 and 1.15.2, there is a new experimental version of World Downloader that uses Forge. First install Forge, and then put MixinBootstrap and the appropriate WDL jar file into the mods folder. These versions require MixinBootstrap to run properly, and will not work without it (you will be prompted in chat to install it).
World Downloader has an automatic update checker that fetches an update list from GitHub. No personal information is sent appart from the current version as part of the User Agent (which is standard for any HTTP request). This update check also performs some basic validation to ensure that the download is not corrupt. You can view more information on how the updater works, both internally and visually, on the project wiki.
This mod does communicate with the server for permission checks. These are intended to add permission requests to the mod to adress the concerns some server owners have about misuse. A few servers do automatically ban users when it detects the mod being installed; while I do not support this action in any way, it is important to be wary of the fact that some servers do this. The vast majority, however, either do not use this system or implement the in-mod permission request system. Please contact a moderator on your server for details (they generally like being notified before you install the mod as to what you wish to download).
I cannot be held responsible for any issues caused by the use or misuse of the mod. As per the license:
The User accepts the following liability:
The Mod is provided 'as is' with no warranties, implied or otherwise.
The Author is not responsible for dragon, troll, pirate, or ninja attacks.
Slaying any and all mythological creatures is the sole responsibility of the User.
The Author takes no responsibility for any damages incurred from the use or misuse of the Mod.
The Mod may alter fundamental parts of the Game.
The User is liable for any and all damages resulting from the use or misuse of the Mod.
The Author may not be held responsible for the incompetency or sadism of a Modpack Creator.
TL;DR: To make use of the mod, simply join a server, pause the game, and click "Start download". If the server is multiworld (has more than the 3 vanilla minecraft dimensions), make sure to indicate as such. Travel around the world, making sure to load the parts you want to save, and opening any chests / other containers, and when you are done, pause, and click "Stop downloading".
Join a server, and then pause and select "Download this world". If this is your first time using the mod on that server, make sure to chose the appropriate multiworld mode -- if the server *only* has 3 worlds (the overworld, nether, and end), multiworld is not needed, but if it has any more worlds or has worlds beyond those official worlds, multiworld is required or you may end up overwriting data from one world with that of another. After that, you may wish to pause again and click the 3 dots next to the download button, allowing you to further configure the download options for that world.
Once you've started the download, you need to travel around the world. World Downloader will only save chunks that you can see -- if the game never loads it, it will not be saved. (However, once a chunk is loaded, the entire vertical section is saved.) For most servers, this is a range of 10 chunks (160 blocks), but it might be more or less depending on the server. You will need to open chests and some other blocks for them to be saved. See this section for more info.
When you are done, pause the game and then hit "Stop downloading".
If you want to use World Downloader with other mods, note that it might not save everything from other mods. For instance, it most likely will not save containers such as chests. However, it'll still probably save most of the downloaded world. World Downloader has not been tested with other mods.
No guarantees can be made about functionality with other mods. If you experience crashes, feel free to report them, though.
World downloader is a mod that is mainly intended for use by players to make copies of their own creations. However, you may be afraid that someone will use the mod to create a copy of your own map, or another thing that they didn't build, and then put it on their own server. While I can't say that that isn't a risk, it doesn't mean you should entirely ban use of the mod (or players who use the mod).
Additionally, it only downloads the area that a player travels to -- it is impossible to download the entire map without traveling through it. World Downloader requests no more data than a vanilla client -- it simply writes the data that is normally sent. In essence, use of this mod will not have any affect on server performance.
Finally, note that the mod does not know the server seed unless players have access to /seed; it only saves what can be seen.
It's preferred to report bugs on the GitHub issue tracker, but if you're not sure or don't want to register an account there, feel free to post in this thread and I'll create a ticket. The tracker is available here.
Please include the full log file in the crash report, along with any other information (such as the server IP) as necessary.
WDL is licensed under the MMPLv2. Among other things, this means that you must request permission before redistributing this mod (modified or unmodified). Also, custom versions must be open source. For more information, please read the license page.
Versions of the mod targeting old Minecraft versions may also include a copy of the FastUtil library (specifically the partial version Mojang used before 1.12), which is licensed under the Apache License 2.0.
It doesn't work for me! I tried everything: coremod, bin, magic launcher, multimc, liteloader but nothing worked: liteloader doesn't detect this mod, magic launcher doesn't launch, multimc crashes after launching, coremod with nothing else doesn't launch, same as bin.
Hm. Can you post the crash reports? (Also, when you installed it as a coremod, did you remove META-INF in the jar?)
Hi there! Will this mod get an update to 1.8.8? I've seen an AMAZING island house on a server yesterday and I really want to download it, change a few things and play with it, maybe expand it to a city (In singleplayer of course, not to steal it.) The problem is obviously that the server is on 1.8.8. I'm pretty sure it would be a LOT more popular if this was on the latest version. It would be awesome if you could update it to 1.8.8. But even now, this is really useful. Thanks!
You should still be able to connect to the server with this mod even if the server runs 1.8.8, as 1.8.0 and 1.8.8 are compatible networking wise.
The main thing that keeps me from updating to 1.8.8 is the absence of a MCP release for 1.8. Without one, it's very hard to create mods as one would have to use the obfuscated source.
I still might try to make a version with it, but it would be extremely difficult.
Exception in thread "main" java.lang.SecurityException: SHA-256 digest error for bwy.class
at sun.security.util.ManifestEntryVerifier.verify(Unknown Source)
at java.util.jar.JarVerifier.processEntry(Unknown Source)
at java.util.jar.JarVerifier.update(Unknown Source)
at java.util.jar.JarVerifier$VerifierStream.read(Unknown Source)
at sun.misc.Resource.getBytes(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Version: Minecraft 1.8
What could this be? Crashed when launching the game.
EDIT: Ahh, forgot to delete the META-INF False alarm, sorry
Please upload WDL 1.7.10 jar version, because forge don't see zip and in version folder I don't have .jar file (1.7.10-Forge10.13.4.1448-1.7.10.jar), only json... Help me Thanks
PS: When I try use liteLoader and forge I can't join to server because I get error ,,internal server error"
WorldDownloader needs to be put inside of the actual minecraft jar; forge can't load it directly. Theroretically, you should be able to put it in just 1.7.10's folder (forge uses that jar to start), but it seems like forge doesn't like the modified class.
Can you get the log file from when you try to join the server? It'll be located in %appdata%\.minecraft\logs\latest.log.
EDIT: Also, what's the IP of the server you're trying to connect to?
[20:29:33] [Client thread/INFO]: Baking listener list for TickObserver with 3 listeners
[20:29:33] [Client thread/INFO]: Baking listener list for PostRenderObserver with 3 listeners
[20:29:33] [Client thread/INFO]: Baking listener list for Tickable with 0 listeners
[20:29:33] [Client thread/INFO]: Baking listener list for WorldObserver with 2 listeners
[20:29:33] [Client thread/INFO]: Baking listener list for FrameBufferListener with 0 listeners
[20:29:35] [Netty Client IO #1/INFO]: Attempting connection with missing mods [FastCraft, MemoryCleaner, soundfilters, tabbychat] at SERVER
[20:29:38] [Client thread/INFO]: Connecting to 127.0.0.1, 25565
[20:29:38] [Netty Client IO #4/INFO]: Baking listener list for PostLoginListener with 0 listeners
[20:29:38] [Netty Client IO #4/INFO]: Server protocol version 2
[20:29:38] [Netty Client IO #4/INFO]: Attempting connection with missing mods [FastCraft, MemoryCleaner, soundfilters, tabbychat] at SERVER
[20:29:38] [Netty Client IO #4/INFO]: Injecting existing block and item data into this client instance
[20:29:38] [Netty Client IO #4/INFO]: Applying holder lookups
[20:29:38] [Netty Client IO #4/INFO]: Holder lookups applied
[20:29:38] [Client thread/INFO]: [Client thread] Client side modded connection established
[20:29:39] [Client thread/INFO]: Baking listener list for PreJoinGameListener with 0 listeners
[20:29:39] [Client thread/INFO]: [CHAT] Your client is using a FastCraft test build.
[20:29:40] [Thread-12/INFO]: [CHAT] §2CustomNpcs§f installed. For more info §9§nClick here
[20:29:40] [Thread-13/INFO]: [CHAT] §2MorePlayerModels§f installed. More info at §9§nClick here
[20:29:40] [Client thread/INFO]: Baking listener list for JoinGameListener with 0 listeners
[20:29:40] [Client thread/INFO]: Baking listener list for ChatListener with 0 listeners
[20:29:40] [Client thread/INFO]: [CHAT] Current Tool: Default Tool
[20:29:40] [Client thread/INFO]: [CHAT] Brush Type: Snipe
[20:29:40] [Client thread/INFO]: [CHAT] Performer: Material
[20:29:40] [Client thread/INFO]: [CHAT] Voxel: 0 (AIR)
[20:29:40] [Client thread/INFO]: [CHAT] [L]**Pada deszcz.**
[20:29:40] [Client thread/INFO]: [CHAT] §2[WorldDL]§6 Sending plugin channels registration to the server.
[20:29:40] [Client thread/INFO]: §2[WorldDL]§6 onWorldLoad: different server!
[20:29:40] [Client thread/INFO]: §2[WorldDL]§6 Server brand=kcauldron,cauldron,craftbukkit,mcpc,fml,forge. Using Vanilla track distances.
[20:29:40] [Client thread/INFO]: Baking listener list for PostRenderListener with 0 listeners
[20:29:40] [Client thread/INFO]: Baking listener list for HUDRenderListener with 0 listeners
[20:29:41] [Client thread/INFO]: [CHAT] Your name is: §4Visible
[20:29:41] [Client thread/INFO]: [CHAT] Masz 5 wiadomosci! Wpisz /mail read aby je przeczytac.
[20:29:41] [Client thread/INFO]: [CHAT] Prosze sie zalogowac przy uzyciu /login
[20:29:41] [Netty Client IO #4/ERROR]: NetworkDispatcher exception
java.io.IOException: Istniejące połączenie zostało gwałtownie zamknięte przez zdalnego hosta
at sun.nio.ch.SocketDispatcher.read0(Native Method) ~[?:1.8.0_60]
at sun.nio.ch.SocketDispatcher.read(Unknown Source) ~[?:1.8.0_60]
at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source) ~[?:1.8.0_60]
at sun.nio.ch.IOUtil.read(Unknown Source) ~[?:1.8.0_60]
at sun.nio.ch.SocketChannelImpl.read(Unknown Source) ~[?:1.8.0_60]
at io.netty.buffer.UnpooledUnsafeDirectByteBuf.setBytes(UnpooledUnsafeDirectByteBuf.java:436) ~[UnpooledUnsafeDirectByteBuf.class:?]
at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:870) ~[AbstractByteBuf.class:?]
at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:208) ~[NioSocketChannel.class:?]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:87) [AbstractNioByteChannel$NioByteUnsafe.class:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:480) [NioEventLoop.class:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:447) [NioEventLoop.class:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:341) [NioEventLoop.class:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) [SingleThreadEventExecutor$2.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_60]
[20:29:42] [Client thread/INFO]: [eu.thesociety.DragonbornSR.DragonsRadioMod.Handler.Cmsg:writeline:12]: [Dragon's Radio Mod] Stopping all currently running radio streams.
[20:29:42] [Client thread/INFO]: Applying holder lookups
[20:29:42] [Client thread/INFO]: Holder lookups applied
Istniejące połączenie zostało gwałtownie zamknięte przez zdalnego hosta = An existing connection was forcibly closed by the remote host