Skip to content

NeoModeration 1.4.0 — Coverage

Choose a tag to compare

@KyTDK KyTDK released this 11 Jul 20:13

NeoModeration 1.4.0 — Coverage

NeoModeration 1.4.0 makes it useful every day, not just for cloud moderation.
Everything new runs locally first — no API key required — so spam, strikes,
and extra surfaces cost nothing and never wait on the network. Scope comes from
docs/research/2026-07-11-1.4.0-coverage-research.md.

New

  • Local anti-spam (moderation.spam.*): message rate, duplicate/near-
    duplicate messages, excessive caps (player names exempt), character floods,
    and command-rate limiting. Runs before any cloud call. On by default with
    conservative limits; each check disables individually by setting it to 0.
  • Censor action (moderation.chat.censorLocalDetections): replace locally-
    matched words/links with **** and let the rest of the message through,
    instead of blocking the whole line. Cloud detections still block by default.
  • Progressive strikes (moderation.strikes.*): every detection adds a
    strike that decays over time; reaching a configured rung runs an extra action
    (default: kick at 4). Strike counts show in staff alerts.
  • More surfaces (moderation.surfaces.*): signs, books, anvil renames, and
    configured commands (/msg, /tell, …) now run the local rules through the
    same pipeline as chat. Each surface is independently off / monitor /
    censor / block, and all default to off so upgrades change nothing.
    These are synchronous events, so they use local rules only — the cloud is
    never in the critical path there.
  • Local case history (moderation.cases.*): a SQLite log of every detection
    (player, surface, reason, action, mode, time). Browse it with
    /nmod cases [player] and /nmod case <id>. Content previews are off by
    default (metadata only) to keep the log privacy-clean.
  • Unified detection pipeline: chat, map-art, and every new surface flow
    through one handler, so monitor mode, strikes, staff alerts, and case logging
    behave identically everywhere. Staff alerts now show the surface and strike.
  • Richer /nmod status and /nmod doctor report anti-spam, strikes,
    surfaces, and case-history state; new bStats charts (mode, cloud, censor).

Compatibility

  • Existing 1.3.x configs upgrade with no behavior change: new surfaces
    default off, and missing keys keep prior behavior. Anti-spam and strikes turn
    on with conservative defaults — set moderation.spam.enabled /
    moderation.strikes.enabled to false to keep chat exactly as it was.
  • The SQLite driver ships with Spigot/Paper; if it is ever missing, case history
    disables itself with one warning and moderation continues.
  • English and Spanish locales updated; custom locale files gain the new keys on
    first load.

Verified

  • 74 automated tests pass, including censor mapping, spam checks, strike decay,
    and SQLite case storage.
  • Paper 1.18.2, 1.19.4, 1.20.6, and 1.21.11 pass the full live matrix.
  • Smoke-tested on a live Paper server: spam trip, sign flag, censor, strike
    escalation, /nmod cases, /nmod doctor.

SHA-256 checksums are attached to the GitHub release.