截图
介绍

因为打字实在太费劲了
📖 关于
一款客户端模组,可为命令提供更好的自动补全建议。
支持来自数据包或服务器插件的模组命令和自定义命令,且无需在服务器端安装即可使用。
💡 用法
要输入一个由多个单词组成的命令/参数,只需输入这些单词的 几个首字母。
例如,如果你想输入 /gamerule doDaylightCycle true,可以输入 /gr dc t

⌨ 键盘快捷键
除了 <Tab>,你也可以使用 <Ctrl>+<Space>来接受建议;这会自动插入一个空格,方便你开始输入下一个参数。
此外,如果当前命令已知是不完整的(你的文本会显示为红色),按下 <Enter>会接受当前选中的建议(如果有),而不是尝试执行无效命令。
默认情况下,使用 <Ctrl>+<Space>接受建议,或点击鼠标中键接受建议时,也会删除光标后的剩余文本,方便你修改之前输入的参数。此行为可以针对不同按键/鼠标按钮分别设置。
🔀 消除建议歧义
为了区分不同的建议,你可能需要为每个单词多输入几个字母。
例如,输入 fireDamage 而不是 fallDamage 时,后者会在输入 fd 时首先出现。你可以输入 fid。

通常,多输入几个字母,让想要的建议出现在列表前面,要比用方向键或按 <Tab> 循环选择快得多;而且输入还能形成肌肉记忆。
随着时间推移,你会熟悉常用命令所需输入的最少字母数量,输入起来也会轻松自如。
🔍 浏览建议
由于你输入的内容不必出现在名称的开头,因此与 Minecraft 通常的建议功能相比,你可能会发现更多有用的建议。
例如,输入 /give @p wood,就会看到所有名称中包含以 wood 开头的单词的物品建议。

此外,如果你的查询与某条建议的首字母都不匹配,模组也会在建议内容的任意位置查找模糊匹配,并将其列在智能匹配之后。当你不确定要找什么时,这会很有帮助。
🎁 额外功能
此模组还会默认反转建议的顺序,让最相关的建议显示在输入栏旁边,也就是你视线已经聚焦的位置。
如果你觉得这样不太习惯,可以使用以下命令关闭此功能:
/smartcompletion invert_suggestion_order false
它还会阻止鼠标选中出现在指针下方的建议。这是一个老问题,会让你在小窗口中输入命令变得不必要地困难。
✨ 它是如何运作的?
对于你输入的每条命令,我们都会向服务器请求两次建议。第一次会省略你为最后一个参数输入的内容(盲查询),第二次则会包含所有输入内容,作为确保结果完整的保障(完整查询)。大多数情况下只会发送一个请求,因为我们还会缓存输入过程中的请求,以减少延迟和建议列表闪烁。
接着,我们假设服务器会返回盲查询的所有可能建议,并在客户端对建议进行智能筛选和排序。
如果已提供的建议列表中有任何意外建议未被我们的筛选器匹配,它们也会以不同颜色显示,这样你就不会错过任何来自复杂命令的建议,即使这些命令会提供自己的智能建议。
我们使用两种方法筛选建议:
- 将查询内容的各个片段与建议中各部分的首字母进行智能匹配(gr 可匹配 gamerule) (这也是任何代码编辑器中的自动补全方式)
- 在建议中弱匹配查询内容的每个部分(lock on 可匹配 blockExplosionDropDecay)(当你不知道要找什么时很有用)
✂ 单词如何拆分?
我们会在所有非字母字符处以及驼峰命名的单词边界处拆分单词。
此外,如果命令无法通过这种方式拆分,我们会假定它采用了 flatcase 写法,就像大多数 Minecraft 命令一样。
遗憾的是,如果没有词典,就无法系统地拆分 flatcase。因此,我们使用了一个小型词典,其中包含 Minecraft、Fabric、(Neo)Forge 和 WorldEdit 命令中常用的单词,尝试将命令拆分成单词。
资源包可以覆盖此词典(参见 维基),但如果发现单词拆分不正确,欢迎随时反馈问题。
📋 建议如何排序?
建议会按照以下标准排序,按适用顺序依次判断:
- 距离光标更近的建议会优先显示 (/give @p chest 会优先建议 [,而不是 minecart_chest)
- 单词首字母匹配会优先于兜底匹配 (doWeatherCycle > sendCommandFeedback)
- 超过特定阈值的显著匹配会优先显示(apple > acacia_pressure_plate)
- 匹配到更多首字母的结果会优先显示 (doInsomnia > disableRaids)
- 部分首字母可匹配多个单词的结果会优先显示 (doDaylightCycle > doWeatherCycle)
- 单词较少的建议会优先显示 (doInsomnia > doImmediateRespawn)
- 匹配位置越靠近建议的开头,越优先显示 (gamemode > defaultgamemode)
- 较短的建议会优先显示 (tp > tell)
除此之外,建议会按照服务器提供的原始顺序显示(通常按字母顺序) (fallDamage > fireDamage)。
目前还无法自定义此排序。如果你有任何改进建议,欢迎告诉我。制定这些规则的目的是符合自然的使用习惯,并且输入更多首字母即可消除歧义。
🎨 自定义
建议会根据 style.json 文件中定义的样式进行高亮,也可以通过资源包覆盖这些样式(参见 Wiki)。
默认情况下,建议中的匹配内容会以蓝色高亮。
查询部分的替代匹配项(doDaylightCycle)、回退匹配项 (sendCommandFeedback)以及意料之外的服务器建议都会以深青色高亮。
此外,如果建议以一个或多个单词组成的前缀开头,后接冒号(即资源位置命名空间),除非匹配到,否则会以深灰色高亮(minecraft:golden_apple)。
❓ 帮助
本模组有一个Wiki,欢迎查阅。
此外,如果你遇到任何问题,或者只是想打声招呼,欢迎来我们的Discord 服务器。
🤝 支持此项目
如果你想支持此项目,不妨分享给朋友!
常见问题
Smart Completion 支持哪些 Minecraft 版本?
Smart Completion 支持 Minecraft Java 版 1.16.3–26.3,共 37 个版本,可用的加载器:Fabric / Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。
Smart Completion 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
评论
登录后评论和评分