From e141528f7c66dd13f060b3b94cc10897f02f5614 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 18 May 2025 13:04:18 +0200 Subject: [PATCH] fancyholograms-v3: Implement onModify callback for hologram modifications --- .../de/oliver/fancyholograms/api/data/HologramData.java | 8 ++++++++ .../de/oliver/fancyholograms/api/hologram/Hologram.java | 1 + .../de/oliver/fancyholograms/api/trait/HologramTrait.java | 6 ++++++ .../fancyholograms/api/trait/HologramTraitTrait.java | 7 +++++++ 4 files changed, 22 insertions(+) diff --git a/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/data/HologramData.java b/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/data/HologramData.java index 5827ce3d..3f06ae97 100644 --- a/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/data/HologramData.java +++ b/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/data/HologramData.java @@ -27,6 +27,7 @@ public class HologramData implements YamlData { private Location location; private String worldName; private boolean hasChanges = false; + private Runnable onModify; private int visibilityDistance = DEFAULT_VISIBILITY_DISTANCE; private Visibility visibility = DEFAULT_VISIBILITY; private boolean persistent = DEFAULT_PERSISTENCE; @@ -114,6 +115,13 @@ public class HologramData implements YamlData { */ public final void setHasChanges(boolean hasChanges) { this.hasChanges = hasChanges; + if (hasChanges && onModify != null) { + onModify.run(); + } + } + + public void setOnModify(Runnable onModify) { + this.onModify = onModify; } public int getVisibilityDistance() { diff --git a/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/hologram/Hologram.java b/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/hologram/Hologram.java index 4bceeb39..23c788f8 100644 --- a/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/hologram/Hologram.java +++ b/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/hologram/Hologram.java @@ -38,6 +38,7 @@ public abstract class Hologram { this.data = data; this.viewers = new HashSet<>(); this.traitTrait = new HologramTraitTrait(this); + this.data.setOnModify(this.traitTrait::onModify); } /** diff --git a/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/trait/HologramTrait.java b/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/trait/HologramTrait.java index 16e1e4db..662af4ff 100644 --- a/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/trait/HologramTrait.java +++ b/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/trait/HologramTrait.java @@ -60,6 +60,12 @@ public abstract class HologramTrait { public void onDespawn(Player player) { } + /** + * Called when the hologram is modified. + */ + public void onModify() { + } + /** * Called when the hologram is registered in the registry. */ diff --git a/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/trait/HologramTraitTrait.java b/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/trait/HologramTraitTrait.java index 2ddf741f..363221d0 100644 --- a/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/trait/HologramTraitTrait.java +++ b/plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/trait/HologramTraitTrait.java @@ -110,6 +110,13 @@ public class HologramTraitTrait extends HologramTrait { } } + @Override + public void onModify() { + for (HologramTrait trait : this.traits) { + trait.onModify(); + } + } + @Override public void onRegister() { for (HologramTrait trait : this.traits) {