Tags
Creators
Details
1.10.0
Compatibility
Changes
v1.10.0 — Discord notifications
✨ New: optional Discord notifications
Detections can now be mirrored to a Discord channel, routed through DiscordSRV.
Off by default, and nothing is bundled. The jar still contains only this plugin's own classes — no shaded HTTP client, no JDA, no extra megabytes. The one class that talks to DiscordSRV is loaded only when you enable the feature and DiscordSRV is installed, exactly like the existing PacketEvents and sign-detection bridges. On a server without DiscordSRV, nothing changes at all.
Enable it:
discord:
enabled: true
channel: "" # "" = DiscordSRV main channel | a game-channel name | a raw channel ID
Then /modblocker reload and /modblocker discord test.
What gets posted — each can be switched off individually:
┌───────────────────┬─────────────────────────────────────────────┐
│ Event │ Fires when │
├───────────────────┼─────────────────────────────────────────────┤
│ channel-detection │ A forbiddenList plugin channel matched │
├───────────────────┼─────────────────────────────────────────────┤
│ sign-detection │ A sign translation key came back translated │
├───────────────────┼─────────────────────────────────────────────┤
│ escalation │ An escalation ladder rung was applied │
├───────────────────┼─────────────────────────────────────────────┤
│ evade │ The sign check could never be completed │
└───────────────────┴─────────────────────────────────────────────┘
One detection is one message. When the escalation ladder takes a detection over, it posts the escalation message and the per-detection one is skipped — you never get two posts for the same join. Detections with action IGNORE stay quiet unless you set include-ignored: true.
Message text is templated in messages_<lang>.yml under discord:, so it follows your language: setting like everything else. Discord markdown works; Minecraft colour codes are stripped automatically.
Nothing can ping by accident. With discord.mention empty, mentions are sent disabled — an @everyone that ended up inside a mod name or a kick reason renders as plain text instead of alerting your server.
No performance cost. DiscordSRV's JDA owns the request queue, the rate limiting and the retries, so there is no queue or background thread in this plugin and every call returns immediately. A slow or unreachable Discord can never delay a player join.
🆕 New command
/modblocker discord test — sends a test message through the real bridge and the real channel resolution, and tells you exactly why it did not go out (DiscordSRV still connecting / channel not found / DiscordSRV not installed).
📝 Docs
The Java 21 requirement is now stated in the readme and the docs site, not just here on the plugin page.
⬆️ Upgrading
Your existing config.yml is not overwritten, so it has no discord: section yet. A missing section simply means "off" — nothing breaks. To use the feature, copy the discord: block from the documentation into your config.yml and reload. Language files are unaffected: missing entries fall back to the copy bundled in the jar, so the new message templates work without you touching messages_*.yml.
⚙ Requirements
Unchanged — FakeModBlocker is compiled using Java 21. Java 21 or newer is required to run this plugin.
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:Z7Zlnljn:3tEu0QsI"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:Z7Zlnljn:3tEu0QsI"
}

