CHelper是一个我的世界基岩版的命令助手,致力于为我的世界指令玩家提供帮助。

网页版(暂时只有命令补全):https://www.yanceymc.cn/chelper

安卓版(功能更全):https://www.yanceymc.cn/chelper/CHelper-lastest.apk

我们的功能

  1. 当您输入命令的时候,可以看到命令的语法结构,参数解释,命令错误,补全提示。
  2. 帮助您把旧语法命令转为新语法命令。
  3. 公共指令库,您可以上传自己的指令,也可以查看别人上传的指令。

我们的优势:免费 - 开源 - 跨平台

受到ProjectXero的命令助手项目的启发,我想自己设计一个命令助手,我认为这真的是一件很酷的事情!!!

也许是受到开源精神的影响吧,我决定把整个项目开源,以此来吸引更多加入开发!!!

说到底,这个项目最开始只是出于我的兴趣,也从来没有想到过能坚持这么久。一路走来,感谢有你!!!

内核设计思路

CHelper-Resource

我们使用json:对于资源包,我们使用json格式的文件进行撰写,这方便了后续的修改。为了让大家都可以参与其中,我们对此写了一个文档:http://www.yanceymc.cn/blog/article/chelper-cpack/

我们自制序列化框架:我们希望内核初始化的时候性能更加优越,因此我们设计了紧凑的二进制文件格式用于存储资源包。为了方便json文件和二进制文件读写,我们设计了一个序列化框架:https://github.com/Yancey2023/serialization

CHelper-Core

我们重构过代码:在最开始的时候,所有的代码都是Java写的,因为代码质量低下,导致代码难以维护,每次更新后bug频繁发生,为了提高代码质量,我们决定对代码进行重构。

我们使用C++:在构思新架构的时候,我们在最开始设计时就考虑到了跨平台的需求,与此同时,我们也想追求最好的性能,经过抉择,我们选择了C++语言开发内核,再因地制宜开发出每个平台的原生应用,以此为用户创造最好的使用体验。(因为这个项目刚成立的时候作者对WebView跟反感,所以不用js)

Lexer:当我们得到一个命令的时候,我们使用Lexer将代码先分割成一个个token,以下是效果展示:

1
2
3
4
5
6
7
8
9
10
11
lex command: setblock ~~~ candle_cake[lit=
[STRING] (0,0) setblock
[WHITE_SPACE] (0,8)
[SYMBOL] (0,9) ~
[SYMBOL] (0,10) ~
[SYMBOL] (0,11) ~
[WHITE_SPACE] (0,12)
[STRING] (0,13) candle_cake
[SYMBOL] (0,24) [
[STRING] (0,25) lit
[SYMBOL] (0,28) =

Parser:接下来,我们根据命令语法树构建AST (Abstract Syntax Tree)。在命令树中,最开始的节点称为起始节点,结束的节点为LF节点。我们只需要使用深度搜索遍历所有可能性,找到是否有一种方式可以到达LF节点。如果存在一种到达LF节点且正好能把所有token使用完,那么这个就是正确的命令。如果不能正好把所有token消耗完,那就找到能把token消耗最多的可能性,这个可能性的错误原因就是要反馈给用户的错误原因,如果有多个可能性消耗的token一样多,那么就都有可能是错误原因。既然有了AST,我们给每个节点加上获取命令结构、当前参数作用、补全提示等功能,把每个功能都设计成一个单独的函数。对于命令结构和参数作用作用,我们之需要找到构建AST时发现的那条最正确的路线即可。对于补全提示,只需要从AST根节点进行深度搜索,遍历所有可能性后过滤重复的补全提示即可。

试用:至此,您已经知道了我们的架构。您可以使用https://www.yanceymc.cn/chelper尝试我们的内核(这只是网页版,安卓版本有更加完善的功能)

项目 技术 介绍
CHelper-Core C++ CHelper的内核,使用C++编写
CHelper-Android java、kotlin 基于CHelper-Core的安卓软件,目前功能最全
CHelper-Web js、vue3 基于CHelper-Core的网页版
CHelper-Qt C++、Qt 电脑版软件,与CHelper-Core一起维护,用于开发和测试

加入我们

我们目前只是一个小团队,非常需要您的加入。如果您掌握以下任何一项技能或者对其感兴趣,都可以尝试加入我们:

  1. 维护资源包:我们的资源包使用json文件编写,易于扩展,仅需少量修改就可以适配新版本我的世界。
  2. 编写网页:使用vue3框架编写网页版命令助手。
  3. 维护安卓界面代码:我们的安卓软件加入更多功能。
  4. 维护内核代码:重写部分c++代码,提高代码质量,对外提供更多接口。

我们可以提供的:

  1. 友好的交流氛围:如果对我们的代码有感到疑惑的地方,您可以随时问我们,我们很乐意解答。
  2. 贡献署名:我们可以在软件的贡献名单中加上您的名字。

二次开发

我们鼓励大家使用我们的内核进行二次的开发。因为我们使用C++制作内核,所以我们可以与任何一门语言进行交互。其中,C/C++、Java和JavaScript的接口有官方提供的接口,您可以使用这些进行二次开发。

代码贡献

第一步:把我们的GitHub仓库克隆到您的GitHub账号下。

第二步:对您克隆的仓库进行修改。

第三步:向我们的代码仓库发送一份PR (Pull Request),我们会审查代码,代码审核通过后您的代码将会合并到我们仓库中。