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.
crafting check mods/rubies/main.craftIn 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.
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 beendenEditoren
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.
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.vsixIst crafting nicht im PATH, trag seinen Pfad in der Einstellung craftscript.craftingPath ein.
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 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.