Download the latest version from the Release page.
Arch Linux users can install BlockMap directly from the AUR.
BlockMap hasn't been packaged for other distros yet (looking for maintainers).
The GUI version should just run by (double)clicking it. Otherwise run it through:
java -jar BlockMap-gui-2.4.1.jar
to start. If you installed BlockMap through a package manager, search for it in your launcher or menu.
If you want to use BlockMap through the command line without,
# For general usage help
java -jar BlockMap-cli-2.4.1.jar help
# For help about rendering worlds to a folder
java -jar BlockMap-cli-2.4.1.jar help render
will get you started. On Linux even with colors!
If your world has been created before the Minecraft 1.13 release, please optimize it. To do this, start Minecraft, select your world, go to "Edit" and then "Optimize World".
This feature is not stabilized yet. Backwards-incompatible changes may occur even on minor releases. Any feedback welcome.
The new server mode is based around the following concept:
blockmap render-many
and pass the configuration file as argument.miniserve
). Clients will now be able to view your worlds across the Internet.The "old" way of doing server support: a simple shell script that calls the CLI.
The bash script server.sh is an example of how this could be used in a server environment. Simply set the paths at the top of the file and call this script regularly on the server. It has a few different render settings pre-configured, but they are easy to adapt to your needs.
If you have trouble getting the library as dependency into your build system, please open up an issue. We generally recommend using JitPack.
The main action happens in the RegionRenderer
class. It takes some RenderSettings
(color map, height bounds, etc.) and renders whole RegionFile
s at once. The result will be a Region
object, which contains not only the pixel data but also extensive metadata about the structure of the world. The RegionFolder
class helps you manage rendering whole worlds, especially with regards to keeping a rendered world up to date and other caching problems. Example usage:
MinecraftDimension dimension = MinecraftDimension.OVERWOLRD;
RenderSettings settings = new RenderSettings();
RegionRenderer renderer = new RegionRenderer(settings);
Path input; // <-- must point to a Minecraft world folder
Path inputRegion = input.resolve(dimension.getRegionPath());
Path output; // <-- must point to an empty folder
/* Actual rendering
*
* We could simply start loading `RegionFile`s per hand and feeding them into the `renderer`, but the `RegionFolder`s will help us
* with most of the dirty work. A `CachedRegionFolder` will be used to actually (and automatically) save the images on disk.
*/
WorldRegionFolder world = WorldRegionFolder.load(inputRegion, renderer, dimension == MinecraftDimension.NETHER);
CachedRegionFolder cached = CachedRegionFolder.create(world, false, output);
for (Vector2ic pos : world.listRegions()) {
cached.render(pos);
}
For more detailed examples (including all the possible settings and a "merge everything into a huge PNG" mode), look at the CLI code (CommandLineMain.java
).
Due to technical, legal and performance reasons, some resources required to run and test BlockMap are not included in this repository, but generated locally. The Gradle task regenerate
will download all required files (you only need an internet connection the first time and after a clean
) and generate and compile a bunch of stuff. Without this, nothing will work. On a freshly cloned repository, use initEclipse
or initIdea
to transform the repository into a project you can simply open in your favorite IDE. (Warning: The eclipse
and idea
tasks have to be called each time some dependencies changed. Furthermore, they link to some folders in the build directory. This means that they won't work as intended until regenerate
has been called.)
All screenshots from above are generated automatically through the Gradle task generateScreenshots
. This way, they are always up to date with the latest version. Be aware that this task needs to generate a fairly large Minecraft world first and then render it, which takes both time and space and will cause Gradle to slow down a lot.
To run from code:
./gradlew regenerate
# For the CLI
./gradlew :BlockMap-cli:run
# For the GUI
./gradlew :BlockMap-gui:run
If you want to create a release jar and run it, use ./gradlew :BlockMap-gui:runShadow
and ./gradlew :BlockMap-cli:runShadow
.
./gradlew regenerate
./gradlew generateScreenshots # Optional
./gradlew release
build.gradle
README.md
changelog.md
./gradlew licenseReport
and copy the generated JSON file to ./BlockMap-gui/src/main/resources/de/piegames/blockmap/gui/standalone/about/licenseReport.json
Version bump: $VESRION
. Add a tag with the version. Don't forget to push the tag as well! (git push --tags
)./BlockMap-{gui,cli}/build/libs/fat/
../BlockMap-internal/src/test/resources
. Delete the playerdata
, stats
and advancements
folders in it../BlockMap-internal/src/main/resources/
to match the new Minecraft version.ChunkRenderer
in de.piegames.blockmap.renderer
(in BlockMap-core
) to match the new Minecraft version.Minecraft $VERSION: Update preparation
./gradlew checkMinecraftVersions
and update de.piegames.blockmap.MinecraftVersion
accordingly.ChunkRenderer_$VERSION
in the constructorde.piegames.blockmap.renderer.RegionRenderer
to use the new ChunkRenderer
./gradlew regenerate
and make it work./gradlew test
) and make them work
ChunkRenderer
will fail./BlockMap-internal/src/main/resources/biome-color-instructions.json
./gradlew clean && ./gradlew regenerate && ./gradlew generateScreenshots
README.md
(and elsewhere)Currently, no Minecraft mods are supported, but the rendering engine is built in an extensible way. Mod support will only be implemented on request.