public class MenuScreen extends Screen {
private final Menu menu;
private boolean close = false;
public MenuScreen() {
super(Text.empty());
// центрирование
menu = new Menu((mw.getScaledWidth() - 250) / 2f, (mw.getScaledHeight() - 250) / 2f, 250, 250);
}
@Override
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
// здесь к примеру можешь добавить учет анимации (close && animation.getValue() <= 0.1)
if (close) {
super.close();
return;
}
// так же здесь можно применить для открытии гуи анимацию с помощью matrixstack получить его можно из DrawContext (context.getMatricies())
menu.render(context, mouseX, mouseY, delta);
}
// тут я думаю логически понятно для чего это нужно
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
menu.mouseClicked(mouseX, mouseY, button);
return super.mouseClicked(mouseX, mouseY, button);
}
@Override
public boolean mouseReleased(double mouseX, double mouseY, int button) {
menu.mouseReleased(mouseX, mouseY, button);
return super.mouseReleased(mouseX, mouseY, button);
}
@Override
public boolean mouseScrolled(double mouseX, double mouseY, double horizontalAmount, double verticalAmount) {
menu.mouseScrolled(mouseX, mouseY, horizontalAmount, verticalAmount);
return super.mouseScrolled(mouseX, mouseY, horizontalAmount, verticalAmount);
}
@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
menu.keyPressed(keyCode, scanCode, modifiers);
return super.keyPressed(keyCode, scanCode, modifiers);
}
@Override
public boolean charTyped(char chr, int modifiers) {
menu.charTyped(chr, modifiers);
return super.charTyped(chr, modifiers);
}
@Override
public void close() {
if (!close) {
close = true;
}
}
// на всякий случай обьясняю: true - при открытии гуи в одиночном мире игра будет замораживаться false - не будет
@Override
public boolean shouldPause() {
return false;
}
}