Projeto

CLI e editores

Uma ferramenta, crafting, para instalar, criar um mod, verificá-lo e testá-lo sem abrir o jogo. E um servidor de linguagem que dá ao seu editor os mesmos erros que você veria ao carregar o mod.

command not found: crafting. Depois de compilar, o executável fica em crafting-cli/build/install/crafting/bin/crafting. Adicione essa pasta ao seu PATH ou crie um link para ele a partir de uma pasta que já esteja lá, por exemplo ln -s "$PWD/crafting-cli/build/install/crafting/bin/crafting" /usr/local/bin/crafting.

Comandos

Comando O que faz
install --mc 26.3 [--dir DIR] Adiciona a instalação do Crafting ao launcher oficial.
install --mc 26.3 --server DIR Prepara uma pasta de servidor com start-crafting.sh e .bat.
new <name> [--kind script|kotlin|plugin] Cria um mod novo.
check <file.craft>… Verifica sintaxe e tipos.
sandbox [folder] Servidor simulado para testar mods sem o jogo.
mods [folder] Lista os mods de uma pasta do jogo e verifica suas dependências.
lsp Servidor de linguagem para editores (o editor o inicia).
version Versão do Crafting.

Criar um mod

Cria um mod já dividido por responsabilidade, como recomendado em Organizando um mod:

Comando Cria
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 (só conecta as partes), content/ModContent.kt, events/Welcome.kt, commands/GemCommand.kt, um manifesto e build.gradle.kts para Java 25
crafting new gems --kind plugin A classe de entrada, events/ChatFilter.kt e commands/HelloCommand.kt

Verificar um mod

Verifica a sintaxe e os tipos de um ou mais arquivos .craft, seguindo seus imports. Cada erro inclui o arquivo e a linha, além de uma sugestão quando há um nome parecido. Termina com um código diferente de zero se houver erros, então você pode usá-lo em integração contínua.

Terminal
crafting check mods/rubies/main.craft

Testar no sandbox

Um servidor simulado com a mesma API do jogo. Ele carrega os mods de <pasta>/mods e <pasta>/plugins em modo de desenvolvimento: salvar um arquivo recarrega o mod.

Comandos dentro do sandboxTexto
join <name>                   um jogador entra
leave <name>                  sai
as <name> <chat or /command>  fala no chat ou executa um comando como esse jogador
/<command>                    comando como o console
break <name> <x> <y> <z>      quebra um bloco
tick [n]                      avança n ticks
op <name>                     dá permissões de operador
inv <name>                    mostra o inventário
reload <mod>                  recarrega um script ou plugin
quit                          sai do sandbox

Editores

Todos usam o mesmo servidor de linguagem, crafting lsp, que roda o verificador real do CraftScript. Eles precisam de crafting no PATH.

VS Code

A extensão CraftScript oferece: realce de sintaxe (incluindo {interpolação} e cores &a dentro de strings), erros enquanto você digita, autocompletar com tipos (depois de player., depois de on, depois de :, e para suas classes e módulos importados), informações ao passar o mouse, snippets, e os comandos Check current file e 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

Se crafting não estiver no PATH, defina o caminho dele no ajuste 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 e JetBrains

Sublime Text: o pacote LSP com o comando ["crafting", "lsp"] para arquivos .craft, e a gramática CraftScript.tmLanguage.json. JetBrains: o plugin LSP4IJ com o mesmo comando, e importe a gramática como um bundle TextMate. A gramática funciona em qualquer editor que leia arquivos .tmLanguage.