Proyecto
CLI y editores
Una herramienta, crafting, para instalar, crear un mod, comprobarlo y probarlo sin abrir el juego. Y un servidor de lenguaje que da a tu editor los mismos errores que verías al cargar el mod.
command not found: crafting. Después de compilar, el ejecutable está en crafting-cli/build/install/crafting/bin/crafting. Añade esa carpeta al PATH o enlázalo desde una que ya esté, por ejemplo ln -s "$PWD/crafting-cli/build/install/crafting/bin/crafting" /usr/local/bin/crafting.
Órdenes
| Orden | Qué hace |
|---|---|
install --mc 26.3 [--dir DIR] |
Añade el perfil de Crafting al launcher oficial. |
install --mc 26.3 --server DIR |
Prepara una carpeta de servidor con start-crafting.sh y .bat. |
new <nombre> [--kind script|kotlin|plugin] |
Crea un mod nuevo. |
check <archivo.craft>… |
Comprueba sintaxis y tipos. |
sandbox [carpeta] |
Servidor simulado para probar mods sin el juego. |
mods [carpeta] |
Lista los mods de una carpeta del juego y comprueba sus dependencias. |
lsp |
Servidor de lenguaje para editores (lo lanza el editor). |
version |
Versión de Crafting. |
Crear un mod
Crea un mod ya repartido por responsabilidades, como recomienda Organizar un mod:
| Orden | 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 (solo conecta las partes), content/ModContent.kt, events/Welcome.kt, commands/GemCommand.kt, manifiesto y build.gradle.kts para Java 25 |
crafting new gems --kind plugin |
La clase de entrada, events/ChatFilter.kt y commands/HelloCommand.kt |
Revisar un mod
Comprueba la sintaxis y los tipos de uno o varios archivos .craft, siguiendo sus imports. Cada error lleva archivo y línea, y una sugerencia cuando hay un nombre parecido. Termina con un código de salida distinto de cero si hay errores, así que sirve en integración continua.
crafting check mods/rubies/main.craftProbar en el sandbox
Un servidor simulado con la misma API que el juego. Carga los mods de <carpeta>/mods y <carpeta>/plugins en modo desarrollo: guardar un archivo recarga el mod.
join <nombre> un jugador entra
leave <nombre> sale
as <nombre> <chat o /comando> habla o ejecuta un comando como ese jugador
/<comando> comando como consola
break <nombre> <x> <y> <z> rompe un bloque
tick [n] avanza n ticks
op <nombre> da permisos de operador
inv <nombre> muestra el inventario
reload <mod> recarga un script o plugin
quit saleEditores
Todos usan el mismo servidor de lenguaje, crafting lsp, que corre el verificador real de CraftScript. Necesitan crafting en el PATH.
VS Code
La extensión de CraftScript tiene: resaltado (también de {interpolación} y de los colores &a dentro de los textos), errores mientras escribes, autocompletado con tipos (tras player., tras on, tras :, y de tus clases y módulos importados), información al pasar el ratón, fragmentos, y los comandos Check current file y Run sandbox server for this mod.
git clone <repositorio-de-la-extension> craftscript-vscode && cd craftscript-vscode
npm install --omit=dev
npx @vscode/vsce package --allow-missing-repository
code --install-extension craftscript-0.1.0.vsixSi crafting no está en el PATH, indica su ruta en el ajuste 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 y JetBrains
Sublime Text: el paquete LSP con el comando ["crafting", "lsp"] para archivos .craft, y la gramática CraftScript.tmLanguage.json. JetBrains: el plugin LSP4IJ con el mismo comando, e importar la gramática como bundle TextMate. La gramática sirve en cualquier editor que lea archivos .tmLanguage.