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.
crafting check mods/rubies/main.craftTestar 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.
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 sandboxEditores
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.
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 não estiver no PATH, defina o caminho dele no 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 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.