- Tested MC versions
- 1.21

A Complete, Customizable Minecraft Staff Toolkit
Bans • Mutes • Jails • Reports • GUI • History • Vanish
Moderation is a standalone Skript designed to give server administrators and staff teams the tools they need to manage players, handle reports, and keep track of moderation actions - without unnecessary bloat or a collection of separate plugins.
Originally developed to meet my own server's staffing needs, Moderation has evolved into a comprehensive moderation system with customizable messages, configurable commands, permission-based access, and persistent moderation records.
Version 7.0 introduces a major modernization, including a moderation GUI, an expanded vanish system, paged reports, and a series of fixes and internal improvements.
The project is free to use, modify, and adapt to your server.
Features
Player Moderation
- Bans & Unbans - Issue temporary or permanent bans.
- Mutes & Unmutes - Restrict chat, unsigned books, and sign interactions.
- Jails - Create named jail locations and assign timed or permanent sentences.
- Freezing - Prevent movement, clicking, attacking, and taking damage while frozen.
- Warnings - Warn players and record the action.
- Kicks - Remove players with a specified reason.
- Inventory Inspection - Inspect a player's inventory, including their equipment and off-hand.
Reports & Staff Tools
- Player Reports - Let players report rule violations directly to staff.
- Report Assignment - Assign reports to individual moderators.
- Report Resolution - Close assigned reports with a recorded resolution.
- Paged Reports - Browse open and closed reports in manageable pages.
- Moderation History - Review recorded actions, reasons, and staff responsible.
- Command Spy - Monitor commands issued by players.
- Vanish - Hide from ordinary players, with join/quit silence and tab-list hiding.
️Moderation GUI - New in 7.0
Manage players through an inventory interface instead of relying exclusively on commands.
- Browse a player list.
- Search for players.
- Open a dedicated action menu for a selected player.
- Access moderation actions through the GUI.
Use /moderation to open the interface, or /moderation <player> to access a specific player's action menu.
Built for Customization
- Configurable messages and formatting.
- Customizable command names.
- Configurable permission nodes.
- Feature toggles to disable systems you do not need.
- Separate permissions for permanent punishments.
- Immunity permissions for protected players.
- Configurable staff broadcasts and player notifications.
Requirements
This is a Skript, not a plugin. Install Skript first, then place Moderation in your server's plugins/Skript/scripts/ directory and load it using /sk reload.
Commands
The default commands are configurable in the options section.
Commands
Command Description
- /ban <player> <reason> [timespan]
Ban a player - /unban <player> <reason>
Remove a ban - /mute <player> <reason> [timespan]
Mute a player - /kick <player> <reason>
Kick a player - /freeze <player> <reason> [timespan]
Freeze a player - /jail <player> [timespan] <jail> <reason>
Jail a player - /unjail <player>
Release a player - /setjail <name>
Set a jail location - /deljail <name>
Delete a jail location - /jails
List configured jails - /warn <player> <reason>
Warn a player - /invsee <player>
Inspect a player's inventory - /history <player> [clear]
View or clear moderation history - /report <player> <reason>
Report a player - /reports
Browse reports - /reports assign <ID>
Assign a report to yourself - /reports close <ID> <resolution>
Close an assigned report - /reports history [page]
Browse closed reports - /cspy
Toggle command spy - /vanish
Toggle vanish - /moderation [player]
Open the moderation GUI
Timespans support readable durations, such as 1 day. Permanent punishments require permanent-punishment permission.
Permissions
All permissions use the moderation. prefix.
Permissions
Permission Purpose
- moderation.ban
Ban and unban - moderation.ban.perm
Permanent bans - moderation.mute
Mute and unmute - moderation.mute.perm
Permanent mutes - moderation.kick
Kick players - moderation.freeze
Freeze and unfreeze - moderation.freeze.perm
Permanent freezes - moderation.jail
Jail and release players - moderation.jail.perm
Permanent jails - moderation.jail.manage
Manage jail locations - moderation.warn
Issue warnings - moderation.invsee
Inspect inventories - moderation.history
View moderation history - moderation.history.clear
Clear moderation history - moderation.report
Submit reports - moderation.staff
Access staff report management - moderation.report.clear
Clear report data - moderation.commandspy
Use command spy - moderation.vanish
Use vanish - moderation.gui
Access the moderation GUI
Immunity Permissions
Use the following permissions to protect specific roles from corresponding moderation actions:
- moderation.immune.ban
- moderation.immune.mute
- moderation.immune.kick
- moderation.immune.freeze
- moderation.immune.jail
- moderation.immune.invsee
- moderation.immune.warn
- moderation.immune.report
- moderation.immune.vanish
Grant permissions carefully. Permanent-punishment permissions and immunity permissions should generally be restricted to trusted staff.
️Customization
Customization
# ------------------------------------------------------------
# Message Formats
# ------------------------------------------------------------
# Executor feedback
ban usage: &cUsage: &7%command% <player> <reason> [timespan]
unban usage: &cUsage: &7%command% <player> <reason>
mute usage: &cUsage: &7%command% <player> <reason> [timespan]
freeze usage: &cUsage: &7%command% <player> <reason> [timespan]
jail usage: &cUsage: &7%command% <player> [timespan] <jail> <reason>
unjail usage: &cUsage: &7%command% <player>
kick usage: &cUsage: &7%command% <player> <reason>
warn usage: &cUsage: &7%command% <player> <reason>
invsee usage: &cUsage: &7%command% <player>
history usage: &cUsage: &7%command% <player> [clear]
moderation usage: &cUsage: &7/moderation <banned|jailed|muted|frozen|all>
report usage: &cUsage: &7%command% <player> <reason>
vanish usage: &cUsage: &7%command%
modgui usage: &cUsage: &7%command% [player]
# Error messages
no name: &cNo name provided!
name taken: &cThat jail name already exists!
not online: &cThat player is not online!
no player: &cNo player found!
no reason: &cNo reason provided!
no jails: &cNo jails have been set!
no jail: &cNo jail provided or jail does not exist!
not banned: &c%arg-1% is not banned!
not jailed: &c%arg-1% is not jailed!
already banned: &c%arg-1% is already banned!
already jailed: &c%arg-1% is already jailed!
self clear error: &cYou cannot clear your own history!
immunity message: &c%arg-1% is &4IMMUNE&c to this action.
self target: &cYou can't do this to yourself!
no history: &cNo moderation history for %arg-1%!
no reports: &cNo reports have been made yet.
no report id: &cNo report ID provided!
no actions: &cNo resolution action provided!
permission message: &cYou don't have permission to do that!
perm permission: &cYou don't have permission for permanent punishments!
no commands: &cYou cannot execute commands while jailed!
already vanished: &cYou are already vanished!
not vanished: &cYou are not vanished!
# Confirmation messages
set: &aJail set successfully!
deleted: &cJail deleted!
confirm ban: &a%arg-1% has been &cBANNED&a.
confirm unban: &a%arg-1% has been &aUNBANNED&a.
confirm mute: &a%arg-1% has been &cMUTED&a.
confirm unmute: &a%arg-1% has been &aUNMUTED&a.
confirm freeze: &a%arg-1% has been &cFROZEN&a.
confirm unfreeze: &a%arg-1% has been &aTHAWED&a.
confirm jail: &a%arg-1% has been &cJAILED&a.
confirm unjail: &a%arg-1% has been &aUNJAILED&a.
confirm kick: &a%arg-1% has been &cKICKED&a.
confirm warn: &a%arg-1% has been &cWARNED&a.
history cleared: &aHistory for %arg-1% cleared.
confirm report: &a%arg-1% has been &cREPORTED&a.
cancelled: &7Action cancelled.
cmdspy on: &aCommand spy enabled!
cmdspy off: &cCommand spy disabled!
vanish on: &aYou are now vanished.
vanish off: &cYou are no longer vanished.
# Messages to the target player
muted: &cYou have been muted for &7%arg-2%&c. Expires: &7%{muted::%{_uuid}%::time}%
unmuted: &aYou have been unmuted.
jailed: &cYou have been jailed for &7%arg-4%&c. Expires: &7%{jailed::%{_uuid}%::time}%
unjailed: &aYou have been released from jail.
frozen: &cYou are frozen. Expires: &7%{frozen::%{_uuid}%::time}%
unfrozen: &aYou have been thawed.
warned: &cYou have been warned for: &7%arg-2%
banned: &c%arg-2% &rExpires: &7%{banned::%{_uuid}%::time}%
kick msg: &cYou were kicked for: &7%arg-2%
# Server-wide broadcasts
ban broadcast: &7%arg-1% has been &cBANNED&7 by &f%executor%&7! Reason: &f%arg-2%
unban broadcast: &7%arg-1% has been &aUNBANNED&7 by &f%executor%&7!
automatic unbanned broadcast: &7%loop-value% has been &aUNBANNED&7 (time served)!
mute broadcast: &7%arg-1% has been &cMUTED&7 by &f%executor%&7! Reason: &f%arg-2%
unmute broadcast: &7%arg-1% has been &aUNMUTED&7 by &f%executor%&7!
automatic unmuted broadcast: &7%loop-value% has been &aUNMUTED&7 (time served)!
freeze broadcast: &7%arg-1% has been &cFROZEN&7 by &f%executor%&7! Reason: &f%arg-2%
unfreeze broadcast: &7%arg-1% has been &aTHAWED&7 by &f%executor%&7!
automatic unfrozen broadcast: &7%loop-value% has been &aTHAWED&7 (time served)!
jail broadcast: &7%arg-1% has been &cJAILED&7 by &f%executor%&7! Reason: &f%arg-4%
unjail broadcast: &7%arg-1% has been &aUNJAILED&7 by &f%executor%&7!
automatic unjailed broadcast: &7%loop-value% has been &aUNJAILED&7 (time served)!
warn broadcast: &7%arg-1% has been &cWARNED&7 by &f%executor%&7! Reason: &f%arg-2%
kick broadcast: &7%arg-1% has been &cKICKED&7 by &f%executor%&7! Reason: &f%arg-2%
# History log lines
ban log: %{_timestamp}% - &cBANNED&r by &7%executor%&r reason: %arg-2%
unban log: %{_timestamp}% - &aUNBANNED&r by &7%executor%&r reason: %arg-2%
automatic unban log: %{_timestamp}% - &aUNBANNED&r automatically (time expired)
mute log: %{_timestamp}% - &cMUTED&r by &7%executor%&r reason: %arg-2%
unmute log: %{_timestamp}% - &aUNMUTED&r by &7%executor%&r
automatic unmute log: %{_timestamp}% - &aUNMUTED&r automatically (time expired)
freeze log: %{_timestamp}% - &cFROZEN&r by &7%executor%&r reason: %arg-2%
unfreeze log: %{_timestamp}% - &aTHAWED&r by &7%executor%&r
automatic unfreeze log: %{_timestamp}% - &aTHAWED&r automatically (time expired)
jail log: %{_timestamp}% - &cJAILED&r by &7%executor%&r reason: %arg-4%
unjail log: %{_timestamp}% - &aUNJAILED&r by &7%executor%&r
automatic unjail log: %{_timestamp}% - &aUNJAILED&r automatically (time expired)
warn log: %{_timestamp}% - &cWARNED&r by &7%executor%&r reason: %arg-2%
kick log: %{_timestamp}% - &cKICKED&r by &7%executor%&r reason: %arg-2%
invsee log: %{_timestamp}% - &cINVSEE&r by &7%executor%&r
history cleared log: %{_timestamp}% - &aHISTORY CLEARED&r by %executor%
report log: %{_timestamp}% - &cREPORTED&r by &7%executor%&r for %arg-2%
vanish log: %{_timestamp}% - &bVANISHED&r by &7%executor%&r
unvanish log: %{_timestamp}% - &bUNVANISHED&r by &7%executor%&r
# Report system messages
staff reported message: &6[Report] &f%executor% &creported &f%arg-1% &7for &f%arg-2%&7.
no open reports: &7There are no open reports.
close unassigned: &cYou cannot close an unassigned report!
not assigned: &cYou are not assigned to this report!
already assigned: &cThis report is already assigned!
assigned report: &6[Assigned Report]
unassigned report: &c[Unassigned Report]
closed report: &a[Closed Report]
active reports: &6[Open Report]
you assigned: &aYou have been assigned to Report ID &e%arg-2%&a.
closed: &aReport ID &e%arg-2% &ahas been closed.
no closed reports: &7There are no closed reports.
page header: &8&m----------&r &6Reports &7(Page %page%/%max%) &8&m----------
page footer: &7Use &e/reports %type% <page> &7to navigate.
# Command spy
cmdspy message: &6%executor% &7issued &c/%full command%
# Vanish silent messages
vanish join silent: &8[Silent] &7%player% joined (vanished)
vanish quit silent: &8[Silent] &7%player% left (vanished)
# Vanish fake leave/join messages
join message: &a%player% has joined the game
left message: &c%player% has left the game
# ------------------------------------------------------------
# GUI Prompts
# ------------------------------------------------------------
gui search prompt: &bType a player name to search (or &fcancel&b)
gui ban prompt: &cType ban reason (or &fcancel&c). Optional: add timespan at end e.g. &f1d
gui warn prompt: &eType warn reason (or &fcancel&e)
gui kick prompt: &7Type kick reason (or &fcancel&7)
gui jail prompt: &5Type the jail reason for &f%target% &5(or &fcancel&5)
gui target lost: &cTarget lost. Open the GUI again.
gui lists empty: &7None
# ------------------------------------------------------------
# Message Options (broadcast / chat / both)
# ------------------------------------------------------------
mute_type: both
freeze_type: both
jail_type: both
warn_type: both
ban_type: enabled
kick_type: enabled
# ------------------------------------------------------------
# Feature Toggles
# ------------------------------------------------------------
ban enabled: true
mute enabled: true
freeze enabled: true
jail enabled: true
kick enabled: true
warn enabled: true
history enabled: true
report enabled: true
commandspy enabled: true
vanish enabled: true
modgui enabled: true
self clear: true
log reports: true
reports per page: 5
gui players per page: 28
What's New in 7.0?
Version 7.0 is a substantial update to 6.5.
Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta