- Can this player connect at all? →
Config.Whitelist - Do they skip the queue entirely? →
Config.Permissions.BypassRoles - How high up the queue are they? →
Config.Permissions.PriorityLevels
Config.Tiers.
These are independent on purpose. A “supporter” role might get priority but no bypass. A “developer” role might bypass but not even be a tier. Mix and match.
Bypass (staff & owners)
Anyone holding any ofConfig.Permissions.BypassRoles skips the queue entirely and is exempt from the whitelist check.
Config.Server.ReservedSlots is for — if you reserve, say, 2 slots, the server effectively caps regular players at sv_maxclients - 2, leaving those two slots for staff with bypass.
Priority (queue ordering)
- The map is
roleId → points. - A player’s effective priority is the sum of points across every role they hold.
- Higher points = served first.
- A player with no matching roles has a priority of
0and is queued in arrival order behind every prioritized player. - You can use any positive integer for points. The numbers above are just one common scheme.
Example
Roles configured:- Diamond — 8500
- Twitch Sub — 500
Whitelist (gate the whole server)
WhenConfig.Whitelist.Enabled = true, players are kicked at connect unless they hold one of Config.Whitelist.Roles.
- Whitelisted players still go through the queue — the whitelist is only an entry gate, not a bypass.
- Bypass roles are exempt from the whitelist — staff can always get in.
- Any one role is enough — if a player holds at least one role in the list, they pass.
KickMessageis shown in the connect deferral that kicks them. Keep it friendly and link to your Discord.
Common whitelist patterns
| Pattern | Setup |
|---|---|
| Closed beta / private server | Enabled = true, Roles = { "BETA_TESTER_ROLE" } |
| Application-based whitelist | Enabled = true, Roles = { "WHITELISTED_ROLE" } — granted manually in Discord |
| Paid early-access window | Enabled = true, Roles = { "SUPPORTER_ROLE" }, then Enabled = false at launch |
| Public server with priority only | Enabled = false — just leave it off |
Tiers (display only)
Config.Tiers controls the label under the player’s name on the card. It does not affect queue ordering.
- Order matters — the first entry whose role the player holds is the one displayed. Put the highest tier on top.
Config.DefaultTieris shown when the player has none of the listed roles.- The label is free text — rename them to whatever fits your branding (
"VIP","Patron", etc.).
Keeping tier ↔ priority in sync
It’s common for the same role to drive both tier display and priority points. There’s no requirement to mirror them, but if your community expects “Diamond shows Diamond and gets the biggest skip”, just use the same role ID in both places:Decision flow (what happens when a player connects)
- Discord check — the bot looks up the player’s Discord ID and their roles.
- No linked Discord at all? They are queued as
Standardwith0priority. (Unless your whitelist is on — then they’re kicked.)
- No linked Discord at all? They are queued as
- Whitelist gate — if
Config.Whitelist.Enabled, the player must hold one ofConfig.Whitelist.Roles(or a bypass role) or they’re kicked withKickMessage. - Bypass check — if they hold any
BypassRoles, they skip everything below and connect. - Priority sum — total their
PriorityLevelspoints across all their roles. - Tier label — pick the first matching
Config.Tiersentry (orDefaultTier). - Queue — they enter the queue at the position implied by their priority, see their tier on the card, and wait.

