Official Documentation

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 reload
Reloads the config and language files, along with every internal system (welcome, hotbar, queue, bossbar, actionbar...). Permission: auricnetwork.command.reload
/auricnetwork status
Lists every server in the network with its live status, online/max player count, and a maintenance tag when applicable. Permission: auricnetwork.command.status
/auricnetwork announce <id>
Broadcasts a named announcement from 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 menu
Opens the server selector GUI. Permission: auricnetwork.command.menu
/auricnetwork setjoinspawn
Sets the join spawn at your current location. Permission: auricnetwork.command.setjoinspawn
/auricnetwork setrespawnspawn
Sets the respawn spawn at your current location. Permission: auricnetwork.command.setrespawnspawn
/server <name> [player]
Transfers you to another server. With a second argument, transfers a different online player instead. Permission: auricnetwork.command.server (self) or auricnetwork.command.server-others (other players)
/spawn [join|respawn]
Teleports to the configured spawn point. Defaults to the join spawn if no argument is given. Permission: auricnetwork.command.spawn (both) or auricnetwork.command.spawn.join / auricnetwork.command.spawn.respawn (individually)
/lobby or /hub
Sends you to the lobby (supports random or least-players balancing). Permission: auricnetwork.command.lobby
/party <invite|accept|deny|leave|kick|list|disband>
Manages your party — a small group of players who get transferred together when the leader moves to another server.
  • 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).
Permission: 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

auricnetwork.admin

Parent node for every administrative permission below: reload, announce, status, setjoinspawn, setrespawnspawn and server-others.

auricnetwork.command.menu

Open the server selector GUI.

auricnetwork.command.lobby

Use /lobby or /hub.

Server Transfers

auricnetwork.command.server

Use /server <name> to transfer yourself.

auricnetwork.command.server-others

Use /server <name> <player> to transfer someone else. Admin-only by default, kept separate from the regular server node on purpose.

Spawns

auricnetwork.command.spawn

Parent node, grants both spawn subcommands below.

auricnetwork.command.spawn.join

Use /spawn join specifically.

auricnetwork.command.spawn.respawn

Use /spawn respawn specifically.

auricnetwork.command.setjoinspawn

Set the join spawn point. Admin-only by default.

auricnetwork.command.setrespawnspawn

Set the respawn spawn point. Admin-only by default.

Party

auricnetwork.command.party

Parent node, grants every party subcommand below.

auricnetwork.command.party.invite

Invite players to your party.

auricnetwork.command.party.accept

Accept a pending party invitation.

auricnetwork.command.party.deny

Reject a pending party invitation.

auricnetwork.command.party.leave

Leave your current party.

auricnetwork.command.party.kick

Kick a member from your party (leader only).

auricnetwork.command.party.list

List your party members.

auricnetwork.command.party.disband

Disband your party (leader only).

Admin Tools

auricnetwork.command.reload

Reload the plugin configuration.

auricnetwork.command.status

View the network server status list.

auricnetwork.command.announce

Broadcast any announcement, regardless of id. Grants every node below.

auricnetwork.command.announce.<id>

Broadcast a single named announcement (e.g. auricnetwork.command.announce.discord). Useful for giving a moderator one announcement without the rest.

Welcome System

auricnetwork.welcome.<number>

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

auricnetwork.queue.<number>

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
YAML
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
YAML
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.

delay

How many seconds the player waits before the transfer happens. During this time they stay on the current server and can still move around.

sound.sound_id

A Minecraft sound name that plays once per second during the countdown, like a ticking cue that the transfer is coming.

sound.fade_out

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
YAML
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
YAML
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
YAML
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.

RANDOM

Picks any server from the list at random, with no regard for how full each one is.

LEAST_PLAYERS

Always picks whichever lobby in the list currently has the fewest players, spreading the population evenly.

View example
YAML
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
YAML
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

title

The big text shown in the middle of the player's screen on join, with a smaller subtitle line underneath.

chat

One or more chat lines, supporting MiniMessage formatting and placeholders.

actionbar

A short message shown above the hotbar on join.

sound

Plays a sound effect with configurable id, volume, and pitch.

effects

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.

fade_in_ticks

How long the title takes to fade into view when it first appears.

stay_ticks

How long the title stays fully visible on screen before it starts fading out.

fade_out_ticks

How long the title takes to fade away after the "stay" phase ends.

Firework and lightning

firework_enabled

Turns the firework launch on or off for this rank.

firework_count

How many fireworks are launched at once above the player.

firework_type

The shape of the firework burst, e.g. BALL, STAR, BURST, or CREEPER — any standard Minecraft firework shape.

firework_colors

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.

lightning_enabled

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
YAML
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

slot

Hotbar slot (0-8) where the item is placed.

material, name, lore

Item material, display name and lore, all supporting MiniMessage and placeholders.

glow

Adds an enchantment glow effect to the item.

actions

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.

transfer:<server>

Sends the player to the named server, the same as typing /server <server>.

Exampletransfer:survival
command:<cmd>

Runs a command as the player, exactly as if they had typed it themselves (their own permissions apply).

Examplecommand:spawn
console_command:<cmd>

Runs a command from the server console instead of the player, useful for commands the player normally can't run themselves.

Exampleconsole_command:eco give %player_name% 100
op_command:<cmd>

Temporarily 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.

Exampleop_command:gamemode creative
message:<text>

Sends a chat message to the player, formatted with MiniMessage (e.g. <gold> for color) and placeholders.

Examplemessage:<green>Teleporting you now!</green>
sound:<id>,<volume>,<pitch>

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.

Examplesound:entity.experience_orb.pickup,1.0,1.5
open:<menu>

Opens one of your configured GUI menus by its id, the same menu system used by /auricnetwork menu.

Exampleopen:kits

Protection options

All four default to true, so a hotbar item is fully protected unless you explicitly turn an option off.

prevent_drop

Prevents dropping the item on the ground with the Q key or by dragging it out of the inventory.

When to disableYou're giving out a consumable item, like a one-time teleport scroll meant to be tradeable.
prevent_move

Prevents dragging the item to another slot in the player's own inventory or into a chest, hopper, or any other container.

When to disableYou want players to be able to reorganize their hotbar freely.
prevent_pickup

If the item somehow ends up on the ground anyway, this stops any player from picking it back up.

When to disableCombined with prevent_drop: false, so the item can be dropped and picked up again normally.
prevent_swap

Prevents pressing F to swap the item between the main hand and the off hand.

When to disableThe item is meant to be held alongside a weapon or tool in the other 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
YAML
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
YAML
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
YAML
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

%auricnetwork_total_online%

Total online players across every server in the network.

Example<green>%auricnetwork_total_online% online</green>47 online
%auricnetwork_current_server%

The name of the server this placeholder is resolved on, as set in current_server_name.

ExampleOn the survival server, resolves to survival.

Per-server

Replace <server> with any server name from your servers list.

%auricnetwork_online_<server>%

Online player count for that server. Uses the real local count for the current server, and api.mcsrvstat.us for any other.

Example%auricnetwork_online_survival%12
%auricnetwork_max_<server>%

Maximum player slots for that server, as reported by the status API.

Example%auricnetwork_online_survival%/%auricnetwork_max_survival%12/100
%auricnetwork_status_<server>%

Plain-text status: Online, Offline, or Full — using your configured language file.

ExampleStatus: %auricnetwork_status_survival%Status: Online

Queue

%auricnetwork_queue_position%

The player's current position in their queue, or 0 if they're not queued.

ExampleYou are #%auricnetwork_queue_position% in lineYou are #3 in line
%auricnetwork_queue_server%

The server name the player is currently queued for, or empty if none.

ExampleWaiting for %auricnetwork_queue_server%Waiting for survival

Party

%auricnetwork_party_size%

Number of members in the player's current party.

ExampleParty: %auricnetwork_party_size% membersParty: 4 members
%auricnetwork_party_leader%

Name of the player's party leader, or empty if not in a party.

ExampleLeader: %auricnetwork_party_leader%Leader: Steve
%auricnetwork_in_party%

Returns yes or no depending on whether the player is in a party.

ExampleUseful for a Vault/PlaceholderAPI condition like hiding a tag when the value equals 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:

======================================== [AuricNetwork] Rescue server active! Transferred 12 players to lobby (127.0.0.1:25565) Server is shutting down gracefully. ========================================

To enable it, add the following to your config.yml:

YAML
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.

YAML
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).