From 399fe8f7d7de35e46d02e98abc98a5caa638694a Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 30 Jul 2025 22:38:27 +0200 Subject: [PATCH] fancyholograms v3: Add trait to hologram builder --- .../api/data/builder/HologramBuilder.java | 10 ++++++++++ .../fancyholograms/tests/api/HologramBuilderTest.java | 3 +++ 2 files changed, 13 insertions(+) diff --git a/plugins/fancyholograms/fh-api/src/main/java/com/fancyinnovations/fancyholograms/api/data/builder/HologramBuilder.java b/plugins/fancyholograms/fh-api/src/main/java/com/fancyinnovations/fancyholograms/api/data/builder/HologramBuilder.java index 36cefcdb..ec59d1b7 100644 --- a/plugins/fancyholograms/fh-api/src/main/java/com/fancyinnovations/fancyholograms/api/data/builder/HologramBuilder.java +++ b/plugins/fancyholograms/fh-api/src/main/java/com/fancyinnovations/fancyholograms/api/data/builder/HologramBuilder.java @@ -4,6 +4,7 @@ import com.fancyinnovations.fancyholograms.api.FancyHolograms; import com.fancyinnovations.fancyholograms.api.data.DisplayHologramData; import com.fancyinnovations.fancyholograms.api.data.property.Visibility; import com.fancyinnovations.fancyholograms.api.hologram.Hologram; +import com.fancyinnovations.fancyholograms.api.trait.HologramTrait; import org.bukkit.entity.Display; import org.joml.Vector3f; @@ -58,6 +59,15 @@ public abstract class HologramBuilder { return this; } + /** + * Adds a trait to the hologram. + */ + public final HologramBuilder trait(Class trait) { + data.addTrait(trait); + + return this; + } + // The following methods are specific to the DisplayHologramData class public HologramBuilder billboard(Display.Billboard billboard) { diff --git a/plugins/fancyholograms/src/main/java/com/fancyinnovations/fancyholograms/tests/api/HologramBuilderTest.java b/plugins/fancyholograms/src/main/java/com/fancyinnovations/fancyholograms/tests/api/HologramBuilderTest.java index 02033cf3..d3154030 100644 --- a/plugins/fancyholograms/src/main/java/com/fancyinnovations/fancyholograms/tests/api/HologramBuilderTest.java +++ b/plugins/fancyholograms/src/main/java/com/fancyinnovations/fancyholograms/tests/api/HologramBuilderTest.java @@ -11,6 +11,7 @@ import com.fancyinnovations.fancyholograms.api.data.property.Visibility; import com.fancyinnovations.fancyholograms.api.hologram.Hologram; import com.fancyinnovations.fancyholograms.api.hologram.HologramType; import com.fancyinnovations.fancyholograms.main.FancyHologramsPlugin; +import com.fancyinnovations.fancyholograms.trait.builtin.DebugTrait; import de.oliver.plugintests.annotations.FPTest; import org.bukkit.Color; import org.bukkit.Material; @@ -98,6 +99,7 @@ public class HologramBuilderTest { .visibility(Visibility.ALL) .persistent(false) .linkedNpcName("TestNPC") + .trait(DebugTrait.class) .billboard(Display.Billboard.FIXED) .scale(3, 5, 6) .translation(1, 2, 3) @@ -122,6 +124,7 @@ public class HologramBuilderTest { expect(data.getVisibility()).toEqual(Visibility.ALL); expect(data.isPersistent()).toBe(false); expect(data.getLinkedNpcName()).toEqual("TestNPC"); + expect(data.getTraitTrait().isTraitAttached(DebugTrait.class)).toBe(true); expect(data.getBillboard()).toEqual(Display.Billboard.FIXED); expect(data.getScale()).toEqual(new Vector3f(3, 5, 6)); expect(data.getTranslation()).toEqual(new Vector3f(1, 2, 3));