プロジェクト

CLI とエディター

インストール、Mod の作成、チェック、ゲームを開かないテストまでを 1 つのツール crafting で。さらに、Mod を読み込んだときと同じエラーをエディターに表示する言語サーバーもあります。

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] 新しい Mod を作成します。
check <file.craft>… 構文と型をチェックします。
sandbox [folder] ゲームなしで Mod をテストするための、シミュレーションのサーバー。
mods [folder] ゲームフォルダー内の Mod を一覧表示し、依存関係をチェックします。
lsp エディター用の言語サーバー(エディターが起動します)。
version Crafting のバージョン。

Mod を作る

Mod の整理 で推奨しているとおり、最初から責務ごとに分かれた Mod を作成します。

コマンド 作成されるもの
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

Mod をチェックする

1 つ以上の .craft ファイルの構文と型を、インポートをたどりながらチェックします。各エラーにはファイルと行が含まれ、似た名前があれば候補も示されます。エラーがあると 0 以外の終了コードで終わるので、継続的インテグレーションでも使えます。

ターミナル
crafting check mods/rubies/main.craft

サンドボックスで試す

ゲームと同じ API を持つシミュレーションのサーバーです。<folder>/mods と <folder>/plugins の Mod を開発モードで読み込みます。ファイルを保存すると Mod が再読み込みされます。

サンドボックス内のコマンドテキスト
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 チェッカーを実行します。PATH に crafting が必要です。

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 パッケージで .craft ファイルにコマンド ["crafting", "lsp"] を設定し、CraftScript.tmLanguage.json の文法を使います。JetBrains:LSP4IJ プラグインで同じコマンドを設定し、文法を TextMate バンドルとしてインポートします。この文法は .tmLanguage ファイルを読めるどのエディターでも使えます。