plugin-agones when your gamemode runs on Minestom. Unlike Paper,
Minestom has no plugin loader. Runtime-based servers discover the module from the classpath and
select its grounds.agones provider during GroundsServer composition.
Once started, the library syncs Agones state from Minestom’s player events the same way the Paper
build does: the first player switches the gameserver to Allocated, the last one returning to
Ready.
Requirements
Your Minestom pod must run with an Agones sidecar exposing the SDK onhttp://localhost:9358. The
Grounds container images configure this by default.
The module targets Minestom
2026.03.03-1.21.11 and newer. It uses an internal coroutine scope for
the sidecar calls, so you do not need to provide an executor.Add the Dependency
The module is published to thegroundsgg GitHub Packages Maven registry as
gg.grounds:plugin-agones-minestom.
- Gradle Kotlin DSL
- Gradle Groovy DSL
build.gradle.kts
Compose with grounds-minestom-runtime
plugin-agones-minestom 0.6.0 exposes a GroundsModuleProvider with the stable ID
grounds.agones. Add the runtime dependency, discover providers, and select this provider in the
server entrypoint:
Low-level direct usage
GroundsPluginAgones remains available for a custom Minestom bootstrap:
enable() installs listeners and starts reconciliation. disable() cancels the fallback task,
removes the event node, and releases the coroutine scope.
State Sync Semantics
The disconnect path schedules its check on the next Minestom tick so that the connection manager’s
player list is already updated when the check runs.
All state transitions go through
AgonesHelper, which first fetches the gameserver state from the
sidecar and only sends Allocate or Ready when it differs. Repeat calls are no-ops.Label Your GameServer
The library only handles state sync. For the Velocity proxy to discover your Minestom gameserver, you still need to follow the discovery contract:- deploy into the
gamesnamespace - add
grounds/server-type: <lobby|game|match>to theGameServerresource metadata - listen on port
25565in the pod
Failure Modes
Agones sidecar unreachable
Agones sidecar unreachable
Errors from the sidecar are logged at error level through the class logger. The fallback loop
keeps retrying every 10 seconds, so a short sidecar outage is recovered automatically without any
action from your gamemode.
enable called twice without a disable in between
enable called twice without a disable in between
The second call disables the previous runtime first, so the event node and coroutine scope are
cleaned up before the new one is created. No duplicate listeners are registered.
No Agones sidecar at all
No Agones sidecar at all
If your deployment has no Agones sidecar, every sidecar call fails. The plugin continues to run,
but cannot influence Agones state. In that setup, consider not loading the module at all to keep
logs clean.
Next Steps
- Read the Velocity page to see how the proxy picks up this gameserver once it reaches a running Agones state.
- Review the Agones Integration overview for the cross-platform picture.
