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