Let Me Click And Send for Server

Let Me Click And Send for Server

一个简单的Minecraft服务端模组,它将所有非命令的`run_command`内容替换为自定义命令, 以绕过自1.19.1-rc1以来的客户端限制

工具

一个简单的 Minecraft 服务端模组,它会将所有非命令的 run_command 内容替换为自定义命令, 以绕过自 1.19.1-rc1 起的客户端限制

如果你想要更直接的解决方案,这里有一个仅客户端模组可以实现同样的功能: LetMeClickAndSend

模组 端 优势 劣势
LetMeClickAndSend 客户端 行为与 mc1.19.1 之前完全相同 需要安装在所有玩家的客户端上
LetMeClickAndSendForServer 服务端 无需安装在客户端 会将最大聊天消息长度减少 7 个字符

示例

让我们运行以下命令,然后点击显示出来的文本

# Minecraft [1.7, 1.21.5)
/tellraw @a {"text":"click me to send \"hi\"","clickEvent":{"action":"run_command","value":"hi"}}

在原版 1.19.1 ~ 1.21.4 中,点击之后,你无法说出任何内容,因为 hi 不是有效命令(不以 / 开头)

使用此模组后,服务器会自动将上述点击事件中的 value 字段替换为 /lmcas hi, 因此客户端在点击后可以毫无问题地“发送”该消息

收到命令后,服务器会以与玩家消息相同的格式广播一条消息,模拟玩家在聊天中说“hi”

MC 1.21.5+

自 MC 1.21.5 起,run_command 的行为发生了很大变化

首先是命令语法上的变化,影响不大:

# Minecraft [1.21.5, ~)
/tellraw @a {"text":"click me to send \"hi\"","click_event":{"action":"run_command","command":"hi"}}

接下来是行为上的变化,影响更大:

  • command 值始终有效,无论它是否以 / 开头
  • 客户端会从 command 值中去除 / 前缀,并将剩余字符串作为命令发送

已经无法再正确区分“用于发送聊天消息的 run_command”和“用于发送命令的 run_command”

作为一种变通方案,适用于 MC >= 1.21.5 的 LetMeClickAndSendForServer 只会将某些 command 替换为 /lmcas 命令。 默认情况下,只有以 !! 开头的 command 值会被替换,这是 MCDReforged 插件生态系统中常用的命令前缀

新增了一个位于 ./config/letmeclickandsendforserver/config.json 的配置文件,用于自定义替换行为

{
    "replacePattern": "!!.*"
}

replacePattern 应当是一个有效的正则表达式模式。所有完全匹配该模式的 command 值都会被替换为 /lmcas 命令

要使用默认配置进行测试,你可以使用:

/tellraw @a {"text":"click me to send \"!!MCDR\"","click_event":{"action":"run_command","command":"!!MCDR"}}

要求

这是一个仅服务端模组。它需要 0 个额外依赖