NeoForge 26.1 Docs
  • 문서
  • 노트
NeoForge 26.1
NeoForge 26.1
v26.1
학습 진도
0 / 77 챕터 완료방문 0
마스터 트랙 #3: 기계 모드 프로젝트 셋업분쇄기 블록 등록 — CrusherBlock + facing BlockStateBlockEntity + 인벤토리 — ItemStackHandlerMenu + Screen — GUI 구현화면 위젯 — 진행 바와 슬롯 시각화커스텀 레시피 타입 — Crusher Recipe서버↔클라이언트 동기화 패킷기계 모드 마무리 + JAR 빌드
마스터기계

기계 모드 마무리 + 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.172

mod_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 runClient

5.3 인게임 체크리스트

게임이 실행되면 다음 항목을 순서대로 확인합니다.

  1. 모드 로드 확인 — 타이틀 화면 하단에 1 mod loaded 표시
  2. 크리에이티브 인벤토리 — Master Machine 탭에 CrusherBlock 아이템 존재
  3. 블록 설치 — 4방향 facing 회전 동작 (플레이어가 바라보는 반대 방향으로 설치)
  4. GUI 열기 — 블록 우클릭 → CrusherScreen 표시
  5. 레시피 동작 — 입력 슬롯에 철광석 → 200 tick 후 출력 슬롯에 철 가루
  6. 진행 바 — 처리 중 진행 바 애니메이션 동작
  7. 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 build

build/ 디렉토리 전체를 삭제하고 처음부터 다시 컴파일합니다. 이상한 동작이 발생할 때 먼저 시도해 볼 방법입니다.


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 + IItemHandler Capability
  • AbstractContainerMenu + Screen GUI 파이프라인
  • MapCodec + StreamCodec 커스텀 레시피 타입
  • 서버↔클라 진행 동기화 패킷

다음 트랙인 phase-6-master-dimension에서는 커스텀 차원과 포탈을 다룹니다.

서버↔클라이언트 동기화 패킷

CustomPacketPayload + StreamCodec으로 CrusherProgressPayload를 설계하고, RegisterPayloadHandlersEvent로 핸들러를 등록하여 분쇄 진행도를 서버에서 클라이언트로 효율적으로 동기화합니다.

캡스톤 통합 설계 + 의존 구조

Master Tools, Master Dimension, Master Machine을 하나의 진행 루프로 연결하는 Master Capstone 모드의 비전, 의존성, 로드 순서, 배포 구조를 설계합니다.

On this page

기계 모드 마무리 + JAR 빌드1. 프로젝트 구조 최종 점검2. gradle.properties 확인3. JAR 빌드4. JAR 구조 확인5. 인게임 검증5.1 JAR 배포5.2 runClient로 테스트5.3 인게임 체크리스트6. JAR 직접 수정 금지7. 빌드 산출물 정리8. 배포 전 체크리스트마무리
NeoForge 26.1 Docs

NeoForge 26.1 모딩 개발 문서 사이트

GitHubDiscord

문서

  • 문서
  • 노트

GitHub

  • GitHub
  • Discord

© 2026 NeoForge 26.1 Docs. 콘텐츠는 MIT 라이선스로 제공됩니다.

Built with Next.js · Tailwind CSS · shadcn/ui