Progetto
CLI ed editor
Un solo strumento, crafting, per installare, creare una mod, controllarla e provarla senza aprire il gioco. E un language server che dà al tuo editor gli stessi errori che vedresti caricando la mod.
command not found: crafting. Dopo la compilazione, l’eseguibile si trova in crafting-cli/build/install/crafting/bin/crafting. Aggiungi quella cartella al tuo PATH o crea un link da una cartella che ci sia già, per esempio ln -s "$PWD/crafting-cli/build/install/crafting/bin/crafting" /usr/local/bin/crafting.
Comandi
| Comando | Cosa fa |
|---|---|
install --mc 26.3 [--dir DIR] |
Aggiunge il profilo di Crafting al launcher ufficiale. |
install --mc 26.3 --server DIR |
Prepara una cartella server con start-crafting.sh e .bat. |
new <name> [--kind script|kotlin|plugin] |
Crea una nuova mod. |
check <file.craft>… |
Controlla sintassi e tipi. |
sandbox [folder] |
Server simulato per provare le mod senza il gioco. |
mods [folder] |
Elenca le mod in una cartella del gioco e ne controlla le dipendenze. |
lsp |
Language server per gli editor (lo avvia l’editor). |
version |
Versione di Crafting. |
Creare una mod
Crea una mod già divisa per responsabilità, come consigliato in Organizzare una mod:
| Comando | Crea |
|---|---|
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 (si limita a collegare le parti), content/ModContent.kt, events/Welcome.kt, commands/GemCommand.kt, un manifest e build.gradle.kts per Java 25 |
crafting new gems --kind plugin |
La classe di ingresso, events/ChatFilter.kt e commands/HelloCommand.kt |
Controllare una mod
Controlla la sintassi e i tipi di uno o più file .craft, seguendone gli import. Ogni errore include il file e la riga, più un suggerimento quando esiste un nome simile. Termina con un codice diverso da zero se ci sono errori, così puoi usarlo nell’integrazione continua.
crafting check mods/rubies/main.craftProvare nella sandbox
Un server simulato con la stessa API del gioco. Carica le mod in <cartella>/mods e <cartella>/plugins in modalità sviluppo: salvare un file ricarica la mod.
join <name> entra un giocatore
leave <name> esce
as <name> <chat or /command> scrive in chat o esegue un comando come quel giocatore
/<command> comando come la console
break <name> <x> <y> <z> rompe un blocco
tick [n] avanza di n tick
op <name> concede i permessi da operatore
inv <name> mostra l’inventario
reload <mod> ricarica uno script o un plugin
quit esce dalla sandboxEditor
Usano tutti lo stesso language server, crafting lsp, che esegue il vero controllo di CraftScript. Hanno bisogno di crafting nel PATH.
VS Code
L’estensione CraftScript offre: evidenziazione della sintassi (compresi {interpolation} e i colori &a dentro le stringhe), errori mentre scrivi, completamento automatico tipizzato (dopo player., dopo on, dopo :, e per le tue classi e i moduli importati), informazioni al passaggio del mouse, snippet e i comandi Check current file e 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.vsixSe crafting non è nel PATH, imposta il suo percorso nell’impostazione 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 e JetBrains
Sublime Text: il pacchetto LSP con il comando ["crafting", "lsp"] per i file .craft, e la grammatica CraftScript.tmLanguage.json. JetBrains: il plugin LSP4IJ con lo stesso comando, e importa la grammatica come bundle TextMate. La grammatica funziona in qualsiasi editor che legga file .tmLanguage.