기계 모드 마무리 + JAR 빌드
Crusher 자동화 기계 모드의 전체 코드를 점검하고, Gradle로 JAR를 빌드하여 인게임에서 동작을 최종 검증합니다. 빌드 산출물 구조와 배포 전 체크리스트도 다룹니다.
기계 모드 마무리 + JAR 빌드
이 챕터는 Crusher 자동화 기계 모드의 마지막 단계입니다. 지금까지 작성한 코드를 점검하고, Gradle로 JAR를 빌드한 뒤, 인게임에서 전체 동작을 확인합니다.
1. 프로젝트 구조 최종 점검
빌드 전에 파일 구조가 올바른지 확인합니다.
examplemod-master-projects/machine/
├── src/main/java/com/example/master/machine/
│ ├── MasterMachineMod.java
│ ├── block/
│ │ └── CrusherBlock.java
│ ├── blockentity/
│ │ └── CrusherBlockEntity.java
│ ├── menu/
│ │ └── CrusherMenu.java
│ ├── screen/
│ │ └── CrusherScreen.java
│ ├── recipe/
│ │ └── CrusherRecipe.java
│ ├── network/
│ │ └── CrusherProgressPacket.java
│ └── init/
│ ├── ModBlocks.java
│ ├── ModBlockEntities.java
│ ├── ModMenuTypes.java
│ └── ModRecipeTypes.java
├── src/main/resources/
│ ├── META-INF/neoforge.mods.toml
│ ├── assets/master_machine/
│ │ ├── blockstates/crusher.json
│ │ ├── models/block/crusher.json
│ │ ├── models/item/crusher.json
│ │ ├── textures/block/crusher_*.png
│ │ └── lang/ko_kr.json
│ └── data/master_machine/
│ └── recipe/
│ └── iron_dust.json
├── build.gradle
└── gradle.properties
모든 파일이 있는지 확인한 뒤 다음 단계로 넘어갑니다.
2. gradle.properties 확인
# examplemod-master-projects/machine/gradle.properties
mod_id=master_machine
mod_name=Master Machine
mod_version=1.0.0
mod_group_id=com.example.master.machine
minecraft_version=1.21.1
neoforge_version=21.1.172mod_version이 1.0.0인지 확인합니다. 빌드 산출물 파일명이 여기서 결정됩니다.
3. JAR 빌드
PowerShell에서 machine 디렉토리로 이동 후 빌드합니다.
cd examplemod-master-projects\machine
.\gradlew.bat build빌드가 성공하면 다음 출력이 나타납니다.
BUILD SUCCESSFUL in 45s
3 actionable tasks: 3 executed
출력 JAR 위치:
build/libs/master_machine-1.0.0.jar
4. JAR 구조 확인
빌드된 JAR 안에 필요한 파일이 모두 들어 있는지 확인합니다.
# JAR 내용 목록 출력
& "C:\Program Files\Java\jdk-25\bin\jar.exe" tf build\libs\master_machine-1.0.0.jar | Select-String "\.class|\.json|\.toml"확인해야 할 항목:
| 경로 | 설명 |
|---|---|
com/example/master/machine/MasterMachineMod.class | 모드 진입점 |
com/example/master/machine/block/CrusherBlock.class | 기계 블록 |
com/example/master/machine/blockentity/CrusherBlockEntity.class | 블록 엔티티 |
META-INF/neoforge.mods.toml | 모드 메타데이터 |
assets/master_machine/lang/ko_kr.json | 한국어 번역 |
data/master_machine/recipe/iron_dust.json | 레시피 데이터 |
5. 인게임 검증
5.1 JAR 배포
빌드된 JAR를 Minecraft mods 폴더에 복사합니다.
Copy-Item "build\libs\master_machine-1.0.0.jar" `
"$env:APPDATA\.minecraft\mods\master_machine-1.0.0.jar"5.2 runClient로 테스트
개발 환경에서는 Gradle runClient 태스크로 바로 실행할 수 있습니다.
.\gradlew.bat runClient5.3 인게임 체크리스트
게임이 실행되면 다음 항목을 순서대로 확인합니다.
- 모드 로드 확인 — 타이틀 화면 하단에
1 mod loaded표시 - 크리에이티브 인벤토리 —
Master Machine탭에 CrusherBlock 아이템 존재 - 블록 설치 — 4방향 facing 회전 동작 (플레이어가 바라보는 반대 방향으로 설치)
- GUI 열기 — 블록 우클릭 → CrusherScreen 표시
- 레시피 동작 — 입력 슬롯에 철광석 → 200 tick 후 출력 슬롯에 철 가루
- 진행 바 — 처리 중 진행 바 애니메이션 동작
- Hopper 자동화 — 블록 위에 Hopper 설치 → 아이템 자동 투입
6. JAR 직접 수정 금지
⚠️ JAR 직접 수정 금지
build/libs/master_machine-1.0.0.jar안의.class파일을 직접 수정하면:
- ZIP 무결성이 깨져 Minecraft가 로드를 거부합니다.
- classpath 충돌로
ClassNotFoundException이 발생합니다.변경은 반드시
src/에서만 하고, JAR는.\gradlew.bat build로 다시 생성합니다.
7. 빌드 산출물 정리
개발 중 빌드 캐시가 쌓이면 clean 태스크로 초기화합니다.
.\gradlew.bat clean buildbuild/ 디렉토리 전체를 삭제하고 처음부터 다시 컴파일합니다. 이상한 동작이 발생할 때 먼저 시도해 볼 방법입니다.
8. 배포 전 체크리스트
PR을 올리거나 다른 사람에게 JAR를 전달하기 전에 확인합니다.
-
gradle.properties의mod_version업데이트 -
neoforge.mods.toml의description한국어 작성 -
ko_kr.json번역 누락 없음 -
data/master_machine/recipe/레시피 JSON 유효성 확인 -
.\gradlew.bat build성공 (경고 없음) - 인게임 7개 체크리스트 통과
마무리
이 챕터로 phase-6-master-machine 트랙이 완성됩니다. Crusher 자동화 기계를 통해 다음 개념을 직접 구현했습니다.
BlockState+facing방향 처리BlockEntity+IItemHandlerCapabilityAbstractContainerMenu+ScreenGUI 파이프라인MapCodec+StreamCodec커스텀 레시피 타입- 서버↔클라 진행 동기화 패킷
다음 트랙인 phase-6-master-dimension에서는 커스텀 차원과 포탈을 다룹니다.