更长的命令框

更长的命令框

移除聊天和命令输入框的256字符限制,提升至32,767字符。无需截断即可发送长NBT命令(setblock、summon、give)——仅客户端,无需Fabric API,适用于Minecraft 26.1及以上版本。

更长的命令输入框

输入并发送命令,最高可达服务器真实的 32,500 字符限制——不再受 256 字符的壁垒限制。

它的功能

  • 输入限制从 256 提高到 32,767 字符:聊天和命令输入框 (ChatScreen) 现在接受完整的长度范围。
  • 命令在发送前不再被截断:Minecraft 26.2 在发送时会静默地将每条命令截断至 256 字符(通过 normalizeChatMessage 到 trimChatMessage 的调用链)。本模组绕过了对斜杠命令的截断,因此包含长 NBT 的命令可以完整传输。
  • 仅影响聊天和命令输入框:告示牌、成书、服务器地址栏以及其他文本组件保持原版行为。

结果

长命令现在可以正常工作,最高可达服务器接受的上限:

  • 命令 (setblock, summon, give, data 等):客户端限制为 32,767 字符 (本模组),服务器限制约为 32,500 字符。
  • 普通聊天消息:客户端限制为 32,767 字符 (仅输入框),服务器限制为 256 字符 (原版服务器)。

一个 449 字符的 setblock 命令,用于放置一个带有全套铁质盔甲、纹饰和效果的僵尸刷怪笼——一次输入,原样执行。

为什么 Minecraft 26.1+ 需要这个模组

Minecraft 26.1+ 重构了 UI 和聊天发送层,这引入了两道 256 字符的壁垒:

  1. EditBox.setMaxLength(256):输入框拒绝任何超过 256 字符的内容。
  2. 26.1+ 新增:ChatScreen.normalizeChatMessage() 应用了 StringUtil.trimChatMessage(),该函数在发送前对包括命令在内的每条消息进行硬性的 substring(0, 256) 截断。即使提高了输入限制,命令仍会被截断至 256 字符,导致服务器报错“Expected literal ','”。

更长的命令输入框修复了这两点:输入框接受更多字符,并且命令可以完整地离开客户端。

需求

  • Minecraft 26.1+
  • Fabric Loader 0.19.3 或更新版本
  • Java 25 或更新版本
  • 无需 Fabric API:本模组仅使用了 Mixin 和 Fabric Loader。

限制

  • 仅客户端(环境:客户端)。服务器强制执行它们自己的规则:
    • 命令:在 vanilla 服务器上约为 32,500 字符——对于长 NBT 来说绰绰有余。
    • 普通聊天消息:在 vanilla 服务器上仍会因超过 256 字符而被拒绝;发送更长的聊天消息需要服务器端支持。
  • 可在单人游戏和多人游戏中运行。发送长命令无需服务器端模组。

技术细节

在 ChatScreen 上有两个针对性的 Mixin:

  • init:在 vanilla 设置 256 之后,重新应用 setMaxLength(32767)。
  • normalizeChatMessage:对斜杠命令跳过 256 字符的截断,同时保持普通聊天消息的 vanilla 行为。