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.
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
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 and server-others.
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.
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.
1 Servers
List all servers in your network. The key is the name used in commands and the menu, the value is the IP:port of each server.
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.
View example
server_status_api: enabled: false update_interval_seconds: 60
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.
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.
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).