Auric Network
Zero-Proxy Network System for Minecraft servers.
No BungeeCord · No Velocity · Native Transfers
AuricNetwork allows you to create a full Minecraft server network without any proxy (BungeeCord, Velocity). It uses Paper's native Player#transfer method (1.20.5+) to move players directly between servers.
Important: On the target server, you must set accepts-transfers=true in its server.properties file for the transfers to work.
At a glance
Everything you need to know
Whether you're linking two survival servers or building a full lobby-based network, this wiki covers every feature, command, permission, and configuration option AuricNetwork has to offer.
No Proxy Required
Direct server-to-server transfers using Paper's native Player#transfer() method. No BungeeCord, no Velocity.
Graphical Server Selector
Fully customizable chest GUI with player head, online player count and server status placeholders.
Rescue Server (Fallback)
On graceful shutdown, all online players are automatically moved to a configured rescue server. Console logs detail the transfer.
Multi-Lobby Balancing
/lobby can send players to a random lobby from a list — ideal for large networks.
Capabilities
Key Features
A complete toolkit to run a multi-server Minecraft network without the overhead of a proxy layer.
No Proxy Required
Direct server-to-server transfers using Player#transfer(). No BungeeCord or Velocity needed.
Graphical Server Selector
Fully customizable chest GUI with player head, online player count and server status placeholders.
Rescue Server (Fallback)
On graceful shutdown, all online players are automatically moved to a configured rescue server. Console logs detail the transfer.
Multi-Lobby Balancing
/lobby can send players to a random lobby from a list — ideal for large networks.
Join & Respawn Spawns
Set teleport locations for join and respawn events, so players always land where you want them.
Live Server Status
Fetches real-time online players and online/offline/full status via api.mcsrvstat.us.
Rank-Based Welcome
Title, subtitle, chat, action bar, sound, fireworks and a damage-free lightning strike — all tied to numeric rank permissions.
Protected Hotbar Items
Give players configurable items on join with click actions and drop/move/pickup/swap protection.
Named Announcements
Broadcast a specific announcement on demand by its id, with per-id permissions and tab-completion.
Maintenance Mode
Take any server out of rotation — transfer attempts are rejected with a message instead of failing silently.
Party System
Invite, accept, kick and disband — when the leader transfers servers, the whole party follows automatically.
Full Loot Transfer
Complete inventory, armor and ender chest follow the player across servers via signed, chunked cookies — no database, no proxy.
Discord Webhooks
Lightweight outbound notifications for joins, leaves and transfers — no bot, no persistent connection.
Reference
Commands
Every subcommand below also works directly under /auricnetwork (e.g. /auricnetwork server survival, /auricnetwork party invite Steve). The standalone commands like /server, /spawn, /lobby and /party keep working exactly the same.
auricnetwork.command.reload
auricnetwork.command.status
/auricnetwork status — it does not simulate an actual player transfer.
Permission: auricnetwork.command.test
config.yml by hand.
Permission: auricnetwork.command.maintenance
auricnetwork.command.recoverloot
config.yml by its id. Tab-completes with the announcement ids you're allowed to run.
Permission: auricnetwork.command.announce (any id) or auricnetwork.command.announce.<id> (a single id)
auricnetwork.command.menu
auricnetwork.command.setjoinspawn
auricnetwork.command.setrespawnspawn
auricnetwork.command.server (self) or auricnetwork.command.server-others (other players)
auricnetwork.command.spawn (both) or auricnetwork.command.spawn.join / auricnetwork.command.spawn.respawn (individually)
auricnetwork.command.lobby
invite <player>— sends a party invitation to that player.accept/deny— accepts or rejects the most recent invitation you received.leave— leaves your current party.kick <player>— removes a member from the party (leader only).list— shows everyone currently in your party.disband— dissolves the party entirely (leader only).
auricnetwork.command.party (all subcommands) or auricnetwork.command.party.<subcommand> (individually, e.g. auricnetwork.command.party.kick)
Access control
Permissions
Every command node lives under auricnetwork.command.*. Parent nodes grant every subcommand beneath them, but each subcommand also has its own individual node, so you can remove access to a single feature without touching the rest.
Example: granting only auricnetwork.command.party.kick lets a player kick party members without giving them the rest of the party commands.
General
Parent node for every administrative permission below: reload, announce, status, setjoinspawn, setrespawnspawn, server-others, test, maintenance and recoverloot.
Open the server selector GUI.
Use /lobby or /hub.
Server Transfers
Use /server <name> to transfer yourself.
Use /server <name> <player> to transfer someone else. Admin-only by default, kept separate from the regular server node on purpose.
Spawns
Parent node, grants both spawn subcommands below.
Use /spawn join specifically.
Use /spawn respawn specifically.
Set the join spawn point. Admin-only by default.
Set the respawn spawn point. Admin-only by default.
Party
Parent node, grants every party subcommand below.
Invite players to your party.
Accept a pending party invitation.
Reject a pending party invitation.
Leave your current party.
Kick a member from your party (leader only).
List your party members.
Disband your party (leader only).
Admin Tools
Reload the plugin configuration.
View the network server status list.
Broadcast any announcement, regardless of id. Grants every node below.
Broadcast a single named announcement (e.g. auricnetwork.command.announce.discord). Useful for giving a moderator one announcement without the rest.
Run an on-demand status check against a single server.
Toggle maintenance mode for a server without editing config.yml.
Restore a player's local loot backup if a network transfer failed.
Welcome System
Unlocks the welcome rank with that exact numeric key in config.yml (e.g. auricnetwork.welcome.10). There's no separate "permission" field — the number itself is the node.
Queue Priority
Sets queue priority. Any positive number works — there's no fixed range. The highest number a player has wins.
Setup
Configuration Guide
The config.yml file controls every aspect of AuricNetwork. Below is a detailed explanation of each section.
One key sits outside all of the sections below: check-updates (true by default), near the top of the file. It controls whether the plugin checks Modrinth for a newer version on startup and lets admins know in-game — set it to false to turn that off entirely.
1 Servers
List all servers in your network. The key is the name used in commands and the menu. The value is used exactly as written — accepts host:port, or just a hostname if that's all your host gives you (port 25565 is used only as a technical fallback when none is given; nothing is looked up or substituted). Use whatever address connects directly in your own client.
View example
servers: lobby: "127.0.0.1:25565" survival: "127.0.0.1:25566"
2 Maintenance Mode
List the servers that should reject incoming transfers. A player trying to /server into one of them stays on their current server and sees a maintenance message instead. This only blocks transfers from this server instance — each server still needs its own AuricNetwork install to enforce it locally.
View example
maintenance: enabled: false servers: - "survival"
The /auricnetwork status command shows a maintenance tag next to any server listed here.
3 Transfer Immersion
Adds a short cinematic pause before a player actually leaves for another server, instead of transferring them the instant they run the command.
How many seconds the player waits before the transfer happens. During this time they stay on the current server and can still move around.
A Minecraft sound name that plays once per second during the countdown, like a ticking cue that the transfer is coming.
If enabled, the sound gets quieter each time it repeats, so it fades away by the time the transfer actually happens instead of staying at the same volume.
View example
transfer_immersion: delay: 3.0 sound: enabled: true sound_id: "block.amethyst_block.hit" fade_out: true
4 Language
Set en (English) or es (Spanish). Leave empty to auto-detect from the player's client locale.
View example
language: "en"
5 Join & Respawn Spawn
Enable and set an exact spot for where players land when they join the server, and a separate one for where they respawn after dying.
Each one needs a world name and an x/y/z position. yaw and pitch are optional and control which direction the player faces when they arrive: yaw is the horizontal direction (which way they're looking left/right), pitch is the vertical tilt (looking up/down).
View example
join_spawn: enabled: false world: "world" x: 0.5 y: 64.0 z: 0.5 yaw: 0.0 pitch: 0.0 respawn_spawn: enabled: false world: "world" x: 0.5 y: 64.0 z: 0.5 yaw: 0.0 pitch: 0.0
6 Lobby Balancing
If enabled, /lobby picks a server from the list below instead of always going to lobby. This is meant for networks with more than one lobby, so players don't all pile into the same one.
Picks any server from the list at random, with no regard for how full each one is.
Always picks whichever lobby in the list currently has the fewest players, spreading the population evenly.
View example
lobby: enabled: false balancing_mode: "RANDOM" servers: - "lobby1" - "lobby2"
7 Server Status API
Since each server runs in total isolation, AuricNetwork can't ask another server directly "how many players do you have right now?" — there's no shared connection between them. Instead, it periodically asks the public API api.mcsrvstat.us, the same way a website would check if a server is online, and caches the answer until the next check.
update_interval_seconds controls how often that check happens. Lower values are more up to date but make more requests to the external API; 30-60 seconds is a reasonable default for most networks. Run /auricnetwork test <server> anytime to force an immediate check on one server instead of waiting for the next cycle.
View example
server_status_api: enabled: false update_interval_seconds: 60
api.mcsrvstat.us is a public external service — it needs to be able to reach the address you configure. Purely local or private IPs (like 127.0.0.1 or a LAN-only address) won't report correctly here, even though transfers between those same servers work completely fine.
8 Loot Transfer
Carries a player's full inventory across a transfer using signed cookies — no database, no proxy. Full explanation, setup steps and the recovery command live in the dedicated Loot Transfer section; this is just the config reference.
View example
loot_transfer: enabled: false include_enderchest: true sync_experience: false sync_health_hunger: false sync_potion_effects: false sync_gamemode: false sync_economy: false recovery_history_size: 3 max_payload_age_seconds: 300 network_secret: "" stat_sync: enabled: false statistics: play_one_minute: false jump: false deaths: false mob_kills: false
network_secret is left blank on purpose — it's generated automatically the first time this server starts, then written back into the file. Copy that exact value into every other server's config.yml. max_payload_age_seconds (300 by default) controls how long a payload stays valid after being created — kept short on purpose, since a transfer normally finishes in a few seconds. stat_sync is a separate, optional layer that syncs real vanilla statistics (not the inventory) using the same signed payload; every statistic listed under it defaults to false and only needs a value flipped to true to start syncing that one. The five sync_* options above (experience, health/hunger, potion effects, gamemode, economy) are covered in full in the Loot Transfer section — sync_economy needs Vault plus an economy plugin installed, and is skipped silently otherwise.
9 Discord Webhooks
Sends a message to a Discord channel when something happens — a player joins, a server goes down, an admin toggles maintenance, and more. Events are batched and sent in digests rather than one request per event (see below), and there's no bot involved: no persistent connection to Discord's gateway, so it carries effectively no memory overhead.
View example
webhooks: enabled: false batch_interval_seconds: 30 urls: general: "" admin: "" events: join: false server_down: false loot_signature_mismatch: true channels: join: general server_down: general loot_signature_mismatch: admin messages: join: "**%player%** joined **%server%**."
Get a webhook URL from Discord: open a channel's settings → Integrations → Webhooks → New Webhook → Copy Webhook URL. Every event routes to a named channel under channels — the two built-in names are general (player activity) and admin (server health and admin actions), each with its own URL under urls, so they can point at two different Discord channels. Add more names if two isn't enough. Each line under webhooks.messages is a template — %player%, %server%, %admin% and %name% get replaced depending on the event, and Discord's own **bold** markdown works directly in them.
The full list of events: join, leave, transfer, server_up, server_down, secret_generated, maintenance_on, maintenance_off, reload, announcement_sent, loot_signature_mismatch, loot_replay_detected, and recoverloot_used. Every one is off by default except secret_generated, loot_signature_mismatch and loot_replay_detected — those three flag things worth knowing about immediately, like a network_secret that's out of sync between servers.
Why batching matters here: sending one HTTP request per individual event adds up fast on an active network, and Discord sits behind Cloudflare — enough requests from the same IP (common on shared/free hosting, where that IP isn't only yours) can get rate limited at the network edge, not just by Discord itself. Batching everything from a channel into one message every batch_interval_seconds keeps the request volume low regardless of how much is happening. If a batch ever does get rate limited (HTTP 429), AuricNetwork pauses every channel for 10 minutes rather than retrying immediately, since retrying during a block just prolongs it.
Quick way to test it: set webhooks.enabled: true and webhooks.events.join: true, fill in webhooks.urls.general, save, /auricnetwork reload, then join the server yourself. The message shows up within batch_interval_seconds (30 seconds by default) — not instantly, since it's waiting to be batched. Turn the event back off afterward if you don't want join spam.
First impressions
Welcome System
Greet players differently depending on their rank — title, subtitle, chat lines, action bar, sound, a firework, and an optional lightning strike. Everything is configured directly under welcome in config.yml.
How rank priority works
Each entry under welcome.ranks is keyed by a number, and that number is the permission. An entry keyed "10" requires auricnetwork.welcome.10 — there's no separate permission field to fill in. The entry keyed "0" is the default, used when a player doesn't have any other welcome permission. When a player matches more than one rank, the highest number wins.
Tip: give your highest-priority rank a high number (e.g. 50 for staff, 10 for VIP) so you have room to add ranks in between later.
What each rank can configure
The big text shown in the middle of the player's screen on join, with a smaller subtitle line underneath.
One or more chat lines, supporting MiniMessage formatting and placeholders.
A short message shown above the hotbar on join.
Plays a sound effect with configurable id, volume, and pitch.
An optional firework launch and an optional lightning strike — always visual-only, it never deals damage. See below for the details of each.
Title timing
The title text doesn't just appear and disappear instantly — it fades in, stays on screen, then fades out. Each phase is measured in ticks, Minecraft's basic unit of time: there are 20 ticks in one second, so 40 means 2 seconds.
How long the title takes to fade into view when it first appears.
How long the title stays fully visible on screen before it starts fading out.
How long the title takes to fade away after the "stay" phase ends.
Firework and lightning
Turns the firework launch on or off for this rank.
How many fireworks are launched at once above the player.
The shape of the firework burst, e.g. BALL, STAR, BURST, or CREEPER — any standard Minecraft firework shape.
A list of colors for the burst, either by name (e.g. YELLOW) or hex code (e.g. #ff6700). With more than one color, the firework cycles through them.
Strikes lightning at the player's feet on join — purely for show, since it's always the damage-free visual version of the effect.
View example
welcome: enabled: true ranks: "0": title: enabled: true text: "<gold>Welcome</gold>" subtitle: "<gray>%player_name%</gray>" fade_in_ticks: 10 stay_ticks: 70 fade_out_ticks: 20 chat: enabled: true lines: - "<gray>Welcome to the network, %player_name%!</gray>" actionbar: enabled: false text: "<gray>Welcome!</gray>" sound: enabled: true sound_id: "entity.player.levelup" volume: 1.0 pitch: 1.0 effects: firework_enabled: false firework_count: 1 firework_type: "BALL" firework_colors: - "YELLOW" lightning_enabled: false "10": title: enabled: true text: "<gradient:#ff6700:#fdc300>VIP</gradient>" subtitle: "<gray>Welcome back, %player_name%!</gray>" fade_in_ticks: 10 stay_ticks: 70 fade_out_ticks: 20 chat: enabled: true lines: - "<gold>A VIP player has joined: %player_name%</gold>" actionbar: enabled: true text: "<gold>Enjoy your VIP perks, %player_name%!</gold>" sound: enabled: true sound_id: "entity.player.levelup" volume: 1.0 pitch: 1.2 effects: firework_enabled: true firework_count: 1 firework_type: "STAR" firework_colors: - "#ff6700" - "#fdc300" lightning_enabled: false
Note: the lightning strike is always a visual-only effect (no damage), so it's safe to enable around other players.
Quick access
Hotbar Items
Give players configurable items in their hotbar the moment they join — a compass to open the server selector, a nether star to return to the lobby, or anything else you can imagine. Configured under hotbar in config.yml.
Item options
Hotbar slot (0-8) where the item is placed.
Item material, display name and lore, all supporting MiniMessage and placeholders.
Adds an enchantment glow effect to the item.
A list of one or more actions that run when a player clicks while holding the item. See the full list of available actions below.
Available actions
Use any of these as a line under actions. You can combine several in the same list — for example, play a sound and then transfer the player.
Sends the player to the named server, the same as typing /server <server>.
transfer:survivalRuns a command as the player, exactly as if they had typed it themselves (their own permissions apply).
command:spawnRuns a command from the server console instead of the player, useful for commands the player normally can't run themselves.
console_command:eco give %player_name% 100Temporarily grants the player operator status, runs the command as them, then immediately removes it. Useful for a single privileged command without permanently OP'ing anyone.
op_command:gamemode creativeSends a chat message to the player, formatted with MiniMessage (e.g. <gold> for color) and placeholders.
message:<green>Teleporting you now!</green>Plays a sound to the player. id is a Minecraft sound name (e.g. block.note_block.pling), volume and pitch are both decimal numbers, typically between 0.5 and 2.0.
sound:entity.experience_orb.pickup,1.0,1.5Opens one of your configured GUI menus by its id, the same menu system used by /auricnetwork menu.
open:kitsProtection options
All four default to true, so a hotbar item is fully protected unless you explicitly turn an option off.
Prevents dropping the item on the ground with the Q key or by dragging it out of the inventory.
Prevents dragging the item to another slot in the player's own inventory or into a chest, hopper, or any other container.
If the item somehow ends up on the ground anyway, this stops any player from picking it back up.
prevent_drop: false, so the item can be dropped and picked up again normally.Prevents pressing F to swap the item between the main hand and the off hand.
An item with all four protections gives players nothing they can do with it except trigger its actions — they can't lose it, drop it, or move it out of its slot. This also covers item frames: a protected item can't be placed into one as a workaround to free it. Disabling hotbar.enabled entirely lifts every protection on every item.
View example
hotbar: enabled: true items: selector: slot: 4 material: "COMPASS" name: "<gold>Server Selector</gold>" lore: - "<gray>Right click to open the menu</gray>" glow: false prevent_drop: true prevent_move: true prevent_pickup: true prevent_swap: true actions: - "open:selector" lobby_item: slot: 8 material: "NETHER_STAR" name: "<yellow>Lobby</yellow>" lore: - "<gray>Right click to return to the lobby</gray>" glow: true prevent_drop: true prevent_move: true prevent_pickup: true prevent_swap: true actions: - "transfer:lobby"
Broadcasting
Named Announcements
Instead of a rotating list of messages, every announcement has its own id, its own lines, and is sent on demand with a command. Configured under announcements.list in config.yml.
How announcement permissions work
There's no permission field to fill in for each announcement. Instead, every id automatically requires its own node: auricnetwork.command.announce.<id>. A player with the parent auricnetwork.command.announce can run any announcement; a player with only auricnetwork.command.announce.discord can only run that one.
View example
announcements: list: welcome_network: lines: - "<yellow>Welcome to our network!</yellow>" discord: lines: - "<aqua>Join our Discord: discord.gg/example</aqua>" vote: lines: - "<green>Vote for us daily to get rewards!</green>" staff_only: lines: - "<red>This is a staff-only announcement example.</red>"
Run it with /auricnetwork announce <id> — for example, /auricnetwork announce discord broadcasts the discord entry above to every online player. The command tab-completes with whichever ids you have permission to run.
Note: announcements only broadcast on the server where the command is run. There's no automatic rotation anymore — schedule them externally (e.g. a server-side timer or cron) if you want periodic announcements.
Zero-database transfers
Full Loot Transfer
A player's complete inventory — storage, armor, off-hand, whatever's held on the cursor, and optionally the ender chest — travels with them across a transfer, riding inside the same connection the player already uses. No database, no proxy, no extra infrastructure of any kind.
How it actually works
Minecraft's own protocol has a small feature built specifically for this: cookies. Right before a transfer, the server hands the client a signed, compressed blob of data; the client carries it along and hands it back to whichever server it lands on next. AuricNetwork serializes the player's inventory, compresses it, signs it with HMAC-SHA256, and — if it's too big for a single cookie — splits it across up to 20 of them (roughly 96 KB of budget in total). If it still doesn't fit, nothing is touched: the transfer happens normally and the player simply keeps their current inventory, with a warning logged to console.
Each cookie caps out at 5 KiB — a hard limit of the Minecraft protocol itself, not something AuricNetwork chose. Splitting across multiple cookies is what makes a fully loaded inventory (renamed items, enchanted gear, shulker boxes, banners) fit comfortably in practice.
Setting it up: network_secret
Enable loot_transfer.enabled in config.yml and start the server once — a random network_secret is generated automatically and written back into that same file. Copy that exact value into loot_transfer.network_secret on every other server in your network. This is what lets a destination server verify that a payload genuinely came from another server in your network and reject anything else outright — including a modified client trying to hand back forged or replayed data.
View example
loot_transfer: enabled: true include_enderchest: true recovery_history_size: 3 max_payload_age_seconds: 300 network_secret: "(auto-generated on first start)"
Every payload is also tied to the exact player it was created for. Even a correctly signed, not-yet-expired payload is rejected outright if it doesn't match the identity of the player currently connecting — so a payload can never be applied to the wrong person, whatever the reason it ended up in the wrong hands.
max_payload_age_seconds (300 by default) controls how long a payload stays valid after being created. A transfer normally finishes in a few seconds, so this only needs enough slack to cover a slow reconnect — it's kept short on purpose, since a longer window only widens how long an old payload could still be reused for.
If something goes wrong, nothing is silently lost
Before a player's inventory is cleared for the trip, a local backup is written to disk on the origin server. If the transfer fails completely after every retry, that backup is restored automatically — the player never ends up empty-handed on a server they never actually left. If a payload is rejected on the other end (for example because network_secret doesn't match), the backup still exists locally; it just needs to be restored by hand if the player comes back.
Recovering a backup by hand
Every transfer keeps a short history per player — recovery_history_size in config.yml controls how many (3 by default) — and it survives a restart since it's just local files, not memory.
Optional: syncing real statistics too
Separately from the inventory itself, AuricNetwork can also sync a player's actual vanilla statistics — the same ones Minecraft already tracks locally, like PLAY_ONE_MINUTE, MOB_KILLS, or JUMP — using the exact same signed payload. This is off by default, and every statistic is individually toggleable under stat_sync.statistics in config.yml, so nothing changes unless a specific stat is explicitly turned on.
When a statistic is enabled, syncing only ever raises the value to the higher of the two servers — it never lowers one. A player who already has 40 hours played on one server won't see that drop just because another server in the network only has 10.
Optional: full player continuity
Beyond the inventory and statistics, five more things can travel in the same signed payload, each its own independent switch in loot_transfer, all off by default. Useful for networks where one physical server hosts a spin-off of another — a dungeon instance branching off the main survival world, for example — where a transfer should feel invisible rather than like arriving at a different game.
Statistics use "keep the higher value" because they're counters that should never go backwards. These five are different: they're a snapshot of exactly how the player was the moment they left, so they replace the destination's value outright, the same way the inventory does.
sync_gamemode needs a moment of thought before turning on. It trusts every server in the network equally — if any one of them lets players reach creative or spectator mode, that mode can now follow them anywhere else sync_gamemode is enabled too. Only turn it on if every server in the network should trust the others' gamemode the same way.
sync_economy clears the balance it just captured on the server the player is leaving, the same way the inventory gets cleared — otherwise the same money would effectively exist on both servers at once.
Test before relying on it. Loot transfer, statistic sync, and everything above touch real player data. Try them on a test account or a disposable world first, and confirm network_secret is identical everywhere before enabling any of it on a live network.
Network control
Maintenance Mode
Take a server out of rotation without shutting it down. Players already connected elsewhere simply can't transfer into it.
Add the server's name to maintenance.servers in config.yml and set maintenance.enabled to true. Any /server attempt targeting that server — by a player or sent by an admin — is rejected with a message, and the player stays exactly where they were.
Or skip editing the file entirely: /auricnetwork maintenance <server> on adds it to the list and enables the system in one step, and /auricnetwork maintenance <server> off removes it again.
View example
maintenance: enabled: true servers: - "survival"
What happens with the queue
Maintenance is checked before the queue. A server under maintenance always rejects the transfer outright — it never places the player in a queue, even if the queue system is enabled.
A full server without maintenance
This is a separate case worth knowing about: if a server is simply full (not in maintenance) and the queue system is enabled, the player is placed in a queue automatically. If the queue is disabled, the player is rejected immediately with a "server is full" message instead of waiting indefinitely.
Checking maintenance status
Run /auricnetwork status to see every server in the network along with a maintenance tag next to any server currently listed in maintenance.servers.
Like everything else in AuricNetwork, maintenance mode is local to each server instance. Enabling it on your lobby's config.yml only blocks transfers initiated from the lobby — if you want the survival server itself to also reject transfers coming from elsewhere, set it in survival's own config.yml too.
Dynamic text
Placeholders
AuricNetwork resolves its own placeholders internally — they work in announcements, the welcome system, the hotbar, the menu, the bossbar and the actionbar, even without PlaceholderAPI installed. If PlaceholderAPI is installed, the same placeholders are also registered as a normal PlaceholderAPI expansion under two identifiers: %auricnetwork_*% and the shorter %an_*%.
Inside AuricNetwork's own configuration files (menu, hotbar, welcome, announcements...) you can use the short form without any prefix too, e.g. %total_online% instead of %auricnetwork_total_online%.
Network-wide
Total online players across every server in the network.
<green>%auricnetwork_total_online% online</green> → 47 onlineThe name of the server this placeholder is resolved on, as set in current_server_name.
survival.Per-server
Replace <server> with any server name from your servers list.
Online player count for that server. Uses the real local count for the current server, and api.mcsrvstat.us for any other.
%auricnetwork_online_survival% → 12Maximum player slots for that server, as reported by the status API.
%auricnetwork_online_survival%/%auricnetwork_max_survival% → 12/100Plain-text status: Online, Offline, or Full — using your configured language file.
Status: %auricnetwork_status_survival% → Status: OnlineQueue
The player's current position in their queue, or 0 if they're not queued.
You are #%auricnetwork_queue_position% in line → You are #3 in lineThe server name the player is currently queued for, or empty if none.
Waiting for %auricnetwork_queue_server% → Waiting for survivalParty
Number of members in the player's current party.
Party: %auricnetwork_party_size% members → Party: 4 membersName of the player's party leader, or empty if not in a party.
Leader: %auricnetwork_party_leader% → Leader: SteveReturns yes or no depending on whether the player is in a party.
no.Note: per-server placeholders for a server other than the current one rely on api.mcsrvstat.us, which can't reach servers running on a local network or behind a firewall. They work reliably for publicly reachable servers.
Fallback
Rescue Server
When a server shuts down gracefully (e.g., /stop or a restart), AuricNetwork automatically transfers all online players to a configured rescue server. This prevents disconnections and improves user experience.
The fallback logs a detailed message to the console:
To enable it, add the following to your config.yml:
rescue_server: enabled: true target: "lobby"
Fallback list
target is where everyone goes first. If you also want a backup plan, enable fallback_list_enabled and list extra servers under fallback_list — AuricNetwork will also send any player still online through each one of them, in order, right after the main target.
rescue_server: enabled: true target: "lobby" fallback_list_enabled: true fallback_list: - "lobby2" - "lobby3"
Note: Works only on controlled shutdowns (not on crashes or kill -9).