# BungeeCord and Velocity: Build a Minecraft Network

**URL:** <https://forum.boxtoplay.com/t/bungeecord-and-velocity-build-a-minecraft-network/31841>\
**Category:** BungeeCord\
**Tags:** bungeecord, english\
**Created:** [Juillet 28, 2026, 4:29 UTC](https://forum.boxtoplay.com/t/bungeecord-and-velocity-build-a-minecraft-network/31841 "2026-07-28T16:29:12Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![BoxToPlay-helper](https://forum.boxtoplay.com/user_avatar/forum.boxtoplay.com/boxtoplay-helper/32/5468_2.png) [@BoxToPlay-helper](https://forum.boxtoplay.com/u/BoxToPlay-helper)\
**Post date:** [Juillet 28, 2026, 4:29 UTC](https://forum.boxtoplay.com/t/bungeecord-and-velocity-build-a-minecraft-network/31841/1 "2026-07-28T16:29:12Z")

</div>

![BungeeCord and Velocity: build a Minecraft network](https://forum.boxtoplay.com/uploads/default/original/2X/8/8bd20782342d448e5ca20c262e3a4a56a6ab74f0.jpeg)

This tutorial guides you from creating links in the BoxToPlay panel to performing the first in-game transfers. You will choose the initial server, test commands, decide whether some backends should share player inventories, build a portal in the lobby, and learn when load distribution is useful.

If you have not chosen a proxy yet, read our [BungeeCord vs Velocity comparison](https://www.boxtoplay.com/en/news/bungeecord-vs-velocity-which-minecraft-proxy-to-choose-31778). You can also consult the official [BungeeCord](https://www.spigotmc.org/wiki/about-bungeecord/) and [Velocity](https://docs.papermc.io/velocity/) documentation.

The shortest setup path is:

1. Link every Minecraft server to the proxy in the panel.
2. Restart the affected Minecraft servers first, then restart the proxy.
3. Connect with the proxy address and port.
4. Check every destination with `/server`.
5. If several backends must share inventories, configure one synchronization solution and back up player data first.
6. Install Advanced Portals on the lobby if you want an in-game portal.
7. Add a distribution plugin to the proxy only when several instances provide the same game mode.

## Understand what the proxy does

BungeeCord and Velocity sit in front of your Minecraft servers. Players connect to one public address, the proxy address, which then sends them to one of the linked servers.

```plaintext
Player
  ↓
Proxy address
  ↓
BungeeCord or Velocity
  ├── lobby
  ├── survival
  ├── creative
  └── minigames

```

In this tutorial:

- A **backend** is a Minecraft server placed behind the proxy.
- A **destination** is the name of a link, such as `survival`.
- An **instance** is one actual server among several servers offering the same game mode, such as `survival-1`.

Every backend keeps its own worlds, plugins, and data. The proxy lets players move between them, but it does not automatically synchronize inventories, economy, ranks, punishments, or chat.

## 1. Complete the BoxToPlay linking process

Open your BungeeCord or Velocity server in the BoxToPlay panel:

1. Click **Server Links** in the left menu.
2. Click **Link a Minecraft Server**.
3. In **Server Name** , enter a short identifier without spaces, such as `lobby` or `survival`.
4. Keep **BoxToPlay** selected if the Minecraft server belongs to the same account, then select it under **Server Choice**.
5. With BungeeCord, you can also set the **MOTD associated with this entry** and enable **Restricted** to require the `bungeecord.server.server-name` permission. These two fields are not available in the Velocity form.
6. Click **Validate**.

 ![The Server Links page in the BoxToPlay proxy panel](https://forum.boxtoplay.com/uploads/default/original/2X/3/33c5574e29dcd93f0ba6b585bb9bc84ac5d3434d.jpeg)

This first view lists the servers that are already linked. The **Link a Minecraft Server** button opens the window below.

 ![The BungeeCord window used to link a Minecraft server to the proxy](https://forum.boxtoplay.com/uploads/default/original/2X/3/3dbd3fbfb8590436c7fa7f5ef9489e5f44fe2b85.jpeg)

The link name is a technical identifier. If you choose `survival`, write exactly `survival` in commands, portals, and plugins. It is not the world name, IP address, or server port.

### Minecraft server hosted by BoxToPlay

When the backend belongs to the same BoxToPlay account, the panel registers the destination on the proxy and automatically prepares the compatible Minecraft server files. For a Paper, Purpur, or Spigot backend, this notably includes switching to offline mode and enabling the forwarding method supported by the proxy.

Offline mode is required because the proxy now authenticates the player. **However, it makes any direct access to the backend dangerous** : someone who bypasses the proxy could try to impersonate a player. Backend ports must therefore be reachable only from the proxy and the required technical services.

BungeeCord uses its legacy forwarding method. Velocity can use BungeeCord-compatible forwarding or **Velocity modern forwarding** , with a shared secret. Paper supports this modern protocol on the backend. The secret adds protection but does not replace network filtering.

BoxToPlay automates the settings that the backend software supports. A Forge, NeoForge, or Fabric server may require an additional compatibility mod: the panel does not change its server software or install that mod automatically.

### Minecraft server hosted elsewhere

For an external server, the panel registers the destination on the proxy, but you must configure the backend manually at the other host. Use the same forwarding mode on both sides, enter the Velocity secret when required, and prevent direct access to the backend port.

### Apply the changes

After adding or changing a link:

1. Restart the affected backends.
2. Restart BungeeCord or Velocity afterwards.
3. Confirm that every backend is running before the first test.

Velocity provides `/velocity reload` to reread `velocity.toml`, but the BoxToPlay linking process can change several elements. A full restart remains the expected method. With BungeeCord, do not rely on `/greload` to apply a significant change reliably.

## 2. Choose the initial server

The initial server is usually a lobby. Players can read network information there, select a game mode, and use a portal, NPC, or menu.

### With BungeeCord

In the BoxToPlay proxy configuration, select your **default server**. It becomes the first BungeeCord priority.

The **Force default server** setting changes reconnection behavior:

- Enabled: the player always returns to the default server.
- Disabled: BungeeCord can try to return the player to their last known server when it is available.

Priorities define an ordered list of attempts. If the first server is unavailable, BungeeCord can try the next one. They do not select a destination according to player count or resource usage.

### With Velocity

Velocity uses an ordered list called `try`. The first available server becomes the initial destination. Later entries provide fallback destinations during login. They can also receive a player after an unexpected backend disconnect when `failover-on-unexpected-server-disconnect` is enabled.

In the BoxToPlay panel, the server selected as the priority is placed first, followed by the other links. Velocity also follows an order. It does not natively select the least loaded server.

## 3. Test transfers with commands

Commands let you validate the network before adding a portal or menu. Connect in-game with the proxy address and port, then use:

```plaintext
/server

```

This command reports the current server and offers the available destinations. To join one:

```plaintext
/server lobby
/server survival
/server minigames

```

To view connected players:

```plaintext
/glist

```

On Velocity, `/glist` requires `velocity.command.glist`, and `/glist all` shows players by server. On BungeeCord, `/glist` uses `bungeecord.command.list`.

An authorized administration team member can move one player or all players:

```plaintext
/send Steve survival
/send all lobby

```

BungeeCord and Velocity also accept `current` to move every player on the same backend as the person running the command:

```plaintext
/send current lobby

```

`current` must be run by a connected player because the proxy console has no current server. Keep `bungeecord.command.send` and `velocity.command.send` restricted to the administration team. The `/server` command is enough for normal player navigation.

## 4. Synchronize inventories across servers

BungeeCord and Velocity do not carry a player’s inventory between backends. A synchronization solution must be installed on every server that shares the same progression.

> Every BoxToPlay Minecraft server plan already includes a MySQL database at no additional cost. Activate it from the **MySQL Database** page in the panel by choosing an administrator password, then use its credentials in the configuration below. You do not need to add an external database.

### Paper, Spigot, Purpur, and Folia

[MC-Data-Bridge](https://www.boxtoplay.com/en/minecraft-hosting/minecraft-server/modrinth-plugins/mc-data-bridge-58783) supports Minecraft 1.21.x, 26.1.x, and 26.2 networks. Install the same JAR in the `plugins` folder of every relevant backend and on the BungeeCord or Velocity proxy. Configure the same MySQL or MariaDB database everywhere, then assign a unique `server-id` to each server.

MC-Data-Bridge versions 2.1.3 through 2.1.8 require Java 25, including with Minecraft 1.21.x. Versions 2.1.2 and earlier run on Java 21, but they do not include the latest transfer and item duplication protection fixes. Prefer the latest compatible stable version.

If your network must stay on Java 21, [MySql Player Bridge](https://www.boxtoplay.com/en/minecraft-hosting/minecraft-server/plugins/spigot-mysql-player-bridge-79214) is another option. Install [NBT-API](https://www.boxtoplay.com/en/minecraft-hosting/minecraft-server/modrinth-plugins/nbtapi-49272) first, then place MySql Player Bridge in `plugins` on every backend that must synchronize. Configure the same MySQL or MariaDB database in `plugins/MySqlPlayerBridge/mysql.yml`, then enable only the required data in `plugins/MySqlPlayerBridge/config.yml`. No additional plugin is required on the proxy.

### Forge and NeoForge

For Forge or NeoForge, [PlayerSync](https://www.boxtoplay.com/en/minecraft-hosting/minecraft-server/modrinth-mods/playersync-29521) provides builds for several Minecraft and loader combinations. Always select the file that exactly matches your Minecraft version and either Forge or NeoForge. Place it in `mods` on every backend, configure the same MySQL or MariaDB database in `config/playersync.toml`, then assign a different `Server_id` to each server.

Use the same modpack and mod versions throughout a synchronized group. Test items supplied by mods before opening the network.

### Should the lobby be synchronized?

To keep the same inventory on the lobby and PvP server, both backends must use the same solution and storage. On most networks, keeping the lobby separate is preferable: its compass, menus, and cosmetic items should not replace the PvP or Survival inventory.

For example, keep `lobby` independent, synchronize `pvp-1` and `pvp-2` together, and place `survival` in a separate group.

Before enabling synchronization, back up player data and test several server changes with a secondary account. Keep the same Minecraft version within each group and do not combine multiple synchronization solutions in one group. Ranks, punishments, economy, and chat are shared separately with plugins designed for a network.

## 5. Create an in-game portal with Advanced Portals

The link in the panel tells the proxy that a destination exists. The `/server survival` command then asks the proxy to transfer a player to it. A plugin installed on the lobby can trigger the same transfer when a player enters an area.

Creating the link does not create a physical portal. A standard Nether portal changes dimension on the same backend: it does not send the player to another server.

We use [Advanced Portals](https://www.boxtoplay.com/en/minecraft-hosting/minecraft-server/modrinth-plugins/advanced-portals-49462), a Bukkit plugin compatible with platforms including Paper, Spigot, Purpur, and Folia.

The method below uses the `bungee:` tag. For this use case, install the plugin on the **backend used as the lobby** , where the portal will be built. Do not install it on the destination server, and players do not need to add anything to their computers. Advanced Portals also offers a proxy component for its `proxy:` tag and advanced features, but it is not required for the simple portal in this tutorial.

If the lobby only runs Vanilla, Forge, NeoForge, or Fabric, this Bukkit plugin cannot be installed there directly. The modded server section explains which options to check.

### Install Advanced Portals on the lobby

In the BoxToPlay panel:

1. Open the Minecraft server used as the lobby.
2. Open **Plugins & Mods** , then **Plugin installation**.
3. Select the **Modrinth** tab.
4. Search for `Advanced Portals`.
5. Install a version compatible with your Minecraft version.
6. Fully restart the lobby.

 ![Searching for Advanced Portals in the BoxToPlay panel](https://forum.boxtoplay.com/uploads/default/original/2X/e/ee2682b4e144b635ddc9939c52f0fe7b1e83f8c8.jpeg)

### Prepare Velocity

If you use Velocity with the `bungee:` tag, check **before creating the portal** that `bungee-plugin-message-channel` is enabled in `velocity.toml`. This option allows backend plugins to use the BungeeCord-compatible messaging channel. It is independent from the player information forwarding mode.

It does not allow Velocity to load a BungeeCord plugin directly on the proxy.

### Build the portal to `survival`

Connect through the proxy and first confirm that `/server survival` works. Then, from the lobby with an administrator account:

1. Build the frame and leave the inside empty.
2. Type `/portal wand` to receive the selection tool.
3. Left-click one inner corner, then right-click the opposite corner.
4. Create the portal:

```plaintext
/portal create name:survival_portal bungee:survival triggerblock:NETHER_PORTAL

```

1. Type `/portal portalblock`, then place the provided blocks inside the selected area.
2. Walk through the portal and confirm that you reach the correct destination.

In this command:

- `name:survival_portal` is the unique portal name.
- `bungee:survival` asks the proxy to join the `survival` destination.
- `survival` must exactly match the name under **Server Links**.
- `triggerblock:NETHER_PORTAL` triggers the transfer inside the purple portal blocks.

The historical `bungee:` name works with BungeeCord and Velocity when the compatibility channel is enabled. Use `/portal show` to display portal areas and `/portal remove survival_portal` to remove this example.

The following screenshot, taken from the [official Advanced Portals command documentation](https://advancedportals.sekwah.com/docs/commands/), shows the result of `/portal show`. The green particles outline nearby portals and the currently selected area. They make it easier to spot a selection that is too large, too small, or misplaced.

 ![Portal area visualization with the /portal show command](https://forum.boxtoplay.com/uploads/default/original/2X/9/9ddc00f7a9e24323c730b6eae73ec6e00cad14b6.jpeg)

Advanced Portals can also create local destinations with the `/desti` commands. The `/desti show` command represents them with a particle arrow, as shown in the official screenshot below.

 ![Local destination visualization with the /desti show command](https://forum.boxtoplay.com/uploads/default/original/2X/0/0e3c8607a800d771d094ee354dff27145620a55c.jpeg)

This second command is **not required** for the portal in this tutorial: `bungee:survival` directly asks the proxy to transfer the player to the `survival` server. The `/desti` commands are only used for portals that teleport to a local position.

You can replace `NETHER_PORTAL` with `WATER`. For an NPC or menu, install a suitable plugin and configure it with the same destination identifier.

This portal points to one fixed destination. It does not automatically choose between `survival-1` and `survival-2`.

## 6. Set up load distribution

Linking `lobby`, `survival`, and `minigames` distributes players by activity. It is not load distribution because every destination serves a different purpose.

The need appears when several instances provide the same Survival game mode:

```plaintext
survival-1: 78 players
survival-2: 24 players
survival-3: maintenance

```

Here, `survival-1` is a destination identifier, while Survival is the game mode being offered.

A distribution plugin installed on the proxy can select an instance according to the features it provides. Before choosing one, check that it can handle:

- The actual availability of instances.
- Player count and maximum capacity.
- Instances placed in maintenance.
- Expected behavior when an instance fails.
- The destination to use after a reconnection.

### General setup principle

1. Link every instance with a distinct name, such as `survival-1`, `survival-2`, and `survival-3`.
2. Test every name with `/server`.
3. Install a plugin compatible with your proxy and version.
4. Follow its documentation to declare the instances and expose its distribution command or destination.
5. Configure the portal, NPC, or menu to call that feature.
6. Test an available instance, a full instance, and a stopped instance.

Distribution plugins do not all use the same group, alias, or health-check model. Do not copy configuration written for another plugin.

Advanced Portals does not measure load. The `bungee:survival-1` tag always sends the player to that exact destination. Likewise, BungeeCord `priorities` and Velocity `try` define an initial or fallback order: they do not automatically alternate players or select the least loaded instance.

Finally, several instances do not become interchangeable by simply copying a server. Inventories, permissions, currencies, punishments, and plugin data must be designed to work across a network, often with suitable plugins and a shared database.

## 7. Subdomains do not replace portals

An advanced configuration can associate addresses such as `survival.example.com` or `minigames.example.com` with different initial destinations. BungeeCord calls this mechanism `forced_hosts`, while Velocity provides an equivalent `forced-hosts` section.

This routing happens when a player joins the network. It does not move an already connected player and does not automatically choose the least loaded instance. Subdomains are an additional entry point, not a replacement for commands, portals, or menus.

With BungeeCord, **Force default server** must remain disabled for forced hosts to select the initial destination correctly.

## 8. Secure backend servers

Players must enter through the proxy. Backend ports must not provide a second public entry point.

Velocity modern forwarding verifies a shared secret, but it does not replace a firewall. With legacy BungeeCord-compatible forwarding, network restrictions, IP allowlisting, or BungeeGuard are especially important. In every case, only the proxy and required technical services should be able to reach the backends.

Only share the proxy address with players.

## 9. Special cases: Forge, NeoForge, and Fabric

The simplest path is to use a Paper or Purpur lobby with Advanced Portals, even when the destinations run Forge or NeoForge. Players must still have the version and modpack required by the destination.

With Velocity 3.3.0 or later:

- Native Forge protocol support applies to versions **strictly newer than 1.20.2**.
- For Forge 1.13 through 1.20.1, install [Ambassador](https://www.boxtoplay.com/en/minecraft-hosting/minecraft-server/modrinth-plugins/ambassador-50135) on the Velocity proxy.
- Do not assume Forge 1.20.2 is covered by either range: check the documentation and the exact version of your server.

For Velocity modern forwarding to a Forge or NeoForge backend, install a compatible version of [Proxy Compatible Forge](https://www.boxtoplay.com/en/minecraft-hosting/minecraft-server/modrinth-mods/proxy-compatible-forge-2793) on that backend and use the same secret as the proxy. For Fabric, the Velocity documentation recommends [FabricProxy-Lite](https://www.boxtoplay.com/en/minecraft-hosting/minecraft-server/modrinth-mods/fabricproxy-lite-1104).

Ambassador handles Forge protocol compatibility with Velocity. Proxy Compatible Forge and FabricProxy-Lite handle player information forwarding. None of these components creates a portal.

If the lobby itself runs Forge or NeoForge, look for a maintained mod that explicitly provides two features for your exact version: detecting an in-game area and sending the player to a BungeeCord or Velocity server name. At the time of writing, we do not recommend one universal ready-to-use solution for this case. The `forge-plugin-message` project advertises several versions on its page, but it currently provides no public downloadable file on Modrinth. It therefore cannot serve as a general recommendation in this tutorial.

## Validation checklist

Before opening the network:

- Connecting to the proxy address reaches the expected lobby.
- Every name under **Server Links** works with `/server name`.
- Compatible BoxToPlay servers were prepared automatically, and external backends were configured manually.
- Backends were restarted before the proxy.
- If inventories are synchronized, each group uses one solution, the same storage, and distinct server identifiers, after backing up player data and testing with a secondary account.
- The portal uses exactly the same destination identifier as the panel.
- On Velocity, `bungee-plugin-message-channel` is enabled before using the `bungee:` tag.
- A fallback destination works when a backend is stopped.
- Direct connection to a backend address and port is refused.
- `/send`, reload, and administration permissions remain restricted to the administration team.

## Which method should you choose?

- **To check a link:** use `/server`.
- **To share inventories across several backends:** use a solution compatible with their server software, shared storage, and distinct server identifiers.
- **To guide players from a lobby:** use a portal, NPC, or menu.
- **To choose a destination on connection:** configure the initial server or advanced subdomains.
- **To distribute equivalent instances:** add a compatible distribution plugin to the proxy.

Once these checks are complete, the proxy becomes the single entry point to the network. You can then improve the lobby, synchronize only the data that must be shared, and add load distribution when several instances genuinely serve the same role.

## Useful resources

### BungeeCord

- [About BungeeCord](https://www.spigotmc.org/wiki/about-bungeecord/)
- [BungeeCord commands](https://www.spigotmc.org/wiki/bungeecord-commands/)
- [BungeeCord configuration guide](https://www.spigotmc.org/wiki/bungeecord-configuration-guide/)
- [BungeeCord installation and security](https://www.spigotmc.org/wiki/bungeecord-installation/)

### Velocity

- [Built-in commands](https://docs.papermc.io/velocity/built-in-commands/)
- [`try` and forced-host configuration](https://docs.papermc.io/velocity/configuration/)
- [Player information forwarding](https://docs.papermc.io/velocity/player-information-forwarding/)
- [Forge server compatibility](https://docs.papermc.io/velocity/server-compatibility/)
- [Securing backends](https://docs.papermc.io/velocity/security/)

### Plugins and mods

- [Advanced Portals introduction](https://advancedportals.sekwah.com/docs/intro/)
- [Advanced Portals commands](https://advancedportals.sekwah.com/docs/commands/)
- [Advanced Portals `bungee:` and `proxy:` tags](https://advancedportals.sekwah.com/docs/portal-tags/)
- [MC-Data-Bridge on BoxToPlay](https://www.boxtoplay.com/en/minecraft-hosting/minecraft-server/modrinth-plugins/mc-data-bridge-58783)
- [MySql Player Bridge on BoxToPlay](https://www.boxtoplay.com/en/minecraft-hosting/minecraft-server/plugins/spigot-mysql-player-bridge-79214)
- [NBT-API on BoxToPlay](https://www.boxtoplay.com/en/minecraft-hosting/minecraft-server/modrinth-plugins/nbtapi-49272)
- [PlayerSync on BoxToPlay](https://www.boxtoplay.com/en/minecraft-hosting/minecraft-server/modrinth-mods/playersync-29521)
- [Proxy Compatible Forge on BoxToPlay](https://www.boxtoplay.com/en/minecraft-hosting/minecraft-server/modrinth-mods/proxy-compatible-forge-2793)
- [FabricProxy-Lite on BoxToPlay](https://www.boxtoplay.com/en/minecraft-hosting/minecraft-server/modrinth-mods/fabricproxy-lite-1104)

Ready to create the entry point for your network? [Explore BoxToPlay BungeeCord and Velocity servers](https://www.boxtoplay.com/en/bungeecord-hosting/bungeecord-server), link your Minecraft servers from the panel, and then validate every transfer with this tutorial.
