Fabric mod that monitors world eaters and trenchers, sending Discord notifications with per‑event ping control when they stop or get obstructed.
Fabric mod that monitors world eaters (TNT-based), trenchers, and bedrock breakers (block destruction-based), sending Discord webhook notifications with per‑event ping control and fully customizable messages when they stop, start, or get obstructed.
For a complete guide on how to configure all the features please visit the documentation: WorldEaterNotifier Documentation
- Real-time monitoring: Tracks world eaters (TNT count), trenchers, and bedrock breakers (block destruction).
- Discord integration: Sends instant notifications when a machine starts, stops, resumes, or is manually stopped.
- Customizable messages: Every notification message is configurable per machine type via JSON — use
{type}and{name}placeholders. - Role-based notifications: Mention specific Discord roles with per‑event toggles (global, start, manual stop, stuck, resumed, server shutdown). All configurable in‑game via commands.
- Discord bot mode: JDA-powered bot with interactive toggle button and slash commands (
/config,/worldeater start|stop|list,/trencher start|stop|list,/bedrockbreaker start|stop|list) with autocomplete. - Configurable thresholds: Stop timeout, minimum TNT count / blocks broken per machine type.
- Multi-world support: Monitor machines across different dimensions.
- Persistent configuration: Machine definitions, settings, and ping toggles survive server restarts. Messages are editable in JSON.
- Server shutdown detection: Automatically stops all active machines on shutdown and notifies Discord.
| Minecraft | Java | Fabric Loader | Fabric API |
|---|---|---|---|
| 1.21.11 | 21+ | 0.18.1+ | 0.141.4+1.21.11 |
| 26.3 | 25+ | 0.19.5+ | 0.161.0+26.3 |
Install on the dedicated server only. Clients do not need this mod. JDA is bundled; no separate Discord library is needed.
- Download the jar matching your Minecraft version from GitHub Releases or Modrinth.
- Put it and the matching Fabric API jar in the server's
mods/folder. - Start the server. The mod creates
config/worldeaternotifier.jsonautomatically. - Configure delivery and define your machines with the commands below.
Keep config/worldeaternotifier.json when updating. Machine definitions, settings, message templates, and the whitelist are retained. Machines load inactive after a restart; start them explicitly when ready.
To build both supported versions:
python3 tools/multiversion.pyThe jars are written to build/multiversion/. The builder uses Java 21 for 1.21.11 and Java 25 for 26.3. In CI these are supplied by JAVA_HOME and JAVA_HOME_25_X64; locally they default to ~/.local/opt/jdk-21 and ~/.local/opt/jdk-25.
The mod creates config/worldeaternotifier.json on first run. You can edit it manually or use the in‑game commands.
Example:
{
"webhookUrl": "https://discord.com/api/webhooks/...",
"pingRoleId": "123456789012345678",
"notificationMode": "webhook",
"botToken": "",
"guildId": "",
"channelId": "",
"showSubscriptionButton": true,
"memberDiscordRole": "",
"worldEaterSettings": {
"stopTimeoutSeconds": 60,
"minTntCount": 3,
"pingSettings": {
"enabled": true,
"onStart": true,
"onStop": true,
"onStuck": true,
"onResumed": true,
"onShutdown": true
},
"messages": {
"start": "{type} **'{name}'** has started.",
"stuck": "{type} **'{name}'** has stopped due to an obstruction.",
"resumed": "{type} **'{name}'** has started again.",
"manualStop": "{type} **'{name}'** was stopped manually.",
"shutdown": "{type} **'{name}'** was shut down with the server and may have broken."
}
},
"trencherSettings": {
"stopTimeoutSeconds": 180,
"minBlocksBroken": 20,
"pingSettings": {
"enabled": true,
"onStart": true,
"onStop": true,
"onStuck": true,
"onResumed": true,
"onShutdown": true
},
"messages": {
"start": "{type} **'{name}'** has started.",
"stuck": "{type} **'{name}'** has stopped due to an obstruction.",
"resumed": "{type} **'{name}'** has started again.",
"manualStop": "{type} **'{name}'** was stopped manually.",
"shutdown": "{type} **'{name}'** was shut down with the server and may have broken."
}
},
"bedrockBreakerSettings": {
"stopTimeoutSeconds": 60,
"minBlocksBroken": 1,
"pingSettings": {
"enabled": true,
"onStart": true,
"onStop": true,
"onStuck": true,
"onResumed": true,
"onShutdown": true
},
"messages": {
"start": "{type} **'{name}'** has started.",
"stuck": "{type} **'{name}'** has stopped due to an obstruction.",
"resumed": "{type} **'{name}'** has started again.",
"manualStop": "{type} **'{name}'** was stopped manually.",
"shutdown": "{type} **'{name}'** was shut down with the server and may have broken."
}
},
"worldEaters": [],
"trenchers": [],
"bedrockBreakers": [],
"whitelist": []
}- webhookUrl: Discord webhook URL.
- pingRoleId: ID of the Discord role to mention. Leave empty or
"0"to disable all mentions. - notificationMode:
"webhook"(default) or"bot"— switches between webhook and JDA bot delivery. - botToken: Discord bot token (required for bot mode).
- guildId / channelId: Discord guild and channel for bot notifications and slash commands.
- showSubscriptionButton: Whether to show the "Toggle Ping" button on start messages (bot mode).
- memberDiscordRole: Discord role ID that gates
/worldeater start|stop|list(and trencher/bedrockbreaker equivalents) via slash commands; admins always have access. - stopTimeoutSeconds: How many seconds without activity before the machine is considered stuck.
- minTntCount / minBlocksBroken: Minimum activity per check to keep the machine alive.
- pingSettings: Per-machine-type ping toggles (
enabled,onStart,onStop,onStuck,onResumed,onShutdown) — these now persist across restarts. - messages: Customizable Discord notification messages per machine type. Use
{type}for the machine type name and{name}for the machine instance name.
- Install the mod and start your server.
- Configure delivery:
- Webhook mode (default):
/worldeater settings setWebhookUrl <url> - Bot mode:
/worldeater settings setBotToken <token>, setsetGuildIdandsetChannelId, then/worldeater settings setNotificationMode bot
- Webhook mode (default):
- Create machines:
/worldeater create <name> <x1> <y1> <z1> <x2> <y2> <z2>/trencher create <name> <x1> <y1> <z1> <x2> <y2> <z2>/bedrockbreaker create <name> <x1> <y1> <z1> <x2> <y2> <z2>(Coordinates auto‑suggest the block you stand on;Tabcompletes names.)
- Start monitoring with
/worldeater start <name>,/trencher start <name>, or/bedrockbreaker start <name>. - The mod automatically sends Discord messages when a machine stops unexpectedly (stuck), resumes, or is manually stopped.
- In bot mode, Discord slash commands mirror the Minecraft commands:
/worldeater start <name>,/worldeater stop <name>,/worldeater list(autocomplete suggests existing names)- Same for
/trencherand/bedrockbreaker /config pings— interactive flow to toggle per-machine-type ping settings
- Adjust settings on the fly:
/worldeater settings show,/trencher settings show,/bedrockbreaker settings show/worldeater settings setStopTimeout <seconds>/trencher settings setMinBlocksBroken <count>/worldeater settings discordPings enable trueand individual events likeonStuck false/worldeater settings showSubscriptionButton <true|false>(bot mode)/worldeater settings setMemberDiscordRole <roleId>(bot mode)- Edit notification messages directly in the JSON file.
- Use
Tabto explore all subcommands.
- Manage machines:
list,stop,deletefor all three types. - When the server shuts down, all active machines are stopped and a shutdown notification is sent.
- Fabric Loader
- Fabric API
- Standard Minecraft & Java libraries
Requires:
- Gradle 8.10.2 or higher (automatically downloaded via gradlew)
- Java 21 or higher
Build command:
./gradlew clean buildGenerated artifact: build/libs/worldeaternotifier-*.jar
MIT © froyln
Original mod by Kisde. This repository is the W4VE fork, maintained under the MIT license.