(Out soon!) DonutSMP-Offend-GUI-Enterprise-version (not the basic one!!) yup
CoffeeOffend - Advanced Punishment & Moderation System
CoffeeOffend is a next-generation Spigot/Paper moderation plugin designed to give server administrators full control over player behavior. With custom kick screens, a robust warn-to-punish system, live inventory tracking, offline notification queuing, and native Simple Voice Chat integration, CoffeeOffend is the only moderation plugin your network will ever need.Built for Java 17, 21, 25, 26+ and Minecraft 1.20+ (including Folia support).
Key Features
1.
Split Layout Configs
Forget cluttered config files. Custom layouts are separated cleanly into three distinct config files:- offendlayouts.yml (Bans & IP-Bans)
- mutelayouts.yml (Chat & Command Mutes)
- warnlayouts.yml (Warnings & Thresholds)
2.
Advanced Mute System & Simple Voice Chat Integration
When a player is muted via /mute <player> <layout> [duration]:- Chat Blocking: Instantly blocks normal chat.
- Command Blocking: Prevents direct messaging commands: /msg, /whisper, /w, /tell, /t, /pm, /r, /reply, /me, etc.
- Microphone Blocking: Automatically hooks into Simple Voice Chat (if installed) to intercept and block audio packets (MicrophonePacketEvent). If they try to speak in game, their voice remains fully muted on the server!
- Mute Attempt Warning: Trying to message triggers a custom notification: You have been muted for <reason> (<time>). You can't talk, chat, or message!
- 47 Default Mute Layouts: Includes preconfigured layouts for Spam, Racism, Toxicity, Advertising, Scamming, and 42 other chat offenses.
3.
Warn-to-Punish System (/warn <player> <layout>)
- Incremental Logs: Warn details (including Warn ID and Operator) are stored in bansystem/warns.yml.
- Screen Notifications: Triggers an immersive visual warning—sends configured lines to their chat, plays a warning sound, and flashes a big &c&lWARNED! title across their screen.
- Automated Threshold Escalation: Warn layouts dictate custom thresholds (e.g. warns: 3). Once reached, the plugin automatically triggers the mapped punishment:
- Mute: Mutes the player for a default duration using a layout from mutelayouts.yml.
- Offend: Bans the player instantly using a layout from offendlayouts.yml.
- 49 Default Warn Layouts: Includes preconfigured rules for Griefing, Spawn Trap, Theft, Claim Abuse, AFK Farming, and 44 other violations.
4.
Live Inventory Seizure & Inspection GUI (/offends)
Banning a player using a layout with wipe: true enables the ultimate evidence/moderation tool:- Inventory Snapshot: Saves a 100% accurate snapshot of their inventory, armor contents, off-hand item, and enderchest.
- Offline/Online UUID Bug Fix: Uses advanced UUID resolution to ensure inventory snapshots work flawlessly, even on offline/cracked networks or behind BungeeCord/Velocity proxies.
- Inspect GUI: Open /offends, click a player's head, and inspect their actual inventory.
- Active Taking: Admins can physically take items out of the inspect GUI. When the player is unbanned and logs back in, whatever the admin took is permanently removed from their inventory!
- Wipe Configs: If wipe: true is set, their inventory is cleared on ban. If wipe: false, they keep their items on unban, but any items stolen by moderators from the inspect GUI are still stripped upon login.
5.
Queue-Based Offline Support
Punishments and notifications are never lost if players are offline:- If a player is warned or muted while offline, the details are stored in warns.yml and mutes.yml with a notified: false flag.
- Upon logging back in, PlayerJoinListener waits 2–3 seconds (to ensure they have fully loaded) and then displays the warning screens, sounds, and layouts to them.
Custom Placeholders
Use these placeholders dynamically across your layout files (offendlayouts.yml, mutelayouts.yml, warnlayouts.yml):| Placeholder | Description | Example Output |
|---|---|---|
| %PREFIX% | The custom server branding prefix defined in config.yml | §c» Coffee Offend |
| %OPERATOR% | The staff member or console who executed the command | Notch |
| %PLAYER% | The username of the player being punished | Steve |
| %LAYOUT% | The layout name / reason for the punishment | Spam |
| %DURATION% / %TIME% | The initial duration of the ban or mute | 14 Days |
| %REMAINING_TIME% | The current remaining duration of a mute | 5 Minutes 12 Seconds |
| %bnid_random% | A randomly generated, secure 8-character unique ID | #X9A2F4L1 |
Commands & Permissions
Commands
- /offend <player> <layout> [time] (Alias: /ban <player> <layout> [time]) — Punish/Ban a player.
- /unoffend <player/banId> (Alias: /unban <player/banId>) — Unban a player by username or specific ban ID.
- /ipoffend <player> <layout> [time] (Alias: /ipban <player> <layout> [time]) — Ban a player's IP address.
- /unipoffend <player/banId> (Alias: /unipban <player/banId>) — Unban an IP address by username or specific ban ID.
- /mute <player> <layout> [time] — Mute a player (text and voice) using a specific layout and optional time.
- /unmute <player> — Unmute a player.
- /warn <player> <layout> — Issue a warning to a player under a specific warn layout.
- /offends — Open the punished players dashboard (GUI).
- /checkban <player/banId> (Alias: /checkoffend <player/banId>) — Renders a detailed chat printout, complete with their skin-rendered playerhead.
- /coffeeoffend reload — Reloads configs, active bans, mutes, and caches.
Permissions
- CoffeeOffend.admin — Access to reload, bypasses, and all command permissions.
- CoffeeOffend.bypass — Immunity; players with this permission cannot be banned, muted, or warned.
- CoffeeOffend.command.offend — Access to /offend, /unoffend, /ipoffend, and /unipoffend.
- CoffeeOffend.command.offends — Access to open /offends GUI and inspect inventories.
- CoffeeOffend.command.checkban — Access to /checkban and /checkoffend.
- CoffeeOffend.command.mute — Access to /mute and /unmute.
- CoffeeOffend.command.warn — Access to /warn.
