fancyholograms v3: Add trait to hologram builder

This commit is contained in:
Oliver
2025-07-30 22:38:27 +02:00
parent 6843c67055
commit 399fe8f7d7
2 changed files with 13 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ import com.fancyinnovations.fancyholograms.api.FancyHolograms;
import com.fancyinnovations.fancyholograms.api.data.DisplayHologramData; import com.fancyinnovations.fancyholograms.api.data.DisplayHologramData;
import com.fancyinnovations.fancyholograms.api.data.property.Visibility; import com.fancyinnovations.fancyholograms.api.data.property.Visibility;
import com.fancyinnovations.fancyholograms.api.hologram.Hologram; import com.fancyinnovations.fancyholograms.api.hologram.Hologram;
import com.fancyinnovations.fancyholograms.api.trait.HologramTrait;
import org.bukkit.entity.Display; import org.bukkit.entity.Display;
import org.joml.Vector3f; import org.joml.Vector3f;
@@ -58,6 +59,15 @@ public abstract class HologramBuilder {
return this; return this;
} }
/**
* Adds a trait to the hologram.
*/
public final HologramBuilder trait(Class<? extends HologramTrait> trait) {
data.addTrait(trait);
return this;
}
// The following methods are specific to the DisplayHologramData class // The following methods are specific to the DisplayHologramData class
public HologramBuilder billboard(Display.Billboard billboard) { public HologramBuilder billboard(Display.Billboard billboard) {

View File

@@ -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.Hologram;
import com.fancyinnovations.fancyholograms.api.hologram.HologramType; import com.fancyinnovations.fancyholograms.api.hologram.HologramType;
import com.fancyinnovations.fancyholograms.main.FancyHologramsPlugin; import com.fancyinnovations.fancyholograms.main.FancyHologramsPlugin;
import com.fancyinnovations.fancyholograms.trait.builtin.DebugTrait;
import de.oliver.plugintests.annotations.FPTest; import de.oliver.plugintests.annotations.FPTest;
import org.bukkit.Color; import org.bukkit.Color;
import org.bukkit.Material; import org.bukkit.Material;
@@ -98,6 +99,7 @@ public class HologramBuilderTest {
.visibility(Visibility.ALL) .visibility(Visibility.ALL)
.persistent(false) .persistent(false)
.linkedNpcName("TestNPC") .linkedNpcName("TestNPC")
.trait(DebugTrait.class)
.billboard(Display.Billboard.FIXED) .billboard(Display.Billboard.FIXED)
.scale(3, 5, 6) .scale(3, 5, 6)
.translation(1, 2, 3) .translation(1, 2, 3)
@@ -122,6 +124,7 @@ public class HologramBuilderTest {
expect(data.getVisibility()).toEqual(Visibility.ALL); expect(data.getVisibility()).toEqual(Visibility.ALL);
expect(data.isPersistent()).toBe(false); expect(data.isPersistent()).toBe(false);
expect(data.getLinkedNpcName()).toEqual("TestNPC"); expect(data.getLinkedNpcName()).toEqual("TestNPC");
expect(data.getTraitTrait().isTraitAttached(DebugTrait.class)).toBe(true);
expect(data.getBillboard()).toEqual(Display.Billboard.FIXED); expect(data.getBillboard()).toEqual(Display.Billboard.FIXED);
expect(data.getScale()).toEqual(new Vector3f(3, 5, 6)); expect(data.getScale()).toEqual(new Vector3f(3, 5, 6));
expect(data.getTranslation()).toEqual(new Vector3f(1, 2, 3)); expect(data.getTranslation()).toEqual(new Vector3f(1, 2, 3));