Links
Tags
Creators
Details
1.2.0
Compatibility
Changes
🆕 What's new in 1.2.0
Per-Bot Environment Variables
Each bot in the bots: list can now have its own env: block that overrides the global environment variables — useful for running multiple bots with different tokens.
Multi-Bot Dashboard Selector
When running multiple bots, the dashboard now shows a bot selector dropdown to switch between bots without leaving the page.
Dashboard Security Hardening
- CSRF protection — All mutating API endpoints now require an
X-NR-Requestheader - Brute-force login protection — Lockout after 5 failed attempts (5 minute cooldown)
- Session pruning — Expired sessions are now cleaned up automatically
Changes
- Dashboard now uses a bounded thread pool (8 threads) instead of an unbounded cached pool
- SSE heartbeats use a shared scheduled executor instead of per-connection threads
- NodeDownloader is now a shared singleton — multiple bots no longer trigger duplicate downloads
- Webhook shutdown is now handled cleanly on plugin disable
- Restart now waits for the process to fully stop before starting again (prevents race conditions)
Bug Fixes
- Fixed stop command not waiting for the process to actually terminate before reporting "stopped"
- Fixed auto-restart thread not being interrupted when manually stopping a bot
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:YL9bPIyR:bu6CDb94"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:YL9bPIyR:bu6CDb94"
}

