Projekt

CLI und Editoren

Ein Werkzeug, crafting, um zu installieren, eine Mod zu erstellen, sie zu prüfen und sie zu testen, ohne das Spiel zu öffnen. Und ein Language Server, der deinem Editor dieselben Fehler liefert, die du beim Laden der Mod sehen würdest.

command not found: crafting. Nach dem Bauen liegt die ausführbare Datei unter crafting-cli/build/install/crafting/bin/crafting. Füge diesen Ordner deinem PATH hinzu oder verlinke sie aus einem Ordner, der schon darin ist, zum Beispiel ln -s "$PWD/crafting-cli/build/install/crafting/bin/crafting" /usr/local/bin/crafting.

Befehle

Befehl Was er macht
install --mc 26.3 [--dir DIR] Fügt dem offiziellen Launcher das Crafting-Profil hinzu.
install --mc 26.3 --server DIR Richtet einen Serverordner mit start-crafting.sh und .bat ein.
new <name> [--kind script|kotlin|plugin] Erstellt eine neue Mod.
check <file.craft>… Prüft Syntax und Typen.
sandbox [folder] Simulierter Server, um Mods ohne das Spiel zu testen.
mods [folder] Listet die Mods in einem Spielordner auf und prüft ihre Abhängigkeiten.
lsp Language Server für Editoren (der Editor startet ihn).
version Version von Crafting.

Eine Mod erstellen

Erstellt eine Mod, die schon nach Aufgaben aufgeteilt ist, wie in Eine Mod organisieren empfohlen:

Befehl Erstellt
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 (verbindet nur die Teile), content/ModContent.kt, events/Welcome.kt, commands/GemCommand.kt, ein Manifest und build.gradle.kts für Java 25
crafting new gems --kind plugin Die Einstiegsklasse, events/ChatFilter.kt und commands/HelloCommand.kt

Eine Mod prüfen

Prüft Syntax und Typen einer oder mehrerer .craft-Dateien und folgt ihren Imports. Jeder Fehler enthält Datei und Zeile, dazu einen Vorschlag, wenn es einen ähnlichen Namen gibt. Bei Fehlern endet der Befehl mit einem Exit-Code ungleich null, also kannst du ihn in der Continuous Integration nutzen.

Terminal
crafting check mods/rubies/main.craft

In der Sandbox testen

Ein simulierter Server mit derselben API wie das Spiel. Er lädt die Mods in <folder>/mods und <folder>/plugins im Entwicklungsmodus: Speichern einer Datei lädt die Mod neu.

Befehle in der SandboxText
join <name>                   ein Spieler tritt bei
leave <name>                  verlässt das Spiel
as <name> <chat or /command>  als dieser Spieler chatten oder einen Befehl ausführen
/<command>                    Befehl als Konsole
break <name> <x> <y> <z>      einen Block abbauen
tick [n]                      n Ticks vorspulen
op <name>                     Operatorrechte geben
inv <name>                    das Inventar zeigen
reload <mod>                  ein Skript oder Plugin neu laden
quit                          beenden

Editoren

Alle nutzen denselben Language Server, crafting lsp, der die echte CraftScript-Prüfung ausführt. Sie brauchen crafting im PATH.

VS Code

Die CraftScript-Erweiterung bietet: Syntaxhervorhebung (auch für {interpolation} und &a-Farben in Strings), Fehler beim Tippen, typisierte Autovervollständigung (nach player., nach on, nach : und für deine Klassen und importierten Module), Infos beim Darüberfahren, Snippets und die Befehle Check current file und Run sandbox server for this mod.

Terminal
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

Ist crafting nicht im PATH, trag seinen Pfad in der Einstellung craftscript.craftingPath ein.

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 und JetBrains

Sublime Text: das Paket LSP mit dem Befehl ["crafting", "lsp"] für .craft-Dateien und die Grammatik CraftScript.tmLanguage.json. JetBrains: das Plugin LSP4IJ mit demselben Befehl, und importiere die Grammatik als TextMate-Bundle. Die Grammatik funktioniert in jedem Editor, der .tmLanguage-Dateien liest.