Власні екрани
INFO
Ця сторінка стосується звичайних екранів, а не меню — ці екрани відкриває гравець на клієнті, а не ті, що обробляються сервером.
Екрани, по суті, є графічним інтерфейсом, з яким взаємодіє гравець, наприклад, екран заголовка, екран паузи тощо.
Ви можете створювати власні екрани для показу власного вмісту, меню налаштувань тощо.
Створення екрана
Щоб створити екран, вам потрібно розширити клас Screen і перевизначити метод init — ви також можете перевизначити метод extractRenderState, але переконайтеся, що викликаєте його суперметод, інакше він не рендеритиме тло, віджети тощо.
Ви повинні взяти до відома, що:
- Віджети не створюються в конструкторі, тому що екран ще не ініціалізовано в цей момент, а певні змінні, такі як
widthіheight, ще недоступні або ще не точні. - Метод
initвикликається, коли екран ініціалізується, і це найкраще місце для створення віджетів.- Ви додаєте віджети за допомогою методу
addRenderableWidget, який приймає будь-який віджет, який можна малювати.
- Ви додаєте віджети за допомогою методу
- Метод
extractRenderStateназивається кожним кадром — ви можете отримати доступ до екстрактора графіки GUI та позиції миші з цього методу.
Як приклад, ми можемо створити простий екран із кнопкою та міткою над нею.
java
No lines matched.1

Відкриття екрана
Ви можете відкрити екран за допомогою методу setScreen Minecraft — ви можете зробити це з багатьох місць, таких як призначення клавіш, команда або обробник клієнтських пакетів.
java
Minecraft.getInstance().setScreen(
new CustomScreen(Component.empty())
);1
2
3
2
3
Закриття екрана
Якщо ви хочете закрити екран, просто встановіть для екрана значення null:
java
Minecraft.getInstance().setScreen(null);1
Якщо ви хочете, було гарно та повернутися до попереднього екрана, ви можете передати поточний екран у конструктор CustomScreen і зберегти його в полі, а потім використовувати його для повернення до попереднього екрана, коли викликається метод close.
java
No lines matched.1
Тепер, відкриваючи власний екран, ви можете передати поточний екран як другий аргумент, тож коли ви викличете CustomScreen#close, він повернеться до попереднього екрана.
java
Screen currentScreen = Minecraft.getInstance().currentScreen;
Minecraft.getInstance().setScreen(
new CustomScreen(Component.empty(), currentScreen)
);1
2
3
4
2
3
4

