Tags
Creators
Details
1.7.0
Compatibility
Changes
NeoModeration 1.7.0
Server ads blocked on a new install, far fewer false alarms from everyday chat, every message in the player's own language, and staff tools you can run from chat. Local rules still need no account.
New
- Blocks ads for other Minecraft servers on a new install: public IP addresses, any address with a port,
play.andmc.style addresses, free hosts such asaternos.me, and "join myserver.net", including "play dot server dot net". Ordinary links, Discord invites, browser games ("lets play skribbl.io") and version numbers stay clean. Let your own address through with/nmod allow url add <address>; the first admin to join gets a button for it. - Tells a player why their message, sign, book, item name or command was stopped (
moderation.tellPlayers). - Every message is written out in English, Spanish, French, German, Portuguese and Turkish, and each player reads them in their own game language (
perPlayerLanguage). Dates read the way each language writes them, and so do kick and ban reasons you have not set yourself. A prefix you change in your server's language shows for every player. - Starter word lists for Spanish, French, German, Portuguese and Turkish follow
localeon a new install; choose others withmoderation.offline.languagePacks. The English list adds 8 slurs with their plurals, and common spellings such as "fvck". - Some words are everyday in one language and banned in another: French "retard" (late), the Spanish name Kike, Swedish "slut" (end), "puto" in Portugal, Danish and Norwegian "fag" (a school subject). They pass on servers in that language. With
moderation.offline.trustPlayerLanguage: truethey also pass for a player whose game language it is, in a message written in that language. A common English word that aims an insult, such as "you", "dirty" or "shut up", still gets the message blocked. The setting is off by default, because every player picks their own game language. - Write a banned word with a space, such as "ass hole", to catch it however it is spaced.
/nmod casespages through older cases, and each case has buttons to resolve or dismiss it, allow the word or mute the player for 10 minutes./nmod mute <player> [duration]and/nmod unmute <player>. A mute covers private messages too (/msg,/tell,/rand any alias the server has for them, such as EssentialsX's/m), and/me, sending/mail,/teammsgand mcMMO party chat. Another plugin's command with a shared name, such as Towny's/t, still works./nmod discord <webhook URL>sends alerts to a Discord channel, batched so a raid cannot flood it and with mentions turned off./nmod discord testchecks it, and/nmod doctorsays when Discord refuses alerts and why.- Moderators with the new
neomoderation.moderatepermission can use cases, mutes and tests while settings stay with admins. - During a raid, staff alerts in chat pause. Alerts about one player pause after three in 30 seconds, and all alerts after a dozen in 10 seconds or 30 in a minute. A pause ends after a quiet minute or five minutes, so a raid in waves is one pause. Then one line says how many staff missed, and the console and case history still get every alert.
/nmod trialsays what a trial sends before anything is sent,/nmod trial startstarts it, and/nmod trial statuscounts what the cloud caught over the whole trial./nmod surfaceis a clickable menu with a button for each setting.- Map art: a map drawn a moment ago is checked at once, an edited map is checked again, and a flagged map hanging in an item frame is taken down without blaming the player who found it; the cloud request names only the frame. Each player can have 30 new pictures checked an hour (
moderation.mapArt.checksPerPlayerPerHour), so nobody can use up your credits by drawing maps, and the console says when a player reaches it. - Admins hear about a newer release once each time the server starts, when they join.
Fixes
- Fewer false alarms. Everyday words that together spell a banned word pass: "put a torch here", "put a 5 tick delay", and on a Spanish server "vi a dos creepers" or "vino Mari con su novio". So do "let's hit him", "who're you", "took 5 hits" and "455 diamonds". "scam" is no longer a banned word, so players can warn each other about scams. Disguised words such as "5h1t", "f uck", "f'uck", "ni gger" and "k y s" are still caught, and so is a word split into pieces from different languages.
- Messages in capitals go out in lower case instead of being blocked, the way the player's language writes them, and only in enforce mode; colours another plugin added stay. Spam is only blocked: it earns no strike and runs no action.
- In cloud monitor mode, the trial's default, chat no longer waits for the cloud's answer. A burst of chat waits its turn in a short queue, the cloud is paused only when it is slow or unreachable itself, and a flagged answer that comes too late still alerts staff.
/nmod statusand/nmod doctorcount the messages the cloud had no time to check because chat was busy, instead of reporting the cloud as down. /nmod onand/nmod offreplied with a raw message key instead of a sentence.- The update check had told no install about a new version since the repository moved.
- A config without
cloudModefollowsmodeagain, and a config without a strikes section no longer turns on a kick ladder. - The same message counts as spam only when it is repeated within 30 seconds, so "gg" after each game is fine.
/msg <player>checks only what follows the recipient's name.- Locale files you never edited pick up new and changed messages on update; texts you edited are kept, and a locale file with a typo is left untouched instead of being replaced, with the line to fix named in the console.
- Keys and webhook URLs typed into
/nmod setup,/nmod key setand/nmod discordno longer appear in the server log. - Chat that another plugin sends for a player, such as
/sudoor a chat game, is checked by the local rules without holding the server for the cloud. Spigot used to let it through unchecked, and with a cloud key Paper held the server until the cloud answered. - Saving mutes no longer holds the server, and two admins changing settings at once on Folia can no longer damage
config.yml.
Upgrading
Your config, edited word lists and edited messages are kept. An upgraded server keeps ad blocking off (moderation.offline.blockServerAds: false) and, on a Spanish, French, German, Portuguese or Turkish server, its language's word list off (moderation.offline.languagePacks: []); the console says how to turn each on. A server whose own language file holds edited messages keeps showing them to every player (perPlayerLanguage: false). An unedited 1.5 to 1.6.6 starter list is replaced with the new one, which blocks 8 more slurs and their plurals. Some are everyday words in other languages, such as the Spanish name Kike and Danish "fag" (a school subject). The console names them, and moderation.offline.trustPlayerLanguage: true lets players use them when they write in their own language. Players are now told why a message was stopped; set moderation.tellPlayers: false to keep 1.6's silence.
After installing, run /nmod doctor and /nmod test badword. /nmod mode enforce makes local rules block and /nmod cloudmode enforce does the same for cloud decisions; monitor makes either one only alert staff.
Before release, every check ran on Paper 1.18.2, 1.19.4, 1.20.6, 1.21.11, 26.1.2, 26.2 and 26.3, on Folia 1.21.11 and on Spigot 1.21.11, with a game client chatting on each.
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:b3WivO4t:WK4S7LsQ"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:b3WivO4t:WK4S7LsQ"
}

