All Products / Minecraft / Plugins / PhantomBans | Complete Moderation Suite

v1.3.0: 1.3.0 | Write any message as multiple lines

09 August 2026

PhantomBans v1.3.0
Every message PhantomBans sends can now be written as a list of lines instead of one cramped string, so you can build boxed, detailed notices straight from config.

๐Ÿ“ Multi-Line Messages

Every key in messages.yml, plus format and format-silent on every broadcast in appearance.yml, now accepts either a single string exactly as before, or a list of lines. A list is sent as one chat message with a line break between entries.

Before

YAML
mute:
  blocked: "<prefix> <red>You are muted.</red> <gray>Expires: <white>{expiry}</white></gray>"

After

YAML
mute:
  blocked:
    - "<dark_gray><strikethrough>                                                  </strikethrough></dark_gray>"
    - "<color:#FF3A6E><bold>MUTED</bold></color> <gray>You cannot send messages right now.</gray>"
    - ""
    - "<dark_gray>|</dark_gray> <gray>Reason</gray> <dark_gray>ยป</dark_gray> <white>{reason}</white>"
    - "<dark_gray>|</dark_gray> <gray>Staff</gray> <dark_gray>ยป</dark_gray> <white>{staff}</white>"
    - "<dark_gray>|</dark_gray> <gray>Expires</gray> <dark_gray>ยป</dark_gray> <color:#1AFFB2>{expiry}</color>"
    - "<dark_gray><strikethrough>                                                  </strikethrough></dark_gray>"

  • An empty entry ("") renders as a blank line
  • Put <prefix> only on the line you want it on. A boxed layout usually drops it and uses a header line instead
  • <newline> inside a single string does the same job, if you prefer one-liners
  • Single strings are untouched, so nothing breaks on upgrade

mute.blocked and warn.received now ship as boxed multi-line lists by default. Broadcast defaults stay on one line on purpose, since they reach every player online and a multi-line announcement there turns into chat spam quickly.
๐Ÿ”ค Richer Placeholders on Mute and Warn

mute.blocked and warn.received now receive the full punishment placeholder set, not just {expiry} and {reason}:
PlaceholderFills in
{player}The punished player's name
{staff}Who issued the punishment
{reason}The punishment reason
{duration}The length of a temporary punishment
{expiry}When the punishment expires
{date} / {start_date}When the punishment was issued
{server} / {scope}The server or network scope
{id}The punishment ID
{type}BAN, MUTE, WARN, and so on
These are the same names the ban and kick screens and the broadcasts already used, so one placeholder vocabulary now covers every punishment-driven message.
๐Ÿ“Œ Where To Stay On One Line

  • Row templates (history.line, lists.line, alts.line, notes.line, general.audit-line, import.breakdown) accept a list too, but they repeat once per row, so a multi-line row will flood a paginated list
  • Broadcasts go to everyone online. Multi-line works, but keep it short
  • discord.* keys are embed titles rather than chat, and stay single-line

๐Ÿ“ Upgrade Notes

The new multi-line defaults will not appear on an existing server unless you regenerate messages.yml. The config updater adds new keys and removes obsolete ones, but it never overwrites a value you already have, so your existing single-line mute.blocked and warn.received are kept as they are.

To pick up the new defaults: stop the server, replace the jar in plugins/, delete plugins/PhantomBans/messages.yml so it regenerates, and start the server.

To keep your own wording: leave the file alone. Back it up and hand-edit just those two keys into list form, then run /phantombans reload. Any other key can be converted the same way, at any time.

YAML
mute:
  blocked:
    - "your first line"
    - "your second line"

To do nothing at all: that is fine too. Every existing single-line value keeps rendering exactly as it did in 1.2.1. This release is additive, with no forced migration and no change to bans, mutes, warns, or the network sync layer.
๐Ÿ“ฆ Downloads
FileFor
PhantomBans-1.3.0.jarYour Paper or Spigot backend server. This is the plugin
PhantomBans-Velocity-1.3.0.jarOptional Velocity proxy gate
PhantomBans-Bungee-1.3.0.jarOptional BungeeCord or Waterfall proxy gate
PhantomBans-All-1.3.0.zipAll three, plus a README

๐Ÿงช Compatibility

Minecraft 1.21 and newer, Java 21.
Need help or found a bug? Join the Discord.
Multi-line messages guide | Documentation | Join the Discord

Enjoying the plugin? A โญ review goes a long way!

v1.2.1: 1.2.1 | Turn the report system off with one switch

02 August 2026

PhantomBans v1.2.1
One config switch removes the report system completely, so another report plugin can take over cleanly.

๐Ÿ”• Turn Reports Off Entirely

config.yml now has a features: block with one switch:

YAML
features:
  reports: true

Set it to false and the report system is gone from PhantomBans:

  • /report and /reports are unregistered from the server
  • The Reports button disappears from the /punish menu
  • The report lines drop out of /pb help
  • The reports Discord webhook stops firing

๐Ÿ” Clean Handoff to Another Report Plugin

The commands are properly unregistered, not just blocked, so another plugin that provides /report takes over the label cleanly. No command clash, no "unknown command", and nothing to rename on either side.
โ™ป๏ธ Reload, Not Restart

The toggle applies on /pb reload, so you can flip it either way without restarting. Existing report rows stay in the database and come back if you switch the feature on again.
๐Ÿ“ฆ Install

Stop the server, replace the old jar in plugins/ with PhantomBans-1.2.1.jar, and start it again. The new features: block is added to your existing config.yml automatically.
Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A โญ review goes a long way!

v1.2.0: 1.2.0 | Fully Configurable Menus & Customization Update

21 July 2026

PhantomBans v1.2.0
Every GUI is now fully configurable, with two new placeholders and the alt-detection alert moved into config.

๐ŸŽจ Every Menu Is Now Configurable

A new plugins/PhantomBans/menus/ folder gives you one file per GUI, punish.yml, history.yml, staffhistory.yml, lookup.yml, reports.yml, appeals.yml, staffnotes.yml, duration.yml, reason.yml, template.yml, confirmation.yml, plus a shared common.yml.

  • Every item is yours to shape: material, display name, lore, glow, stack amount, custom model data, and inventory slot
  • Titles and row counts: configurable per menu
  • Shared chrome: common.yml holds the border filler, brand banner, target head, close button, and page controls, edit once and every menu updates
  • Custom model data: every button takes a custom-model-data key so a resource pack can reskin any icon
  • Clean colors: the default menu italic is suppressed, so gradients and hex codes render exactly as you write them

๐Ÿ–ผ Per-Menu Filler Designs

Each menu has a fillers block where you can stack as many named fillers as you like, each with its own material, so you can build layered pane designs per menu.

YAML
fillers:
  border:
    material: BLACK_STAINED_GLASS_PANE
    slots: border
  accent:
    material: PURPLE_STAINED_GLASS_PANE
    slots: [3, 5]

slots accepts the keyword border, the keyword fill, or an explicit list of slot numbers. Fillers paint first, so buttons always sit on top. Remove the fillers block from a menu to fall back to the single border pane in common.yml.
๐Ÿ“… Two New Punishment Placeholders

Available in the ban / temp-ban / IP-ban screens (screens.yml), the kick screen, and the punishment broadcasts (appearance.yml):

  • {date} (alias {start_date}) the date and time the punishment was issued
  • {server} (alias {scope}) the server or network scope the punishment applies to, falling back to this server's name when unset

The ban screens and broadcasts also now expose {duration} and {expiry} for convenience.
๐Ÿšจ Alt-Detection Alert Moved Into Config

The staff alt-detection alert on join was hardcoded (prefix and all). It now lives in messages.yml as lookup.alt-detected with {player} and {count} placeholders, and ships with an editable hover tooltip. The same move fixed a bug where a few lines rendered a broken prefix.

The message prefix is now a single source: editing prefix in messages.yml changes it everywhere, alerts and broadcasts included.
๐Ÿ›ก Security

Player-supplied text (report reasons, appeal messages, staff notes, evidence URLs, punishment reasons) is now escaped before it reaches a menu or broadcast, so a player can't inject color or click tags into what staff see.
๐Ÿ“ฆ Install

  1. Stop the server.
  2. Replace the old jar with PhantomBans-1.2.0.jar.
  3. Delete (or back up and delete) your messages.yml so the new keys and corrected prefix handling regenerate. The new menus/ folder is created automatically on start.
  4. Start the server.

On an existing install, messages.yml keeps your saved values, delete or regenerate it to pick up the new default wording.
Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A โญ review goes a long way!

v1.1.0: 1.1.0 | Network sync: PhantomBans goes multi-server

30 June 2026

PhantomBans v1.1.0
Punishments now sync across your whole network, with optional proxy support.

๐ŸŒ Network Sync

PhantomBans now works across a multi-server network, not just a single server. Ban, mute, unban, and unmute actions propagate to every backend automatically, so a punishment on one server takes effect everywhere.

  • Instant cross-server enforcement: a banned player is kicked network-wide the moment the ban lands, no matter which server issued it
  • Network-wide broadcasts: bans, mutes, and their reversals announce across all servers
  • Server-wide commands propagate: /muteall and /unmuteall apply across the network
  • Silent stays silent: silent (-s) punishments remain hidden everywhere

Network sync is opt-in. Enable it in the new network.yml. Single-server setups are unaffected and need no changes.
โš ๏ธ One Requirement: A Shared Database

For network sync, every backend server must point at the same shared MySQL or MariaDB database. SQLite or a separate database per server will not sync, and is the single most common setup mistake. One network, one database.
๐Ÿ›ก Proxy Support (Optional)

Two optional companion jars stop banned and IP-banned players right at the proxy, before they ever reach a backend. They read the same shared database, and the connection fails open, so a database hiccup never locks players out of your network.

  • Velocity (recommended)
  • BungeeCord (experimental)

Optional, the backend always enforces punishments on its own. The proxy jars just turn players away one step earlier.
๐Ÿ”ง Fixes & Hardening

  • Plain bans and mutes no longer affect other accounts that happen to share an IP. Only /ipban and /ipmute enforce by IP
  • Backends now always enforce bans even behind a proxy, closing an edge case where a player could slip through
  • Added database indexes for faster punishment lookups on large histories
  • Clearer database connection error messages to make setup mistakes easier to spot
  • General stability and thread-safety improvements across the sync layer

๐Ÿ“ฆ Install

  1. Replace the jar on every backend and restart.
  2. Point all backends at one shared MySQL or MariaDB database.
  3. Enable sync in network.yml.
  4. Optionally drop the Velocity or BungeeCord jar on your proxy for boundary-level blocking.

Need help setting up network sync? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A โญ review goes a long way!

v1.0.0: PhantomBans

23 June 2026


๐Ÿ‘ป PhantomBans
A complete GUI punishment suite: bans, mutes, warns, silent punishments, reports, and appeals
By zArrowTan, part of Arrow Plugins.

๐Ÿ“‹ Overview

PhantomBans is a full moderation suite for your staff team. Bans, IP-bans, mutes, warns, and kicks (permanent or temporary), silent punishments that only staff can see, a reports and appeals workflow, staff notes, deep player lookups, alt detection, GeoIP and VPN blocking, and Discord webhooks. Almost everything runs through clean paginated GUIs, every screen and message is editable, and the jar stays tiny by loading its libraries at runtime. Run a network? Punishments sync across all your servers, with optional proxy support. Switching from another plugin? Bring your punishment history with you.

GHF4ImbxBn.png

The Active Reports menu

โš–๏ธ Punishment Types

  • Bans & IP-Bans: permanent or temporary, with custom ban screens
  • Mutes & IP-Mutes: permanent or temporary, enforced in chat
  • Warns: with configurable thresholds that auto-escalate (for example, 5 warns mutes, 10 bans for a week, 15 bans permanently, all editable)
  • Kicks: with a custom kick screen
  • Punishment templates: escalating ladders of steps per offence, so repeat offenders climb the punishment chain automatically

EKsCmWrqnr.png

What a banned player sees

ftZIZAzAgI.png

The kick screen

oOLXfhJDi4.png

A muted player's notice
Spoiler: Command usage screenshots
pzX97hp33N.png

/ban
kuPc3olMqk.png

/tempban
OQ3hdlRmvx.png

/ipban
3B7J8kVKt6.png

/mute
XWVBVKXYpp.png

/tempmute
D1t2kGdKq9.png

/ipmute
iHI1SFHCgu.png

/warn
7jL5FKQQaG.png

/kick

๐Ÿคซ Silent Punishments

Punish without tipping off the server. Add -s to a ban or mute, or use the /silentban and /silentmute aliases. The target sees the normal ban or mute, but the public broadcast is suppressed, and only staff with the right permission get a quiet heads-up about who issued it. Perfect for catching alts and rule-breakers without the audience.
๐ŸŒ IP Tools, GeoIP & Alt Detection

  • IP punishments: ban or mute by IP to shut down ban evaders
  • Alt detection: flags accounts sharing an IP, with /alts to investigate and a ban-evasion auto-flag
  • GeoIP country control: block chosen countries with a dedicated screen, or flip to allow-list mode to permit only the countries you choose
  • VPN blocking: turn away VPN and proxy connections

wVLxBNTvnt.png

An IP-banned player's screen

8A30F5w3ls.png

The VPN block screen

XJjjZByzKZ.png

/alts to investigate shared IPs

๐Ÿ“ฃ Reports & Appeals

  • Player reports: players report rule-breakers with /report, and staff review them in a live menu
  • Appeals workflow: review punishments and accept, deny, or escalate them, each with its own note

U2Hmzae5Q9.png

The active reports menu

40hDoIEsKd.png

The reports menu when it's all quiet

ZTnJS4fPHX.png

Reporting a player with /report

๐Ÿ” Player Lookup

A single menu with everything you need on a player: first and last seen, play time, total bans, total mutes, name history, and their country.

mTFy7WsfEp.png

The player lookup menu
Spoiler: Lookup detail items
Qhk0F2LqfO.png

First seen and last seen
cX3iUyZED9.png

Total bans
Y3mQwT6HOO.png

Total mutes
8lxnIpCaLT.png

Name history
QSsGSUz3gg.png

Country (GeoIP)

๐Ÿ“œ History, Notes & Checks

  • Punishment history: browse a player's full record in a paginated menu with /history, or audit a staff member's actions with /staffhistory
  • Staff notes: leave private notes on players with /note
  • Quick checks: /checkban and /checkmute to see a player's active status at a glance

historyplayer.gif

Browsing a player's punishment history

tx5ehLpsiA.png

Checking a player's mute with /checkmute

๐Ÿ–ฅ GUI-Driven Everywhere

  • Punish, history, lookup, reports, appeals, and staff notes all open as clean paginated menus
  • Duration, reason, and template selectors so staff rarely need to type long commands
  • Quick-pick preset reasons in the punishment GUI, fully editable
  • Confirmation screens to prevent misfires

12IFYHLqlw.png

The player punish menu, staff open it to punish without typing commands

๐ŸŽจ Custom Screens & Messages

  • Editable screens: ban, tempban, IP-ban, kick, country-blocked, and VPN-blocked, all yours to reword
  • Full message control: every player-facing string is editable, with MiniMessage formatting, hex, and gradients
  • Safe updates: config and language files keep your edits while merging in new keys on update

๐Ÿ”Œ Integrations & Storage

  • Discord webhooks: mirror punishments to Discord as rich embeds, with separate per-event webhooks for bans, mutes, kicks, warns, unbans, reports, appeals, staff notes, and the audit log, each toggled on or off independently. Silent punishments can be kept out of Discord too.
  • PlaceholderAPI: placeholders like %phantombans_is_banned_<player>% for scoreboards, tab, and chat
  • Storage: SQLite by default, or MySQL / MariaDB, all async so the main thread never blocks
  • Tiny jar: around 300KB, with libraries downloaded at runtime instead of bloating the file

๐Ÿ”„ Migrate From Your Old Plugin

Already running another punishment plugin? Bring your history with you. PhantomBans imports existing punishment data from LiteBans, AdvancedBan, and LibertyBans, so you keep every ban, mute, and warn on record when you switch.

  • Safe by default: run /pb import <source> for a dry-run preview that reads and reports counts but writes nothing, then add confirm when you're ready
  • Clean re-runs: imported rows are tagged by source, so re-importing won't create duplicates
  • File or network databases: reads each plugin's local database, or a live MySQL / MariaDB source

image.png

A dry-run preview, then the real import with confirm

๐ŸŒ Network Sync

Running more than one server? PhantomBans syncs punishments across your whole network. Ban, mute, unban, and unmute on any server and it applies everywhere, with banned players kicked network-wide the instant the punishment lands. Silent punishments stay silent across every server too.

  • Cross-server enforcement: bans and mutes propagate to every backend automatically
  • Optional proxy support: companion jars for Velocity (recommended) and BungeeCord (experimental) reject banned players right at the proxy, before they reach a backend
  • Opt-in: enable it in network.yml. Single-server setups are unaffected
  • One requirement: every server must share one MySQL or MariaDB database for sync to work

โŒจ๏ธ Commands

Main command /pb (alias /pbans) opens a paginated, clickable help menu.

Punishments
  • /ban, /tempban, /ipban (alias /pban)
  • /mute, /tempmute, /ipmute
  • /warn, /kick (alias /pkick)
  • /unban, /unmute to lift punishments
  • Add -s to a ban or mute, or use /silentban and /silentmute (plus /unsilentban, /unsilentmute)

Staff Tools
  • /report <player> <reason> report a player
  • /lookup <player> open the player lookup menu
  • /history (alias /hist) and /staffhistory <staff>
  • /alts <player> investigate shared IPs
  • /note (alias /notes) leave a staff note
  • /checkban <player>, /checkmute <player>
  • /pb import <litebans|advancedban|libertybans> [dry|confirm] import punishments from another plugin

U7HRpKWOlY.png

The in-game help menu

๐Ÿ” Permissions

All nodes use the phantombans.* prefix, with phantombans.admin as a grant-all parent. Silent punishments are gated separately: phantombans.silent.use to issue them and phantombans.silent.see to receive the quiet staff notices.
๐Ÿงช Requirements

  • Server: Paper 1.21+ or a Paper fork (Purpur), supporting 1.21.x and newer
  • Java: 21 or higher
  • Storage: SQLite out of the box, MySQL or MariaDB optional (a shared MySQL/MariaDB is required for network sync)
  • Networks: optional Velocity or BungeeCord proxy support
  • Optional: PlaceholderAPI and Vault

๐Ÿ“ฆ Installation

  1. Drop the jar into your plugins/ folder.
  2. Start the server once to generate the config and screen files.
  3. Edit to taste, then reload, and your staff are ready to go.
First start needs internet once so the server can download the plugin's libraries (cached afterward).
๐Ÿ“ˆ Metrics

This plugin uses bStats to collect anonymous usage stats. You can opt out anytime in plugins/bStats/config.yml.

PhantomBans.svg

๐Ÿ’ฌ Support & Docs

Full setup and configuration guides are in the documentation. Need help, found a bug, or want to suggest a feature? Join the Discord.

Read the documentation
Click here to join the Discord

Catch them quietly. Keep your server clean.

PhantomBans | Complete Moderation Suite

v1.3.0 5.0 (1)
zArrowTan

zArrowTan

A complete GUI punishment suite: bans, mutes, warns, silent punishments, reports, and appeals.

$4.49

Instant download · Updates included · Lifetime licence
$0.50 cheaper than on BuiltByBit $4.99 there, $4.49 here every day.

Digital product, delivered instantly, no refunds · Terms

1
Views
0
Purchases
5.0 / 5
Avg Rating
Sep 17, 2026
Release Date
Aug 09, 2026
Last Update Date
plugin
spigot plugin
moderation
punishments
reports
gui
scoreboard
placeholderapi

Share and earn

Earn on every sale you send here

10%

135 pts / sale

© zArrowTan Resources 2026
Forked and customised by zArrowTan · Powered by Light Store