One banlist. Every server covered.
A complete, database-backed ban system for Rust. One banlist for your whole network, enforced at the loading screen, managed from a real in-game panel.
|
/ban <name|steamid> [duration] [reason]
|
Issue a real ban that follows the player across the network.
|
No dependency required. The panel is optional.
Commands, enforcement and storage work with nothing else installed. PowerfulAdmin only adds the in-game ban management panel. Start with the ban system you need now, then add the panel when your staff needs it.
|
01 - One banlist for the network
|
Your own database. Not a text file waiting for a wipe.
Run SQLite with zero setup, or point every server at MySQL or MariaDB when you need shared enforcement. A ban issued on one server applies on all of them instantly.
|
SQLite first, shared storage later
Bans live in SQLite with no setup, or in MySQL/MariaDB when your servers need the same records.
|
Stopped before spawn
Banned players are rejected during the connection handshake. No join-then-kick flash in the world.
|
A real panel. Not another chat command.
With PowerfulAdmin installed, a dedicated Bans section appears in Tools. Search, page, ban, extend and unban without leaving the UI your staff already knows.
|
Search and act with context
Pick a player, add a reason and duration, keep an internal comment, or extend an existing ban.
|
Player card history
Ban state and history sit on the PowerfulAdmin player card alongside Steam VAC and game ban status.
|
Fast to type. Easy to scan.
Expired bans are lifted lazily on the next check, so there is no sweep task burning server time. Anything that fails to parse falls back to a permanent ban.
|
perm, 0, empty
|
permanent
|
|
30
|
a plain number is MINUTES
|
|
45s · 90m · 2h · 1d
|
seconds · minutes · hours · days
|
|
1d12h
|
compound duration
|
|
1d2h30m
|
combine freely, evaluated left to right
|
|
04 - Commands and permissions
|
Console or chat. The same banlist either way.
RCON and the server console run unrestricted. A player running the command needs the listed permission.
|
Chat
|
|
/ban <name|steamid> [duration] [reason]
|
powerfulbans.ban
|
|
/unban <name|steamid>
|
powerfulbans.unban
|
|
/baninfo <name|steamid>
|
powerfulbans.view or .ban
|
|
Console
|
|
pb.ban <name|steamid> [duration] [reason]
|
powerfulbans.ban
|
|
pb.unban <name|steamid>
|
powerfulbans.unban
|
|
pb.info <name|steamid>
|
powerfulbans.view
|
|
pb.list [page]
|
powerfulbans.view
|
|
pb.migrate <sqlite|mysql>
|
server console only
|
Start small. Move without losing a ban.
A new server can start on SQLite with zero setup. When it grows into a network, move to a shared MySQL database later without losing a single ban.
|
pb.migrate <sqlite|mysql>
|
Run it from the server console to move the whole ban database between backends. It copies bans, history and cached Steam data, verifies row counts, then switches storage and saves the config. It refuses to begin when another migration is running, and does nothing when the target is already the current backend.
Built for the bad day. Clear failures, useful controls.
Configure SQLite or MySQL storage, broadcast settings, Steam ban checking with a recent-ban kick threshold, and reason templates shared with PowerfulAdmin. English and Russian ship with the plugin, including the loading-screen rejection text. If the database is unreachable, bans are refused with a clear message and the broken connection is reported on startup.
Issue a real ban. Not just a kick.
Anti-cheat plugins, report systems and chat filters can drive PowerfulBans directly. Every call is guarded and behaves identically on Oxide and Carbon.
|
[PluginReference] private Plugin PowerfulBans; private bool BansReady() => PowerfulBans != null && PowerfulBans.Call("API_IsReady") is true;
|
|
object API_IsReady()
|
True when the database is connected and the schema is ready. Reads and writes are rejected while it is not ready.
|
|
object API_Ban(string steamId, string name, string duration, string reason, string by, string comment = "")
|
Written asynchronously. Invalid IDs return false; existing bans are never silently overwritten; an online target is kicked immediately. The comment is internal and never shown to the banned player.
|
|
object API_Unban(string steamId, string by)
|
Asynchronous. by defaults to "Server" and the call is a no-op when the player is not banned.
|
|
object API_IsBanned(string steamId, Action<bool> callback)
|
The result arrives through the callback, not the return value. The query also lazily expires temporary bans that have run out.
|
void OnPowerfulBanAdded(...)
void OnPowerfulBanRemoved(...)
|
Added fires for new bans. Removed fires only on an explicit unban from a command, the UI or API_Unban, not when a temporary ban expires.
|
|
PowerfulBans?.Call("API_Ban", steamId.ToString(), "Cheater", "perm", "Aimbot detected", "AntiCheat"); PowerfulBans?.Call("API_Ban", steamId.ToString(), "Player", "7d", "Toxic in chat", "ChatGuard", "3rd warning");
|
|
|