Punishments
Command permissions normally use wrongpunish.<command>. Root subcommands use wrongpunish.reload, wrongpunish.admin, or wrongpunish.modify. /wrongpunish template also permits staff authorized for that template.
wrongpunish.unban.own,.unmute.own,.unwarn.own: remove only punishments issued by that actor; the full removal permission permits all eligible issuers.wrongpunish.history.revokeor.history.revoke.ban|mute|warnpermits shift-click revocation through history or banlist.wrongpunish.warnings.revokecontrols warning-screen revocation.wrongpunish.history.deletedpermits removed/hidden history. Backend operators receive these defaults; issuer/target hierarchy still applies. Console-issued records require console or an explicit hierarchy bypass.wrongpunish.exemptand.exempt.ban|mute|warn|kick: protect targets..exempt.bypassand.exempt.bypass.<family>override protection and hierarchy.- LuckPerms inherited group weights enforce staff hierarchy. Equal positive weights are protected unless
allow-same-weightis enabled. Offline permission/hierarchy data requires LuckPerms; without it, online permissions are obtained on the owning player scheduler. - IP issuance also checks exemptions and hierarchy for known accounts using that address, including a literal-address target. The lookup is bounded to 1,000 accounts; larger associations require console authority or an explicit global exemption bypass. Newly observed or unknown accounts cannot be evaluated in advance.
- Duration limits use LuckPerms groups or
wrongpunish.limit.<group>. The largest permitted limit applies; an applicable permanent limit permits permanent punishments. Console bypasses limits. Extension mode checks the resulting combined duration as well as the requested duration. wrongpunish.silentpermits explicit silent flags. Silent policy broadcasts are delivered only towrongpunish.notify.silent; public broadcasts receive no silent events.wrongpunish.scopepermits explicit scope overrides. Policies may choose their own scope without this extra command permission.wrongpunish.notify/.notify.broadcastreceive staff notices;.notify.altsreceives relationship alerts.wrongpunish.iphistoryandwrongpunish.ipreportcontrol sensitive address output. Ordinary history and Discord payloads omit address fields.wrongpunish.lockdown.bypasspermits staff admission during lockdown. Configure LuckPerms on Paper for admission-time offline bypass lookup.- Rollback and pruning have dedicated permissions and confirmations bound to the actor and target selection. Pruning now hides inactive records, records who/when/why, audits the bulk SQL mutation and refreshes network views. Punishment, escalation and audit records are retained.
Granting wrongpunish.* includes exemptions and bypasses, so it is intended for trusted administrators. It is not a routine moderator preset. Group permission examples live in docs/PERMISSIONS.md.
REJECT remains the default for manual/different-template duplicates. Same-template continuation uses the overlap policy described above. Manual REPLACE retains removal metadata; manual EXTEND adds to the longest expiration. Shorter replacements remain protected unless explicitly enabled. Manual warnings remain separate entries; kicks are immediately inactive history records.
Durations and flags
Shared punishment flags: -s, --silent, --ip, --server=<server>, --scope=<scope>, --reason="some reason". Template IP mode is controlled by its policy, not an --ip override. Aliases are configured under commands.aliases and updated on reload; canonical names remain available. Alias collisions and malformed names cause validation failure.
Durations: s, m, h, d, w, mo, y; combinations such as 1d12h; readable forms such as 30 minutes, 3 months; and permanent, perm, forever. A month is a fixed 30 days and a year is 365 days. Temporary command variants require a finite duration. Numeric input is overflow-checked, and the maximum supported duration is 100 years.
See Commands for issuance and removal syntax.