跳到正文

Smart Completion

提供更完善的命令补全建议

收藏

截图

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。
Smart Completion

因为打字实在太费劲了

Minecraft: 1.16 - 26.3 NeoForge Fabric Environment: Client (not needed in the server) GitHub Join the Discord

📖 关于

一款客户端模组,可为命令提供更好的自动补全建议。

支持来自数据包或服务器插件的模组命令和自定义命令,且无需在服务器端安装即可使用。

💡 用法

要输入一个由多个单词组成的命令/参数,只需输入这些单词的 几个首字母。

例如,如果你想输入 /gamerule doDaylightCycle true,可以输入 /gr dc t

/gamerule doDaylightCycle false

⌨ 键盘快捷键

除了 <Tab>,你也可以使用 <Ctrl>+<Space>来接受建议;这会自动插入一个空格,方便你开始输入下一个参数。

此外,如果当前命令已知是不完整的(你的文本会显示为红色),按下 <Enter>会接受当前选中的建议(如果有),而不是尝试执行无效命令。

默认情况下,使用 <Ctrl>+<Space>接受建议,或点击鼠标中键接受建议时,也会删除光标后的剩余文本,方便你修改之前输入的参数。此行为可以针对不同按键/鼠标按钮分别设置。

🔀 消除建议歧义

为了区分不同的建议,你可能需要为每个单词多输入几个字母。

例如,输入 fireDamage 而不是 fallDamage 时,后者会在输入 fd 时首先出现。你可以输入 fid。

fallDamage/fireDamage

通常,多输入几个字母,让想要的建议出现在列表前面,要比用方向键或按 <Tab> 循环选择快得多;而且输入还能形成肌肉记忆。

随着时间推移,你会熟悉常用命令所需输入的最少字母数量,输入起来也会轻松自如。

🔍 浏览建议

由于你输入的内容不必出现在名称的开头,因此与 Minecraft 通常的建议功能相比,你可能会发现更多有用的建议。

例如,输入 /give @p wood,就会看到所有名称中包含以 wood 开头的单词的物品建议。

/give @p 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/版本名 下面。

评论

登录后评论和评分

endor8 的其他作品

查看全部 →