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) {