프로젝트

CLI와 편집기

설치, 모드 생성, 검사, 게임 없이 테스트까지 하는 도구 하나, crafting. 그리고 모드를 불러올 때 보게 될 오류를 편집기에서 그대로 보여 주는 언어 서버.

command not found: crafting. 빌드하면 실행 파일은 crafting-cli/build/install/crafting/bin/crafting에 있습니다. 이 폴더를 PATH에 추가하거나, 이미 PATH에 있는 폴더에 링크하세요. 예: ln -s "$PWD/crafting-cli/build/install/crafting/bin/crafting" /usr/local/bin/crafting

명령어

명령어 하는 일
install --mc 26.3 [--dir DIR] 공식 런처에 Crafting 프로필을 추가합니다.
install --mc 26.3 --server DIR start-crafting.sh와 .bat가 있는 서버 폴더를 준비합니다.
new <name> [--kind script|kotlin|plugin] 새 모드를 만듭니다.
check <file.craft>… 문법과 타입을 검사합니다.
sandbox [folder] 게임 없이 모드를 테스트하는 시뮬레이션 서버.
mods [folder] 게임 폴더의 모드를 나열하고 의존성을 검사합니다.
lsp 편집기용 언어 서버(편집기가 실행합니다).
version Crafting 버전.

모드 만들기

모드 정리하기에서 권장하는 대로, 책임별로 이미 나뉜 모드를 만듭니다.

명령어 생성되는 것
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(각 부분을 연결하기만 함), content/ModContent.kt, events/Welcome.kt, commands/GemCommand.kt, 매니페스트, Java 25용 build.gradle.kts
crafting new gems --kind plugin 진입 클래스, events/ChatFilter.kt, commands/HelloCommand.kt

모드 검사하기

하나 이상의 .craft 파일의 문법과 타입을 import를 따라가며 검사합니다. 각 오류에는 파일과 줄이 표시되고, 비슷한 이름이 있으면 제안도 함께 나옵니다. 오류가 있으면 0이 아닌 코드로 종료하므로 지속적 통합(CI)에서 사용할 수 있습니다.

터미널
crafting check mods/rubies/main.craft

샌드박스에서 테스트하기

게임과 같은 API를 가진 시뮬레이션 서버입니다. <폴더>/mods와 <폴더>/plugins의 모드를 개발 모드로 불러오므로, 파일을 저장하면 모드를 다시 불러옵니다.

샌드박스 안의 명령어텍스트
join <name>                   플레이어가 접속합니다
leave <name>                  퇴장합니다
as <name> <chat or /command>  그 플레이어로 채팅하거나 명령어를 실행합니다
/<command>                    콘솔로 명령어를 실행합니다
break <name> <x> <y> <z>      블록을 부숩니다
tick [n]                      n틱 진행합니다
op <name>                     관리자 권한을 부여합니다
inv <name>                    인벤토리를 표시합니다
reload <mod>                  스크립트나 플러그인을 다시 불러옵니다
quit                          종료합니다

편집기

모든 편집기는 실제 CraftScript 검사기를 실행하는 같은 언어 서버, crafting lsp를 사용합니다. PATH에 crafting이 있어야 합니다.

VS Code

CraftScript 확장이 제공하는 것: 구문 강조(문자열 안의 {interpolation}과 &a 색상 포함), 입력 중 오류 표시, 타입 기반 자동 완성(player. 뒤, on 뒤, : 뒤, 그리고 직접 만든 클래스와 가져온 모듈), 마우스를 올렸을 때의 정보, 스니펫, Check current file 및 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.vsix

crafting이 PATH에 없다면 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와 JetBrains

Sublime Text: .craft 파일에 ["crafting", "lsp"] 명령을 지정한 LSP 패키지와 CraftScript.tmLanguage.json 문법. JetBrains: 같은 명령을 지정한 LSP4IJ 플러그인, 그리고 문법을 TextMate 번들로 가져옵니다. 이 문법은 .tmLanguage 파일을 읽는 모든 편집기에서 작동합니다.