Compatibility
Minecraft: Java Edition
Platforms
Details
LostCrafters Server Plugin
A Velocity plugin that provides a customizable /server command with support for server groups, GUIs (via Protocolize), and text-based selection.
Features
- Server Groups: Define groups of servers. Players only see servers within their current group.
- GUI Support: Use Protocolize to show an interactive inventory for server selection.
- Text-based Selection: Fallback to clickable chat messages if GUIs are disabled.
- Customizable Messages: All messages support MiniMessage and can be fully customized in the config.
- LuckPerms Integration: Fine-grained permission control.
- MiniPlaceholders Support: Integration with MiniPlaceholders for dynamic placeholders from other plugins.
Commands
/server [server]: Opens the server selection GUI/menu or connects directly to the specified server./lcserver reload: Reloads the plugin configuration.
Permissions
lostcrafters.server.use: Allows use of the/servercommand.lostcrafters.server.reload: Allows use of the/lcserver reloadcommand.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.
Configuration
The configuration is located at plugins/lostcrafters/server/config.yml.
Example Configuration
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"
Configuration Breakdown
Server Groups
Each entry under server-groups defines a collection of servers.
name: (String) The display name of the group. Supports MiniMessage.show-gui: (Boolean) Iftrue, a GUI (chest menu) will be shown when using/server. Iffalse, a text-based selection message will be sent in chat.enable-switch-broadcast: (Boolean, Optional, Default:true) Iftrue, a message will be broadcast to all players within the group when a player switches from one server in the group to another.
Server Entries
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) Iftrue, 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.
Message Configuration
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 inserver-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.
Valid Placeholders per Message:
| 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>"
Dependencies
- Velocity API: 3.4.0-SNAPSHOT
- Protocolize: 2.4.1 (Optional, required for GUIs)
- MiniPlaceholders: (Optional, for additional placeholders)
- LuckPerms: For permission management
- Configurate (YAML): For configuration management



