Minestom

Generate your Massif world in a Minestom project.

The Massif library plugs into Minestom’s normal world generation. It’s built for Minestom 2026.10.05-26.2 and Java 25.

1. Add the dependency

During the beta, the library is in Smolder’s package registry. Your invite includes the credentials; put them in the SMOLDER_MAVEN_USERNAME and SMOLDER_MAVEN_TOKEN environment variables, then add to build.gradle.kts:

repositories {
    maven("https://git.neo.smolder.fr/api/packages/Smolder/maven") {
        credentials {
            username = System.getenv("SMOLDER_MAVEN_USERNAME")
            password = System.getenv("SMOLDER_MAVEN_TOKEN")
        }
    }
}

dependencies {
    implementation("fr.smolder.massif:massif-upstream-minestom:0.1.0")
}

2. Load your world

Download your export from your account and ship it with your server, for example as world.massif next to your JAR.

MassifWorld.install does it all in one call: it checks the export’s signature (refusing anything Massif didn’t produce), registers its biomes and installs the generator. Call it while your server starts, before any chunk loads or player connects:

import fr.smolder.massif.upstream.MassifWorld;
import net.minestom.server.MinecraftServer;
import net.minestom.server.coordinate.Pos;
import net.minestom.server.event.player.AsyncPlayerConfigurationEvent;
import java.nio.file.Path;

public class WorldServer {
    public static void main(String[] args) throws Exception {
        var server = MinecraftServer.init();
        MassifWorld world = null;
        try {
            var instance = MinecraftServer.getInstanceManager().createInstanceContainer();
            world = MassifWorld.install(Path.of("world.massif"), instance);
            MinecraftServer.getGlobalEventHandler().addListener(AsyncPlayerConfigurationEvent.class, event -> {
                event.setSpawningInstance(instance);
                event.getPlayer().setRespawnPoint(new Pos(0, 64, 0));
            });
            server.start("0.0.0.0", 25565);
            System.in.read(); // press Enter to stop
        } finally {
            MinecraftServer.stopCleanly();
            if (world != null) world.close();
        }
    }
}

Run with Java 25 and --enable-native-access=ALL-UNNAMED. Set the spawn height to suit your terrain. Keep the returned world until the server stops, then close it.

Good to know

  • Massif generates the authored height range of your world; everything else is air.
  • Generation runs on Massif’s own native workers, so it doesn’t block your tick thread.
  • Generated entities and plugin content (like CraftEngine blocks) need extra setup; ask us if your world uses them.