- 14
- 1
Доброго времени форумчане
Занялся уже конкретно модификациями, вот задумал решить один кейс: отображать весь HUD пользователя только если у него надет железный шлем.
Долго я пытался разобраться.. Вроде много уроков прошел, так-то многое понятно, но пришлось попотеть.
Хотелось бы узнать компетентного взгляда, решение мое верное? Я правильно понял суть эвентов?
Или пинок под зад и обратно в туториалы
Заранее благодарности от меня!
Занялся уже конкретно модификациями, вот задумал решить один кейс: отображать весь HUD пользователя только если у него надет железный шлем.
Долго я пытался разобраться.. Вроде много уроков прошел, так-то многое понятно, но пришлось попотеть.
Хотелось бы узнать компетентного взгляда, решение мое верное? Я правильно понял суть эвентов?
Java:
// Определяем переменную `isHelmet` для определения надет ли шлем.
static boolean isHelmet = false;
// Слушаем эвент брони и записываем надет ли на игроке железный шлем
@SubscribeEvent
public void onPlayerHelmet(RenderArmEvent event) {
Player player = event.getPlayer();
isHelmet = player.getItemBySlot(HEAD).getItem() == Items.IRON_HELMET;
}
// Слушаем эвенты рендера HUD, отключаем если шлема нет
@SubscribeEvent
public void onGameOverlayRenderPre(RenderGuiOverlayEvent.Pre event) {
ResourceLocation overlay = event.getOverlay().id();
if (!isHelmet) {
if (VanillaGuiOverlay.AIR_LEVEL.id() == overlay) {
event.setCanceled(true);
} else if (VanillaGuiOverlay.ARMOR_LEVEL.id() == overlay) {
event.setCanceled(true);
} else if (VanillaGuiOverlay.EXPERIENCE_BAR.id() == overlay) {
event.setCanceled(true);
} else if (VanillaGuiOverlay.FOOD_LEVEL.id() == overlay) {
event.setCanceled(true);
} else if (VanillaGuiOverlay.PLAYER_HEALTH.id() == overlay) {
event.setCanceled(true);
} else if (VanillaGuiOverlay.MOUNT_HEALTH.id() == overlay) {
event.setCanceled(true);
} else if (VanillaGuiOverlay.HOTBAR.id() == overlay) {
event.setCanceled(true);
} else if (VanillaGuiOverlay.JUMP_BAR.id() == overlay) {
event.setCanceled(true);
} else if (VanillaGuiOverlay.POTION_ICONS.id() == overlay) {
event.setCanceled(true);
}
}
}
Заранее благодарности от меня!