Проект
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+
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 с командой ["crafting", "lsp"] для файлов .craft и грамматика CraftScript.tmLanguage.json. JetBrains: плагин LSP4IJ с той же командой, а грамматику импортируй как пакет TextMate. Грамматика работает в любом редакторе, который читает файлы .tmLanguage.