모드 화면
ModScreen을 구현하면 라벨, 버튼, 입력칸이 있는 화면을 만들 수 있습니다.
ShowcaseScreen.java
final class ShowcaseScreen implements ModScreen {
private TextInput name;
@Override
public String title() {
return "My Menu";
}
@Override
public void init(ScreenBuilder screen) {
int centre = screen.width() / 2;
screen.label("Hello", centre - screen.textWidth("Hello") / 2, 40, 0xFFFFFFFF);
name = screen.textInput(centre - 100, 70, 200, "Steve");
screen.button("OK", centre - 50, 100, 100, 20, screen::close);
}
@Override
public void render(HudCanvas canvas) {
// 위젯 위에 자유롭게 그리기(선택)
}
@Override
public void onClosed() {
LOGGER.info("name was {}", name.value());
}
}
열고 닫기
화면은 ClientView를 받는 콜백(예: ClientEvents.TICK)에서 엽니다.
mod.events().register(ClientEvents.TICK, view -> {
if (open.consumeClick()) {
view.openScreen(new ShowcaseScreen());
}
});
동작
- 화면은 게임의
Screen위에서 동작하며, 버튼과 입력칸은 게임 위젯입니다. ScreenBuilder:width(),height(),textWidth,label,button(label, x, y, width, height, onPress),textInput(x, y, width, initialValue),close()render(HudCanvas)로 자유롭게 그릴 수 있습니다.pausesGame()을 재정의하면 싱글 플레이에서 게임을 멈출지 정할 수 있습니다.onClosed는 Esc,closeScreen, 다른 화면으로의 전환 등 화면이 닫히는 모든 경우에 호출됩니다.
블록 엔티티의 인벤토리 메뉴는 화면이 아니라 서버가 여는 메뉴입니다. 자세한 내용은 블록 엔티티와 메뉴를 참고하세요.