项目
CLI 与编辑器
一个工具 crafting,用于安装、创建模组、检查模组,以及无需打开游戏就能测试。另有一个语言服务器,让你的编辑器显示与加载模组时相同的错误。
command not found: crafting。构建完成后,可执行文件位于 crafting-cli/build/install/crafting/bin/crafting。把该文件夹加入 PATH,或从一个已在其中的文件夹建立链接,例如 ln -s "$PWD/crafting-cli/build/install/crafting/bin/crafting" /usr/local/bin/crafting。
命令
| 命令 | 作用 |
|---|---|
install --mc 26.3 [--dir DIR] |
把 Crafting 配置添加到官方启动器。 |
install --mc 26.3 --server DIR |
配置一个带有 start-crafting.sh 和 .bat 的服务器文件夹。 |
new <name> [--kind script|kotlin|plugin] |
创建新模组。 |
check <file.craft>… |
检查语法和类型。 |
sandbox [folder] |
模拟服务器,无需游戏即可测试模组。 |
mods [folder] |
列出游戏文件夹中的模组并检查其依赖。 |
lsp |
供编辑器使用的语言服务器(由编辑器启动)。 |
version |
Crafting 版本。 |
创建模组
创建一个已按职责拆分好的模组,正如组织模组中所推荐的:
| 命令 | 创建的内容 |
|---|---|
crafting new gems |
main.craft、content/items.craft、content/blocks.craft、content/recipes.craft、events/welcome.craft、commands/gem.craft |
crafting new gems --kind kotlin |
GemsMod.kt(只负责连接各部分)、content/ModContent.kt、events/Welcome.kt、commands/GemCommand.kt、一个清单文件,以及面向 Java 25 的 build.gradle.kts |
crafting new gems --kind plugin |
入口类、events/ChatFilter.kt 和 commands/HelloCommand.kt |
检查模组
检查一个或多个 .craft 文件的语法和类型,并跟随它们的导入。每个错误都包含文件和行号,存在相似名称时还会给出建议。有错误时以非零状态码退出,因此可以用于持续集成。
crafting check mods/rubies/main.craft在沙盒中测试
一个拥有与游戏相同 API 的模拟服务器。它以开发模式加载 <folder>/mods 和 <folder>/plugins 中的模组:保存文件即重新加载模组。
join <name> 一名玩家加入
leave <name> 离开
as <name> <chat or /command> 以该玩家身份聊天或执行命令
/<command> 以控制台身份执行命令
break <name> <x> <y> <z> 破坏一个方块
tick [n] 前进 n 刻
op <name> 授予管理员权限
inv <name> 显示物品栏
reload <mod> 重新加载脚本或插件
quit 退出编辑器
所有编辑器都使用同一个语言服务器 crafting lsp,它运行的是真正的 CraftScript 检查器。需要 crafting 位于 PATH 中。
VS Code
CraftScript 扩展提供:语法高亮(包括字符串中的 {interpolation} 和 &a 颜色)、输入时的错误提示、类型感知的自动补全(在 player.、on、: 之后,以及你的类和导入的模块)、悬停信息、代码片段,以及 Check current file 和 Run sandbox server for this mod 命令。
git clone <extension-repository> craftscript-vscode && cd craftscript-vscode
npm install --omit=dev
npx @vscode/vsce package --allow-missing-repository
code --install-extension craftscript-0.1.0.vsix如果 crafting 不在 PATH 中,在 craftscript.craftingPath 设置中指定它的路径。
Neovim 0.11+
vim.filetype.add({ extension = { craft = "craftscript" } })
vim.lsp.config("craftscript", {
cmd = { "crafting", "lsp" },
filetypes = { "craftscript" },
root_markers = { "main.craft", ".git" },
})
vim.lsp.enable("craftscript")Helix
[language-server.craftscript]
command = "crafting"
args = ["lsp"]
[[language]]
name = "craftscript"
scope = "source.craftscript"
file-types = ["craft"]
roots = ["main.craft"]
comment-token = "//"
indent = { tab-width = 4, unit = " " }
language-servers = ["craftscript"]Sublime Text 与 JetBrains
Sublime Text:使用 LSP 包,为 .craft 文件配置命令 ["crafting", "lsp"],并使用 CraftScript.tmLanguage.json 语法文件。JetBrains:使用 LSP4IJ 插件配置相同的命令,并把语法文件作为 TextMate bundle 导入。该语法文件适用于任何能读取 .tmLanguage 文件的编辑器。