본문으로 건너뛰기

Native API로 모드 만들기

Minecraft 26.2 모드를 게임 내부 클래스 대신 Poly 모드 로더의 Native API로 만듭니다.블록, 몹, 월드 생성, 화면, 네트워크를 코드로 선언하고, 게임 테스트로 실제 게임 안에서 확인합니다.API는 미리보기 단계라 아직 바뀔 수 있습니다.

Minecraft
26.2
Java
25
Poly Mod Loader
0.2.0-beta.1
단계
개발자 미리보기
RubyMod.java
public final class RubyMod implements CommonModInitializer {
@Override
public void onInitializeCommon(ModContext mod) {
ResourceId ruby = ResourceId.of("ruby_mod", "ruby");
mod.content().item("ruby", ItemDefinition.builder()
.creativeTab(CreativeTab.INGREDIENTS)
.build());

mod.commands().register(CommandNode.literal("ruby")
.executes(context -> {
context.source().sendMessage("루비!");
return 1;
}));

mod.gameTests().register("ruby_can_be_given", test -> {
PlayerView player = test.createMockPlayer();
player.give(ruby, 2);
test.assertTrue(player.countItem(ruby) == 2, "2 rubies");
test.succeed();
});
}
}

엔트리포인트 하나에 아이템, 명령어, 게임 테스트를 선언했습니다. Minecraft 타입은 하나도 없습니다.

첫 모드까지 세 단계

  1. 템플릿 받기

    이 사이트에서 모드 템플릿을 받아 압축을 풀고, 내 모드 ID로 initPolyMod를 실행합니다. Poly 모드 로더는 Gradle이 받아 옵니다.

    initPolyMod -PmodId=ruby_mod
  2. 모드 선언

    poly.mod.json과 엔트리포인트를 채운 뒤, 블록과 아이템을 코드로 선언합니다.

    build
  3. 게임에서 확인

    클라이언트에서 직접 해 보거나, 게임 테스트를 창 없는 테스트 서버에서 돌립니다.

    gameTests "-PpolyTests=ruby_mod:*"

설계 원칙

API에 게임 타입이 없습니다

모드는 poly-game-api만 봅니다. Minecraft 버전마다 다른 구현은 Poly 모드 로더의 게임 계층이 맡습니다.

실패는 오류 코드로 알립니다

잘못된 선언은 엔트리포인트에서 바로 실패하고, 무엇을 고칠지 POLY-… 코드로 알려 줍니다.

게임 코드 변경은 검사를 거칩니다

게임 코드는 선언된 규칙으로만 바꾸고, 서로 충돌하는 규칙은 거부합니다.

Buy me a coffee