본문으로 건너뛰기
버전: Minecraft 26.2

클라이언트 기본

클라이언트 API는 클라이언트 엔트리포인트(ClientModInitializer)에서 mod.client()로 사용합니다. 전용 서버에서 호출하면 POLY-CLIENT-001 오류가 납니다.

ClientRegistrar client = mod.client();
KeyBinding open = client.keyBinding("open", KeyCodes.K);
client.hudLayer("status", canvas -> canvas.drawText("Hi", 4, 4, 0xFFFFFFFF));
mod.events().register(ClientEvents.TICK, view -> {
if (open.consumeClick()) {
view.showActionBar("열기!");
}
});

키 바인딩​

keyBinding(path, KeyCodes.K)로 선언합니다.

  • 키 바인딩은 조작 설정에 표시되며 플레이어가 다시 지정할 수 있습니다.
  • 이름은 lang 파일의 key.<mod>.<path> 키로, 분류 이름은 key.category.<mod>.keybinds 키로 정합니다.
  • consumeClick()은 눌린 횟수를 하나씩 소비하고, isDown()은 지금 눌려 있는지를 알려 줍니다.
  • KeyCodes에는 글자 키, F6–F10, UNBOUND 등이 있습니다.
  • 추가에 실패하면 POLY-CLIENT-004 오류가 납니다.

HUD 레이어​

hudLayer(path, canvas -> …)는 매 프레임 렌더 스레드에서 호출됩니다.

HudCanvas뜻
width(), height()화면 크기(GUI 좌표)
textWidth(text)글자 너비
drawText(text, x, y, argb)글자
fill(x1, y1, x2, y2, argb)사각형
drawTexture(texture, x, y, width, height)텍스처(예: 동적 텍스처)
client.hudLayer("status", canvas -> {
String text = "Native Showcase";
canvas.fill(2, 2, 6 + canvas.textWidth(text), 14, 0x80000000);
canvas.drawText(text, 4, 4, 0xFFFFD54F);
});

예외가 발생하면 그 레이어만 끄고 POLY-CLIENT-003으로 기록합니다. 매 프레임 호출되므로 가볍게 유지하세요.

ClientView​

클라이언트 이벤트(TICK, JOINED_WORLD, LEFT_WORLD)가 ClientView를 넘겨 줍니다.

메서드뜻
player(), world()현재 플레이어와 월드(Optional, 월드 밖이면 비어 있음)
showActionBar(text)액션 바 메시지
openScreen(screen), closeScreen(), isScreenOpen()모드 화면
cameraPerspective(), setCameraPerspective(p)시점
setPostEffect(id), clearPostEffect(), postEffect()후처리 셰이더
leaveWorld()"저장하고 타이틀로"와 같은 동작
mod.events().register(ClientEvents.JOINED_WORLD, view -> LOGGER.info("joined")); // LEFT_WORLD도 있음

클라이언트 이벤트 목록은 이벤트에서 볼 수 있습니다.

오류 코드​

코드뜻
POLY-CLIENT-001서버에서 클라이언트 API를 사용함
POLY-CLIENT-002클라이언트 ID 오류, 등록 종료
POLY-CLIENT-003HUD 레이어 또는 그리기 실패(해당 레이어만 끔)
POLY-CLIENT-004키 바인딩 추가 실패
POLY-CLIENT-005동적 텍스처를 클라이언트 스레드가 아닌 곳에서 업로드함, 또는 파티클·후처리 연결 실패
POLY-CLIENT-006모드 셰이더 파이프라인을 만들거나 컴파일하지 못함(한 번만 기록하고 해당 사각형은 건너뜀)
POLY-CLIENT-007모드 셰이더 유니폼 값이 예외를 던지거나 개수가 맞지 않음, 또는 업로드 실패(한 번만 기록하고 마지막 올바른 값을 사용)
Buy me a coffee