Проект

CLI и редакторы

Один инструмент, crafting, чтобы установить 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.