Configuration
Main config: plugins/FakeModBlocker/config.yml
Basics
language: en # locale file suffix → messages_en.yml ("en" and "cn" ship by default)
enable: true # master switch
logger: true # print player channels / mod-related messages (great for collecting keywords)
useCustomKickCommand: true
command: "kick %player% %kickMessage%" # placeholders: %player% %kickMessage%
notifyStaff: true
notificationPermission: fakemodblocker.notify| Option | Description |
|---|---|
language | Loads messages_<language>.yml. en and cn are bundled; see Messages & Locales |
enable | false disables mod detection |
logger | Verbose console channel lists; useful for debugging, optional in production |
useCustomKickCommand | Use a custom kick command instead of the default kick |
command | Custom kick command template |
notifyStaff | Notify staff with the notify permission |
forbiddenList
These are plugin channel keywords, not mod display names.
forbiddenList:
- "fabric"
- "forge"
- "xaeroworldmap"
- "servux:tweaks" # with ':' → exact channel match only
- "servux:structures"Matching rules:
- No
:: channel equals the keyword, or starts withkeyword:- Example:
xaeroworldmapmatchesxaeroworldmap:main
- Example:
- With
:: exact channel name only- Example:
servux:tweakswill not matchservux:litematics
- Example:
Common mistake
Putting display names like meteorclient or sodium in the list usually does nothing — unless that mod actually registers a matching channel.
Do this instead:
- Enable
logger: true - Join with the mod and copy the channel from console (if any)
- Add the real channel keyword to
forbiddenList - If the mod never opens a channel, use Sign Translation Detection
extra-detections
extra-detections:
packet-events:
enabled: true # requires PacketEvents
sign-translation:
enabled: true
skip-bedrock-via-floodgate: true
avoid-open-screens: true # wait for the player's screen to clear instead of overwriting it
max-attempts: 4 # rounds to reopen when the client never answers
evade-timeout-seconds: 300 # report once after this long with a screen still open
evade-action: NOTICE # NOTICE | KICK
mods:
Freecam:
detect:
key: "key.freecam.toggle"
punishment:
action: "KICK" # NOTICE | KICK | BAN | IGNORE
reason: "&c..."escalation
Optional warn → kick → ban strike system, off by default.
escalation:
enabled: false
per-mod: true
count-once-per-session: true
reset-after: "30d"
ladder:
- violations: 1
action: KICK # WARN | KICK | BAN | COMMAND | IGNORE
message: "&c&lWarning &7(strike %count%) &fRemove %mod% — next time is a ban."
- violations: 2
action: BAN
duration: "" # empty = permanentCounts are stored per player in violations.yml and managed with /modblocker violations <player> and /modblocker clear <player> [mod].
Full reference: Escalation
See also: Channel Detection, Sign Translation Detection
discord
Optional Discord notifications via DiscordSRV, off by default.
discord:
enabled: false
channel: "" # "" = DiscordSRV main channel | game-channel name | raw channel ID
embed: true
mention: ""
events:
channel-detection: true
sign-detection: true
escalation: true
evade: trueRequires DiscordSRV; without it the section does nothing. Verify with /modblocker discord test. Message templates live in your language file under discord:.
Full reference: Discord Notifications