Проєкт

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, маніфест і build.gradle.kts для Java 25
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+

~/.config/nvim/plugin/craftscript.luaLua
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

~/.config/helix/languages.tomlTOML
[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 з командою ["crafting", "lsp"] для файлів .craft і граматика CraftScript.tmLanguage.json. JetBrains: плагін LSP4IJ з тією самою командою, а граматику імпортуй як пакет TextMate. Граматика працює в будь-якому редакторі, що читає файли .tmLanguage.