Install on Minestom
Minestom has no plugin loader, so Thorium for Minestom is a library you add to your server’s build and start from your own code. It needs Java 25.
Steps 1 and 2 of installing the plugin apply here too: choose a
plan, then add the server in the dashboard. Its name is the server-name used
below.
1. Add the dependency
Thorium for Minestom is served from JitPack. Pick the version that matches the Minecraft version your Minestom targets:
| Minestom | Thorium version |
|---|---|
…-1.21.11 (any 1.21.11 build) | 1.0.3-1.21.11 |
…-26.2 | 1.0.2-26.2 |
Gradle (Kotlin DSL):
repositories { mavenCentral() maven("https://jitpack.io")}
dependencies { implementation("net.minestom:minestom:2026.05.17-1.21.11") implementation("com.github.ThoriumAC:Thorium-Minestom-Plugin:1.0.3-1.21.11")}Maven:
<repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository></repositories>
<dependency> <groupId>com.github.ThoriumAC</groupId> <artifactId>Thorium-Minestom-Plugin</artifactId> <version>1.0.3-1.21.11</version></dependency>The jar is shaded and brings no dependencies of its own.
2. Start it
Call ThoriumMinestom.start after MinecraftServer.init and after registering
your own listeners, then start the server:
MinecraftServer server = MinecraftServer.init(new Auth.Online());// ... your instances and listeners ...
ThoriumMinestom.start(Path.of("thorium")) .staff(p -> p.getPermissionLevel() >= 2) // who receives alerts .admin(p -> p.getPermissionLevel() >= 4); // who may run /thorium admin commands
server.start("0.0.0.0", 25565);Minestom has no permission system, so staff and admins are decided by the two predicates. The defaults are the ones shown. The console can always run every command.
Thorium registers /thorium and /report itself.
3. Configure it
The first start writes thorium/thorium.properties (inside the folder you passed
to start) and waits for a token. Set up plugin next to the server in the
dashboard gives you the token and server name:
server-token=your-network-tokenserver-name=Lobbyenforce=trueban-command=unban-command=| Key | Default | Meaning |
|---|---|---|
server-token | Your network token. Treat it like a password. | |
server-name | Which dashboard server this backend is. Must match its name exactly. | |
enforce | true | Apply automatic punishments. false only records detections, and staff alerts still show. |
mitigate | true | Allow setbacks and block resyncs. |
ban-command | empty | Console command to run for a ban, such as ban %player% %reason%. %player%, %reason% and %check% are filled in. |
unban-command | empty | Console command to run when a player is unbanned from the dashboard, such as unban %player%. |
alert-format | The in-game staff alert line. & colour codes and %player%, %check%, %vl%, %confidence% work. | |
kick-format | The kick message, unless the dashboard sets one. |
Then run /thorium reconnect from the console, or restart.
Network settings such as detections, punishment ladders, alerts and IP sharing are set in the dashboard, the same as for Paper. See configuration.
4. Confirm
Run /thorium status. It shows the version, that the connection is up, and
that the world is synced. See verify it is working for
connection errors.
What differs from Paper
- Your server is the game logic. Thorium checks movement and combat against vanilla behaviour. If your server leaves out something vanilla does, such as fall damage, the check that relies on it can flag players who did nothing wrong. Turn that check off under Settings → Detections.
- Advanced Analytics only records what Minestom reports: blocks broken and placed, kills and deaths, eating, item use, drops and pickups. Crafting, enchanting, fishing and bow shots only appear if your server implements them.
- Worlds are your instances. Replays and spectating show each instance separately, even when several share a dimension.