# VelocityCommandForward
**Forward commands from backend to proxy!**
## ✨ 特点
* 自定义命令。
* 自定义消息。
* 可自定义发送的命令静默(不发送消息或控制台日志)。
* 玩家和控制台可以执行代理命令(向代理发送数据包以作为玩家或控制台执行)。
## 📥 如何安装? / 安装 / 设置
非常简单,将 Velocity 和 Paper 插件都上传到其设计的服务器(代理/后端)。
1. 关闭你的代理 (Velocity) 和后端 (Paper) 服务器。
2. 下载 Velocity 和 Paper 版本的插件。
3. 将插件文件(适用于你的服务器版本)放入 `plugins` 文件夹。
4. 启动你的服务器。
## 💡 注意事项
* 配置仅在后端服务器上生成!
## ❓ 这个有什么用?
* 我的用例非常小众,我有一个 Discord 命令可以运行 Minecraft 命令(如果玩家在线),
并且问题是 Discord 机器人运行在后端服务器上,所以我决定制作一个插件来运行代理
命令,例如 `/skin`。
* 另一个常见用例是在 Velocity 上安装 TAB 插件并需要从后端服务器将命令发送到代理服务器时,例如 `/btab scoreboard` 以切换 TAB 的计分板。虽然手动执行效果很好,但如果你使用其他插件提供的绑定到此命令的自定义物品,命令可能会执行失败。在这种情况下,简单地依赖此插件的命令可以解决 TAB 命令无法运行的问题。
## 🕹️ 命令用法
命令名称可以在后端插件配置中更改:
```yaml
custom-command: proxyexec
```
| 命令 | 描述 | 权限 |
|------------------------|------------------------------------------------------------------------------------------------------|-----------------------------------|
| `/proxyexec reload` | 用于重新加载插件配置。更改 `custom-command` 需要服务器重启。 | velocitycommandforward.admin (op) |
| `/proxyexec ` | 将命令转发到代理。例如:`/proxyexec tab reload` 在代理上执行 `/tab reload`。 | velocitycommandforward.send |
在示例中,我将命令更改为 `proxy`,我没有将其设置为默认值,因为我担心其他插件可能已经使用了此命令。
## 在控制台中执行
如果你在控制台中执行命令,你将不会获得任何输出,而是它将在代理服务器日志中显示。
为了能够将命令数据包发送到代理,必须至少有一个在线玩家(插件消息通道是后端和代理之间的工作方式)。
后端服务器。
代理服务器。
## 📄 默认配置
更改 `custom-command` 需要服务器重启。
```yaml
# VelocityCommandForward
# 用于将命令转发到代理的命令。
# 更改需要重启服务器才能生效。
custom-command: proxyexec
# 你可以在这里指定不会发送日志和消息的根命令。
filtered-commands:
- example_command
# {command} = 发送者发送的命令
# {sender} = 发送命令的玩家
# 如果设置为 '', 则不会发送消息。
messages:
reload: '&aPlugin 消息和过滤器已重新加载!'
command-sent-as-player: '&2命令已发送到代理 &7=> &a/{command}'
command-sent-as-console: '&2命令已作为控制台发送到代理 &7=> &a/{command}'
no-online-player: '&c必须至少有 1 名在线玩家才能执行代理控制台命令!'
console-log: '[{sender}] 向代理发送命令数据包 => /{command}'
velocity-log: '[{sender}] 收到代理命令数据包 => /{command}'
```
## ✅ 要求
* Velocity 插件是用 `Java 17` 构建的,Paper 插件是 `Java 21`。
* 与版本 1.20.6 及更高版本兼容。 由于此插件使用 Brigadier(在 1.20.6 中添加)来构建命令,因此运行较低版本的服务器将出现错误。