Projet

CLI et éditeurs

Un seul outil, crafting, pour installer, créer un mod, le vérifier et le tester sans ouvrir le jeu. Et un serveur de langage qui donne à ton éditeur les mêmes erreurs que tu verrais au chargement du mod.

command not found: crafting. Après la compilation, l’exécutable se trouve dans crafting-cli/build/install/crafting/bin/crafting. Ajoute ce dossier à ton PATH ou crée un lien depuis un dossier qui y est déjà, par exemple ln -s "$PWD/crafting-cli/build/install/crafting/bin/crafting" /usr/local/bin/crafting.

Commandes

Commande Ce qu’elle fait
install --mc 26.3 [--dir DIR] Ajoute le profil Crafting au launcher officiel.
install --mc 26.3 --server DIR Prépare un dossier de serveur avec start-crafting.sh et .bat.
new <name> [--kind script|kotlin|plugin] Crée un nouveau mod.
check <file.craft>… Vérifie la syntaxe et les types.
sandbox [folder] Serveur simulé pour tester des mods sans le jeu.
mods [folder] Liste les mods d’un dossier de jeu et vérifie leurs dépendances.
lsp Serveur de langage pour les éditeurs (c’est l’éditeur qui le lance).
version Version de Crafting.

Créer un mod

Crée un mod déjà découpé par responsabilité, comme recommandé dans Organiser un mod :

Commande Crée
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 (ne fait que relier les parties), content/ModContent.kt, events/Welcome.kt, commands/GemCommand.kt, un manifeste et build.gradle.kts pour Java 25
crafting new gems --kind plugin La classe d’entrée, events/ChatFilter.kt et commands/HelloCommand.kt

Vérifier un mod

Vérifie la syntaxe et les types d’un ou plusieurs fichiers .craft, en suivant leurs imports. Chaque erreur indique le fichier et la ligne, plus une suggestion quand il existe un nom proche. Il se termine avec un code non nul s’il y a des erreurs : tu peux donc l’utiliser en intégration continue.

Terminal
crafting check mods/rubies/main.craft

Tester dans le sandbox

Un serveur simulé avec la même API que le jeu. Il charge les mods de <folder>/mods et <folder>/plugins en mode développement : enregistrer un fichier recharge le mod.

Commandes dans le sandboxTexte
join <name>                   un joueur se connecte
leave <name>                  il part
as <name> <chat or /command>  écrit dans le chat ou lance une commande en tant que ce joueur
/<command>                    commande en tant que console
break <name> <x> <y> <z>      casse un bloc
tick [n]                      avance de n ticks
op <name>                     donne les permissions d’opérateur
inv <name>                    affiche l’inventaire
reload <mod>                  recharge un script ou un plugin
quit                          quitte

Éditeurs

Ils utilisent tous le même serveur de langage, crafting lsp, qui exécute le vrai vérificateur de CraftScript. Ils ont besoin de crafting dans le PATH.

VS Code

L’extension CraftScript fournit : la coloration syntaxique (y compris {interpolation} et les couleurs &a dans les chaînes), les erreurs pendant que tu tapes, l’autocomplétion typée (après player., après on, après :, et pour tes classes et les modules importés), les infos au survol, des snippets, et les commandes Check current file et 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

Si crafting n’est pas dans le PATH, indique son chemin dans le réglage 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 et JetBrains

Sublime Text : le package LSP avec la commande ["crafting", "lsp"] pour les fichiers .craft, et la grammaire CraftScript.tmLanguage.json. JetBrains : le plugin LSP4IJ avec la même commande, et importe la grammaire en tant que bundle TextMate. La grammaire fonctionne dans tout éditeur qui lit les fichiers .tmLanguage.