From 05484d42d59be110a7d3a5420ef26bc2a9c9126f Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 17 May 2025 19:08:51 +0200 Subject: [PATCH] fancyholograms-v3: Add HologramController#updateHologramData --- .../fancyholograms/api/HologramController.java | 7 +++++++ .../controller/HologramControllerImpl.java | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/HologramController.java b/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/HologramController.java index 3c1145a3..1be0fc13 100644 --- a/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/HologramController.java +++ b/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/HologramController.java @@ -30,6 +30,13 @@ public interface HologramController { @ApiStatus.Internal boolean shouldSeeHologram(@NotNull final Hologram hologram, @NotNull final Player player); + /** + * Updates hologram data such as text, background, etc. for the given players. + * Be aware that some data changes require the hologram to be fully respawned. + */ + @ApiStatus.Internal + void updateHologramData(@NotNull final Hologram hologram, @NotNull final Player ...players);; + /** * Spawns the hologram to the given players, if they should see it, and it is not already shown to them. * Hide the hologram from the players that should not see it. diff --git a/plugins/fancyholograms/src/main/java/de/oliver/fancyholograms/controller/HologramControllerImpl.java b/plugins/fancyholograms/src/main/java/de/oliver/fancyholograms/controller/HologramControllerImpl.java index 6777c697..540c97e0 100644 --- a/plugins/fancyholograms/src/main/java/de/oliver/fancyholograms/controller/HologramControllerImpl.java +++ b/plugins/fancyholograms/src/main/java/de/oliver/fancyholograms/controller/HologramControllerImpl.java @@ -10,6 +10,7 @@ import de.oliver.fancyholograms.main.FancyHologramsPlugin; import de.oliver.fancynpcs.api.FancyNpcsPlugin; import org.bukkit.Bukkit; import org.bukkit.entity.Player; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.joml.Vector3f; @@ -46,6 +47,21 @@ public class HologramControllerImpl implements HologramController { } } + @Override + @ApiStatus.Internal + public void updateHologramData(@NotNull final Hologram hologram, @NotNull final Player ...players) { + for (Player player : players) { + boolean isVisible = hologram.isViewer(player); + boolean shouldSee = shouldSeeHologram(hologram, player); + + if (!isVisible || !shouldSee) { + continue; + } + + hologram.updateFor(player); + } + } + @Override public boolean shouldSeeHologram(@NotNull final Hologram hologram, @NotNull final Player player) { if (!meetsVisibilityConditions(hologram, player)) {