Customizable /server command and connection management velocity plugin
A Velocity plugin that provides a customizable /server command with support for server groups, GUIs (via Protocolize), and text-based selection.
/server [server]: Opens the server selection GUI/menu or connects directly to the specified server./lcserver reload: Reloads the plugin configuration.lostcrafters.server.use: Allows use of the /server command.lostcrafters.server.reload: Allows use of the /lcserver reload command.lostcrafters.serveraccess.<server>: Grants access to connect to a specific server, where <server> is the internal Velocity server name.lostcrafters.serveraccess.*: Grants access to all servers.Note: By default, players have no access to any server. You must explicitly grant access via these permissions.
If a player's permission is revoked while they are connected to a server, they will be automatically redirected to a fallback server (as defined in velocity.toml) or disconnected if no fallback is available.
The configuration is located at plugins/lostcrafters/server/config.yml.
Note: For GUI items, it is recommended to use vanilla Minecraft IDs (e.g.,
minecraft:compass). Modded items may not be supported by the GUI library and will default to a diamond sword if not found.
server-groups:
survival_group:
name: "<green>Survival Group</green>"
show-gui: true
enable-switch-broadcast: true
servers:
- lobby:
name: "Lobby"
item: "minecraft:compass"
- survival:
name: "Survival"
item: "minecraft:iron_pickaxe"
- creative:
name: "Creative"
item: "minecraft:grass_block"
- staff_lounge:
name: "Staff Lounge"
hide-from-list: true
minigames_group:
name: "<yellow>Minigames Group</yellow>"
show-gui: false
servers:
- minigames_lobby:
name: "Minigames Lobby"
item: "minecraft:clock"
Each entry under server-groups defines a collection of servers.
name: (String) The display name of the group. Supports MiniMessage.show-gui: (Boolean) If true, a GUI (chest menu) will be shown when using /server. If false, a text-based selection message will be sent in chat.enable-switch-broadcast: (Boolean, Optional, Default: true) If true, a message will be broadcast to all players within the group when a player switches from one server in the group to another.Each server within a group is defined by its internal Velocity name and the following properties:
name: (String) The display name of the server.item: (String, Optional, Default: minecraft:diamond_sword) The Minecraft item ID for the GUI representation (e.g., minecraft:compass).hide-from-list: (Boolean, Optional, Default: false) If true, this server will be hidden from the GUI and the text selection list. The server remains accessible via /server <name> if the player has the appropriate permission. This is useful for servers like limbo lobbies or staff-only areas that you don't want to advertise in the general list.You can customize all plugin messages in the messages section of the config. The following placeholders are available and valid per message as indicated:
%servername%: The display name of the server as configured in server-groups.%playercount%: The current number of players online on that server.%players%: A comma-separated list of names of players currently on that server.%server%: The internal ID/name of the server.%player%: The name of the player who is switching servers.%previousserver%: The internal ID of the previous server.%previousservername%: The display name of the previous server.| Message | Default Message | Valid Placeholders |
|---|---|---|
select-server |
<yellow>Select a server: </yellow> |
(none) |
server-format |
[<green>%servername%</green>] |
%servername%, %playercount%, %players% |
current-server-format |
[<gray>%servername%</gray>] |
%servername%, %playercount%, %players% |
hover-text |
<aqua>%servername%</aqua><newline><white>Players (%playercount%): %players%</white> |
%servername%, %playercount%, %players% |
no-permission |
<red>You do not have permission to use this command.</red> |
(none) |
reloaded |
<green>Configuration reloaded.</green> |
(none) |
server-not-found |
<red>Server %server% not found.</red> |
%server% |
already-connected |
<red>You are already connected to %servername%.</red> |
%server%, %servername% |
connecting |
<green>Connecting to %servername%...</green> |
%server%, %servername% |
no-server-permission |
<red>You do not have permission to connect to %servername%.</red> |
%server%, %servername% |
no-fallback-server |
<red>You no longer have permission to be on this server and no fallback server is available.</red> |
(none) |
server-switch-broadcast |
<gray>%player% has switched from %previousservername% to %servername%</gray> |
%player%, %server%, %servername%, %previousserver%, %previousservername% |
Example usage in hover-text:
hover-text: "<aqua>%servername%</aqua><newline><white>Players (%playercount%): %players%</white>"