From b11ee02c4c69da080c4947aa79edbc493b708064 Mon Sep 17 00:00:00 2001 From: onebeastchris Date: Mon, 3 Jun 2024 16:08:18 +0200 Subject: [PATCH] address review --- .../geyser/api/bedrock/camera/CameraData.java | 2 +- .../geyser/api/bedrock/camera/GuiElement.java | 38 ++++++++++++------- .../geyser/impl/camera/GeyserCameraData.java | 7 ++-- 3 files changed, 29 insertions(+), 18 deletions(-) diff --git a/api/src/main/java/org/geysermc/geyser/api/bedrock/camera/CameraData.java b/api/src/main/java/org/geysermc/geyser/api/bedrock/camera/CameraData.java index 2b8b8e925..f208879d1 100644 --- a/api/src/main/java/org/geysermc/geyser/api/bedrock/camera/CameraData.java +++ b/api/src/main/java/org/geysermc/geyser/api/bedrock/camera/CameraData.java @@ -162,7 +162,7 @@ public interface CameraData { * * @param element the {@link GuiElement} to reset */ - void resetElement(@NonNull GuiElement... element); + void resetElement(@NonNull GuiElement @Nullable... element); /** * Determines whether a {@link GuiElement} is currently hidden. diff --git a/api/src/main/java/org/geysermc/geyser/api/bedrock/camera/GuiElement.java b/api/src/main/java/org/geysermc/geyser/api/bedrock/camera/GuiElement.java index 1f843cdd2..bb1168947 100644 --- a/api/src/main/java/org/geysermc/geyser/api/bedrock/camera/GuiElement.java +++ b/api/src/main/java/org/geysermc/geyser/api/bedrock/camera/GuiElement.java @@ -30,18 +30,28 @@ package org.geysermc.geyser.api.bedrock.camera; * These can be hidden using {@link CameraData#hideElement(GuiElement...)}, * and one can reset their visibility using {@link CameraData#resetElement(GuiElement...)}. */ -public enum GuiElement { - PAPER_DOLL, - ARMOR, - TOOL_TIPS, - TOUCH_CONTROLS, - CROSSHAIR, - HOTBAR, - HEALTH, - PROGRESS_BAR, - FOOD_BAR, - AIR_BUBBLES_BAR, - VEHICLE_HEALTH, - EFFECTS_BAR, - ITEM_TEXT_POPUP +public class GuiElement { + public static final GuiElement PAPER_DOLL = new GuiElement(0); + public static final GuiElement ARMOR = new GuiElement(1); + public static final GuiElement TOOL_TIPS = new GuiElement(2); + public static final GuiElement TOUCH_CONTROLS = new GuiElement(3); + public static final GuiElement CROSSHAIR = new GuiElement(4); + public static final GuiElement HOTBAR = new GuiElement(5); + public static final GuiElement HEALTH = new GuiElement(6); + public static final GuiElement PROGRESS_BAR = new GuiElement(7); + public static final GuiElement FOOD_BAR = new GuiElement(8); + public static final GuiElement AIR_BUBBLES_BAR = new GuiElement(9); + public static final GuiElement VEHICLE_HEALTH = new GuiElement(10); + public static final GuiElement EFFECTS_BAR = new GuiElement(11); + public static final GuiElement ITEM_TEXT_POPUP = new GuiElement(12); + + private GuiElement(int id) { + this.id = id; + } + + private final int id; + + public int id() { + return this.id; + } } diff --git a/core/src/main/java/org/geysermc/geyser/impl/camera/GeyserCameraData.java b/core/src/main/java/org/geysermc/geyser/impl/camera/GeyserCameraData.java index a43982d0f..7582502b3 100644 --- a/core/src/main/java/org/geysermc/geyser/impl/camera/GeyserCameraData.java +++ b/core/src/main/java/org/geysermc/geyser/impl/camera/GeyserCameraData.java @@ -260,13 +260,14 @@ public class GeyserCameraData implements CameraData { @Override public void hideElement(GuiElement... elements) { + Objects.requireNonNull(elements); SetHudPacket packet = new SetHudPacket(); packet.setVisibility(HudVisibility.HIDE); Set elementSet = packet.getElements(); for (GuiElement element : elements) { this.hiddenHudElements.add(element); - elementSet.add(HUD_ELEMENT_VALUES[element.ordinal()]); + elementSet.add(HUD_ELEMENT_VALUES[element.id()]); } session.sendUpstreamPacket(packet); @@ -278,10 +279,10 @@ public class GeyserCameraData implements CameraData { packet.setVisibility(HudVisibility.RESET); Set elementSet = packet.getElements(); - if (elements.length != 0) { + if (elements != null && elements.length != 0) { for (GuiElement element : elements) { this.hiddenHudElements.remove(element); - elementSet.add(HUD_ELEMENT_VALUES[element.ordinal()]); + elementSet.add(HUD_ELEMENT_VALUES[element.id()]); } } else { this.hiddenHudElements.clear();