Skip to content

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:

MinestomThorium version
…-1.21.11 (any 1.21.11 build)1.0.3-1.21.11
…-26.21.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-token
server-name=Lobby
enforce=true
ban-command=
unban-command=
KeyDefaultMeaning
server-tokenYour network token. Treat it like a password.
server-nameWhich dashboard server this backend is. Must match its name exactly.
enforcetrueApply automatic punishments. false only records detections, and staff alerts still show.
mitigatetrueAllow setbacks and block resyncs.
ban-commandemptyConsole command to run for a ban, such as ban %player% %reason%. %player%, %reason% and %check% are filled in.
unban-commandemptyConsole command to run when a player is unbanned from the dashboard, such as unban %player%.
alert-formatThe in-game staff alert line. & colour codes and %player%, %check%, %vl%, %confidence% work.
kick-formatThe 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.