Warden – Minecraft Moderation Plugin Warden is a modern and powerful moderation plugin for Minecraft servers. It provides all the tools needed to keep your community safe and well-managed, including a real-time web interface, detailed logging, and a complete set of punishment commands.
Comprehensive Punishment System: Ban, tempban, IP ban, mute, tempmute, warn, and kick players.
Web Interface: Modern, real-time dashboard with player head textures and server stats.
Detailed Logging: Tracks all staff actions for a complete audit trail.
Player History Lookup: View a player’s punishment history using /lookup.
Configurable Messages: Customize messages to match your server’s style.
Auto-Punishments: Automatically punish players who reach a set number of warnings.
Real-Time Updates: See new punishments instantly on the web dashboard.
Code (YAML):
# Warden Configuration # A comprehensive moderation system with web interface
# Server Configuration server: # Server name for punishment tracking (this is for the api usage, if you don't use web api you don't need to change it) name: "Server"
# Database Configuration database: # Database type: sqlite, mysql type: sqlite
# SQLite file path (only used if type is sqlite) sqlite-file: "database.db" # MySQL settings (only used if type is mysql) host: "localhost" port: 3306
database: "warden" username: "root" password: "" # Connection pool settings pool-size: 10
connection-timeout: 30000
idle-timeout: 600000
max-lifetime: 1800000
# Web Interface Configuration web: # Enable web interface enabled: true
# Port for web interface port: 8080
# Host address (0.0.0.0 for all interfaces) host: "0.0.0.0"
# Punishment Settings punishments: # Broadcast punishments to all players broadcast:
bans: true
tempbans: true
mutes: true
tempmutes: true
warns: false
unbans: true
unmutes: true
# Default reasons default-reasons:
ban: "Banned by staff" tempban: "Temporarily banned by staff" mute: "Muted by staff" tempmute: "Temporarily muted by staff" warn: "Warned by staff" banip: "IP banned by staff" # Maximum punishment durations (in seconds, -1 for no limit) max-durations:
tempban: -1
tempmute: -1
# Warning system warnings: # Enable automatic punishment after X warnings auto-punish:
enabled: true
# Number of warnings before auto-punishment threshold: 3
# Punishment type: ban, tempban, mute, tempmute type: tempban
# Duration for tempban/tempmute (in seconds) duration: 86400
# Reason for auto-punishment reason: "Too many warnings"
# Logging Settings logging: # Log all punishments to console console: true
# Log all punishments to file file:
enabled: true
path: "plugins/Warden/logs/" # Log player connections and disconnections connections: true
# Advanced Settings advanced: # Cache punishment data for better performance cache:
enabled: true
# Cache duration in seconds duration: 300
Code (YAML):
# Warden Messages Configuration # Use & for color codes, %player% for player names, %reason% for reasons, etc.
# General Messages general:
no-permission: "&cYou don't have permission to use this command!" player-not-found: "&cPlayer '%player%' not found!" invalid-time: "&cInvalid time format! Use: 1d, 2h, 30m, etc." invalid-arguments: "&cInvalid arguments! Usage: %usage%" reload-success: "&aWarden has been reloaded successfully!" plugin-info: "&6Warden v%version%" help: -
"&6&m-----------------&r &6Warden Help &6&m-----------------" -
"&e/warden reload &7- Reloads the plugin configuration." -
"&e/warden info &7- Shows plugin information." -
"&e/warden web &7- Displays the web interface URL." -
"&e/ban <player> [reason] &7- Permanently bans a player." -
"&e/tempban <player> <duration> [reason] &7- Temporarily bans a player." -
"&e/unban <player> &7- Unbans a player." -
"&e/mute <player> [reason] &7- Permanently mutes a player." -
"&e/tempmute <player> <duration> [reason] &7- Temporarily mutes a player." -
"&e/unmute <player> &7- Unmutes a player." -
"&e/warn <player> [reason] &7- Warns a player." -
"&e/lookup <player> &7- Looks up a player's punishment history." -
"&e/banip <player|ip> [reason] &7- Bans an IP address." -
"&e/unbanip <ip> &7- Unbans an IP address." -
"&6&m---------------------------------------------"
# Ban Messages ban:
success: "&aSuccessfully banned &c%player% &afor: &f%reason%" broadcast: "&c%player% &7has been banned by &c%staff% &7for: &f%reason%" already-banned: "&c%player% is already banned!" cannot-ban-self: "&cYou cannot ban yourself!" cannot-ban-exempt: "&cYou cannot ban %player% - they are exempt!" kicked: "&cYou have been banned from this server!\n&7Reason: &f%reason%\n&7Banned by: &c%staff%\n&7Appeal at: &bexample.com"
# Tempban Messages tempban:
success: "&aSuccessfully temp-banned &c%player% &afor &e%duration% &afor: &f%reason%" broadcast: "&c%player% &7has been temp-banned by &c%staff% &7for &e%duration% &7for: &f%reason%" already-banned: "&c%player% is already banned!" cannot-ban-self: "&cYou cannot ban yourself!" cannot-ban-exempt: "&cYou cannot ban %player% - they are exempt!" kicked: "&cYou have been temporarily banned from this server!\n&7Reason: &f%reason%\n&7Duration: &e%duration%\n&7Banned by: &c%staff%\n&7Expires: &e%expires%\n&7Appeal at: &bexample.com"
# Unban Messages unban:
success: "&aSuccessfully unbanned &c%player%!" broadcast: "&c%player% &7has been unbanned by &a%staff%" not-banned: "&c%player% is not banned!"
# Mute Messages mute:
success: "&aSuccessfully muted &c%player% &afor: &f%reason%" broadcast: "&c%player% &7has been muted by &c%staff% &7for: &f%reason%" already-muted: "&c%player% is already muted!" cannot-mute-self: "&cYou cannot mute yourself!" cannot-mute-exempt: "&cYou cannot mute %player% - they are exempt!" muted-message: "&cYou are muted! Reason: &f%reason%"
# Tempmute Messages tempmute:
success: "&aSuccessfully temp-muted &c%player% &afor &e%duration% &afor: &f%reason%" broadcast: "&c%player% &7has been temp-muted by &c%staff% &7for &e%duration% &7for: &f%reason%" already-muted: "&c%player% is already muted!" cannot-mute-self: "&cYou cannot mute yourself!" cannot-mute-exempt: "&cYou cannot mute %player% - they are exempt!" muted-message: "&cYou are temporarily muted! Reason: &f%reason% &7(Expires: &e%expires%&7)"
# Unmute Messages unmute:
success: "&aSuccessfully unmuted &c%player%!" broadcast: "&c%player% &7has been unmuted by &a%staff%" not-muted: "&c%player% is not muted!"
# Warn Messages warn:
success: "&aSuccessfully warned &c%player% &afor: &f%reason%" broadcast: "&c%player% &7has been warned by &c%staff% &7for: &f%reason%" received: "&6You have been warned by &c%staff% &6for: &f%reason%" auto-punish: "&c%player% &7has been automatically punished for reaching &c%warnings% &7warnings!"
# Ban IP Messages banip:
success: "&aSuccessfully IP banned &c%target% &afor: &f%reason%" broadcast: "&c%target% &7has been IP banned by &c%staff% &7for: &f%reason%" already-banned: "&cIP %target% is already banned!" invalid-ip: "&cInvalid IP address format!" kicked: "&cYour IP has been banned from this server!\n&7Reason: &f%reason%\n&7Banned by: &c%staff%\n&7Appeal at: &bexample.com"
# Unban IP Messages unbanip:
success: "&aSuccessfully unbanned IP &c%target%!" not-banned: "&cIP %target% is not banned!"
/warden web – Get web interface URL – warden.admin
/warden help – List all plugin commands – warden.admin
Other Permissions:
warden.* – Access all Warden commands – op
warden.admin – Access administrative commands – op
warden.bypass – Bypass all punishments – false
warden.notify – Receive punishment notifications – op
Web Interface: The web interface is available at http://<your server ip>:8080 and can be configured in config.yml. It provides real-time monitoring of punishments, server stats, and a filterable list of recent actions.
Web APIs: /api/punishments – GET – List of punishments. Optional parameters: playerName, type (ban, mute, warn, all), page, limit
/api/stats – GET – Server punishment statistics
Example Usage:
- Get all punishments: `
http://<your-server-ip>:8080/api/punishments`
- Get bans for a specific player: `
http://<your-server-ip>:8080/api/punishments?playerName=Notch&type=ban`
- Get server statistics: `
http://<your-server-ip>:8080/api/stats`
Installation:
Download the latest Warden plugin.
Place Warden.jar in your server’s plugins directory.
Restart your server.
Configure the plugin via /plugins/Warden/config.yml and messages.yml.
Use /warden reload to apply any changes.
DO NOT use reviews section as bug reports — they will be ignored. If you encounter an issue with the plugin, contact me directly via DM.
If you’d like to test the plugin before purchasing, please contact me via DM and I’ll set up a server with the plugin for you to try.