Proxied Command
GitHub - Hangar - Modrinth - SpigotMC - Discord
This project is a fork of Proxied Warp.
Proxied Command allows players to execute commands across servers within a Velocity or BungeeCord network. The player doesn't need to manually switch servers – Proxied Command automatically connects them to the target server and then executes the command there.
The project consists of four modules:
| Module | Task |
|---|---|
velocity |
Forwards command requests between backend servers and connects players to the target server when needed |
paper |
Receives the /proxiedcommand command from the player and executes the requested command after the server connection. For Paper backend servers. Supports MiniMessage formatting for messages |
spigot |
Same functionality as the paper module, but for Spigot backend servers. Messages use legacy Minecraft color codes (&) instead of MiniMessage |
bungeecord |
BungeeCord proxy module that forwards command requests and connects players to the target server |
How It Works
Communication between the proxy and backend servers happens via the shared Plugin Messaging Channels proxied_command:command and proxied_command:message.
The process works as follows:
- Player executes command – On a backend server, the player calls the registered command with a target server and command (e.g.,
/proxiedcommand farmworld home farmhome). - Backend plugin sends message – The plugin (
paperorspigotmodule, depending on the server) first checks the input and permission, then builds the message<player> <server> <command>and sends it as a plugin message over the channel to the proxy. - Proxy plugin processes the request (Velocity or BungeeCord):
- Checks whether the specified player and target server exist.
- If the player is already on the target server, the message is forwarded directly.
- Otherwise, a connection to the target server is established first, and the message is only forwarded after the server switch succeeds.
- Target server executes the command – The plugin on the target server receives the forwarded message, checks whether the player is online there, and dispatches the given command as that player.
Installation
- Place the matching proxy module in the proxy's
pluginsfolder:velocityfor Velocity orbungeecordfor BungeeCord. - Install the matching backend module on every backend server where players should be able to trigger or receive commands: the
papermodule on Paper servers, thespigotmodule on Spigot servers. - Restart the proxy and the affected backend servers.
Configuration (Paper/Spigot Modules)
On first startup, the respective plugin generates a config.yml with the following default values. The aliases section is optional and can be added manually.
paper module:
need-permission: false
whitelisted-servers: []
whitelisted-commands: []
message:
usage: '<red>Usage:</red> /proxiedcommand <server> <command>'
usage-other: '<red>Usage:</red> /proxiedcommandother <player> <server> <command>'
permission: '<red>You do not have permission to do that!</red>'
server-not-whitelisted: '<red>This server is not whitelisted!</red>'
command-not-whitelisted: '<red>This command is not whitelisted!</red>'
player-not-online: '<red>Player is not online!</red>'
key-not-found: "<red>Key '<key>' not found!"
server-not-found: '<red>Server not found!'
connection-failed: '<red>Connection failed!'
spigot module:
need-permission: false
whitelisted-servers: []
whitelisted-commands: []
message:
usage: '&cUsage:&r /proxiedcommand <server> <command>'
usage-other: '&cUsage:&r /proxiedcommandother <player> <server> <command>'
permission: '&cYou do not have permission to do that!'
server-not-whitelisted: '&cThis server is not whitelisted!'
command-not-whitelisted: '&cThis command is not whitelisted!'
player-not-online: '&cPlayer is not online!'
key-not-found: "&cKey &f'%s' &cnot found!"
server-not-found: '&cServer not found!'
connection-failed: '&cConnection failed!'
| Key | Description |
|---|---|
need-permission |
Determines whether players need an explicit permission to use the commands (see Permissions). |
whitelisted-servers |
List of servers that are allowed to be used as a target. If empty, all servers are allowed. |
whitelisted-commands |
List of commands that are allowed to be executed. If empty, all commands are allowed. |
aliases |
Optional section mapping an alias to a target server. For example, spawn: lobby lets /proxiedcommand spawn execute spawn on lobby. |
message.usage |
Message shown when /proxiedcommand is used incorrectly. |
message.permission |
Message shown when permission is missing. |
message.server-not-whitelisted |
Message shown when a server is not whitelisted. |
message.command-not-whitelisted |
Message shown when a command is not whitelisted. |
message.usage-other |
Message shown when /proxiedcommandother is used incorrectly. |
message.player-not-online |
Message shown when the selected player is not online on the source server. |
message.key-not-found |
Fallback message used when a configured message key is missing. |
message.server-not-found |
Message shown when the target server cannot be found by the proxy. |
message.connection-failed |
Message shown when the proxy cannot connect the player to the target server. |
In the paper module, messages support MiniMessage formatting (e.g. <red>, <bold>). In the spigot module, messages use legacy Minecraft color codes with & as the formatting character (e.g. &c for red) instead.
Command
The following commands are available on the backend server (Paper or Spigot):
/proxiedcommand <server> <command>
/proxiedcommandother <player> <server> <command>
The commands also have aliases: /proxied_command and /pcmd for /proxiedcommand, and /proxied_command_other, /pcmdother, and /pcmdo for /proxiedcommandother.
<server>– Name of the target server, as registered in the proxy configuration (for examplevelocity.toml).<command>– The command to execute on the target server. Arguments may contain spaces.<alias>– An alias defined inconfig.ymlthat maps an alias/command name to a target server.<player>– An online player who should be connected and have the command executed.
/proxiedcommand can only be executed by players. /proxiedcommandother can also be executed from the console.
Permissions
If need-permission is set to true in config.yml, a player needs one of the following permissions to execute /proxiedcommand <server> <command>:
| Permission | Effect |
|---|---|
proxiedcommand.command.* |
Allows executing all commands. |
proxiedcommand.command.<command> |
Allows executing a specific command (spaces are replaced with underscores). |
For /proxiedcommandother, the corresponding permissions are proxiedcommand.command.other.* and proxiedcommand.command.other.<command>.
Permissions are matched by prefix, so it is not necessary to specify the complete command. For example, with need-permission: true:
proxiedcommand.command.gamemodeallows bothgamemode creativeandgamemode survival.proxiedcommand.command.gamemode_creativeallowsgamemode creative, but notgamemode survival.
Command spaces are replaced with underscores when the permission is built. The same prefix behavior applies to the corresponding proxiedcommandother permissions.
If both permissions are missing, the player receives the error message configured in message.permission, and the request is not sent to the proxy.
If need-permission is set to false (default), no permission check is performed and every player can use the command for every registered server.
Requirements
- A Velocity or BungeeCord proxy with the matching proxy module (
velocityorbungeecord). - A Paper based backend server (with the
papermodule) or a Spigot based backend server (with thespigotmodule). - The commands being executed must be available on the target backend server.
- Java version 25 or higher.
Known Limitations
- Proxied Command itself does not check whether the specified command exists – command validation and execution are handled by the target server.
Pinned Versions
- R1.8–26.23.0–4.0.0
Pages
Members
1Owner