In this tutorial I will cover the following use cases:
- You have Minecraft world files of an existing world. You want to get a map only of its explored parts.
- You have Minecraft world files, you want to auto-explore it and get a map of that.
It does not matter whether the world comes from single or multiplayer. In both use cases, you will end up with an interactive map accessible through your browser. The map will look something like this:
You will be able to zoom in and zoom out on both of these and switch between them. As a side effect, an isometric "cave" map will also be generated.
To achieve that, you will leverage the following tools:
- Spigot server software
- Dynmap plugin
- (Use case #2 - only) WorldBorder plugin
Setup is the same for both use cases, except in use case #2, you will need to use the WorldBorder plugin to establish "up until where" you want the world explored.
The way this works is fairly simple: You will setup a local Minecraft server with Dynmap & WorldBorder plugins, give yourself OP, run few commands and wait for the server & plugins to prepare the map for you. Let's start with the setup.
Step 1: Java & BuildTools
Hopefully, you should have Java runtime already installed, as you have been playing Minecraft for a while now. If not, fix that by going to java.com/download. Download & install.
Now you need to build your spigot server software java executable. It may sound complicated, but it really isn't. Head to spigotmc.org and download
Once you have that, open commandline or terminal in the same folder where
BuildTools.jar file is. You can do this by holding shift and rightclicking in the directory and selecting
Open Commandline/Powershell/terminal here.
Once the commandline or terminal window is open, type
java -jar BuildTools.jar --rev latest and hit enter. This will use the
BuildTools.jar to download and build spigot server software. If you know what you are doing and need a different version, you can specify version of spigot to be built after the
Once the script finishes, new
spigot-[version-number].jar will be created in the same directory. Create new directory called
server and copy the file there.
Side note: When I was doing this for the first time, I was really confused about why do I need to ge BuildTools to build spigot locally, instead of just downloading the spigot executable. It seems that there was a legal disagreement between old and current developers on the direction of spigot, and due to some license issues the new developers cannot provide a direct executable link. This is their workaround for that.
Step 2: Get and Setup Plugins
Download Dynmap plugin.
If you also want to auto-explore the map, download WorldBorder plugin as well.
Both of these are
.jar files. When determining what version of the plugins to download, use the version that matches the
spigot-[version-number].jar you have copied into the
server folder earlier.
plugins folder inside the folder
server that you have created in Step 1.
.jar files into the
Step 3: Copy your world files into the server directory
Open the directory that contains your world files (you should see
level.dat file there). Select everything and copy it.
server create new folder
world. Open it and paste the world files in there.
Step 4: Launch the server
Open terminal in the
server folder and run this command:
java -jar spigot[yourversionhere].jar --nogui
If this is the first time you are doing this, it will exit immediatelly and produce an
eula.txt file, find the
eula=false line, change it to
eula=true and run the command again. Server should now start. Congratulations, you've just accepted the license agreement and the server is starting.
Feel free to make yourself an OP on the server by running
op YourNameHere in the server console. Keep the server console running (you can minimize it though).
Step 5.0 - Use Case: Just Generate the Map
The Dynmap plugin will provide you with the server map through the web browser. You can try it when the server runs by opening your favorite browser and going to
http://localhost:8123. Chances are you will see just black screen - the dynmap haven't rendered the map yet.
Luckily, we can tell the plugin to render the whole world by
dynmap fullrender command via server console. Before you do that, consider whether you want to exclude some worlds from being generated - for example, you may not need to render maps for
world_nether. If that's the case, before you run the
fullrender command, exclude these worlds with
dmap worldset world_the_end enabled:false and
dmap worldset world_nether enabled:false respectively.
The Dynmap plugin will report its progress on rendering regularly in the server console. You can check the address mentioned above to see how much of the world is already available.
Step 5.1 - Use case: Explore the world, then generate map
If you have just started the map, or you want to generate the map that will have a rectangle/eliptic/other shape and everything within the shape is going to be available (explored), you need to utilize WorldBorder plugin.
I recommend to set this up from the game - so make sure you are an OP on your server and log into the game (address is by default
/wb set NUMBER, where you replace
NUMBER with number of blocks from your position at which you want to set the world border. This is step is important, because the world border set is determines how far the map will be autoexplored by the plugin.
To alter the worldborder type, explore
/wb help and look for options in
/wb shape. You can set the world border to be rectangular or eliptic and define its properties.
To start the auto-exploration of your world you need to run two commands. You must run the second command within 10 seconds from when you have run the first one. If you don't make it on time, you have to run both of them again. Run:
/wb fill confirm
Once you have run these commands, the plugin starts exploring the world and report its progress in server console. And your chat if you have run this from the game.
When the exploration is finished, do the same as in Step 5.0.
I can not see anything in browser. What is going on?
If you see the map UI, but don't see the map, it has not rendered yet. Run the fullrender commands and wait for it.
If you don't see the UI, but an error page, one of the possibilities is that the plugin could not expose the map on port 8123 - because it is being used by different service. Try editing
plugins/dynmap/configuration.txt and updating
webserver-port: 8123 to some other number. Make sure the number is over 1024 (0-1024 are usually reserved) and roughly under 65k. You will then want to access
TBD once you reach out with other issues.