From 837370c0e6bb69b0e763eebe14fbdb584fd8ffc0 Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 21 Nov 2024 10:10:48 +0100 Subject: [PATCH] Add interpolation duration to display hologram data --- .../api/data/DisplayHologramData.java | 15 +++++++++++++++ .../hologram/version/Hologram1_19_4.java | 10 ++++++---- .../hologram/version/Hologram1_20_1.java | 10 ++++++---- .../hologram/version/Hologram1_20_2.java | 10 ++++++---- .../hologram/version/Hologram1_20_4.java | 10 ++++++---- .../hologram/version/HologramImpl.java | 6 ++++-- 6 files changed, 43 insertions(+), 18 deletions(-) diff --git a/api/src/main/java/de/oliver/fancyholograms/api/data/DisplayHologramData.java b/api/src/main/java/de/oliver/fancyholograms/api/data/DisplayHologramData.java index a72b57fa..1639be34 100644 --- a/api/src/main/java/de/oliver/fancyholograms/api/data/DisplayHologramData.java +++ b/api/src/main/java/de/oliver/fancyholograms/api/data/DisplayHologramData.java @@ -16,6 +16,7 @@ public class DisplayHologramData extends HologramData { public static final Vector3f DEFAULT_TRANSLATION = new Vector3f(0, 0, 0); public static final float DEFAULT_SHADOW_RADIUS = 0.0f; public static final float DEFAULT_SHADOW_STRENGTH = 1.0f; + public static final int DEFAULT_INTERPOLATION_DURATION = 0; private Display.Billboard billboard = DEFAULT_BILLBOARD; private Vector3f scale = new Vector3f(DEFAULT_SCALE); @@ -23,6 +24,7 @@ public class DisplayHologramData extends HologramData { private Display.Brightness brightness; private float shadowRadius = DEFAULT_SHADOW_RADIUS; private float shadowStrength = DEFAULT_SHADOW_STRENGTH; + private int interpolationDuration = DEFAULT_INTERPOLATION_DURATION; /** * @param name Name of hologram @@ -112,6 +114,19 @@ public DisplayHologramData setShadowStrength(float shadowStrength) { return this; } + public int getInterpolationDuration() { + return interpolationDuration; + } + + public DisplayHologramData setInterpolationDuration(int interpolationDuration) { + if (this.interpolationDuration != interpolationDuration) { + this.interpolationDuration = interpolationDuration; + setHasChanges(true); + } + + return this; + } + @Override public boolean read(ConfigurationSection section, String name) { super.read(section, name); diff --git a/implementation_1_19_4/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_19_4.java b/implementation_1_19_4/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_19_4.java index b0723bdf..d9f41580 100644 --- a/implementation_1_19_4/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_19_4.java +++ b/implementation_1_19_4/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_19_4.java @@ -65,11 +65,13 @@ public void create() { case ITEM -> this.display = new Display.ItemDisplay(EntityType.ITEM_DISPLAY, world); } - final var DATA_INTERPOLATION_DURATION_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_19_4.DATA_INTERPOLATION_DURATION_ID.getMapping()); - display.getEntityData().set((EntityDataAccessor) DATA_INTERPOLATION_DURATION_ID, 1); + if (data instanceof DisplayHologramData dd) { + final var DATA_INTERPOLATION_DURATION_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_19_4.DATA_INTERPOLATION_DURATION_ID.getMapping()); + display.getEntityData().set((EntityDataAccessor) DATA_INTERPOLATION_DURATION_ID, dd.getInterpolationDuration()); - final var DATA_INTERPOLATION_START_DELTA_TICKS_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_19_4.DATA_INTERPOLATION_START_DELTA_TICKS_ID.getMapping()); - display.getEntityData().set((EntityDataAccessor) DATA_INTERPOLATION_START_DELTA_TICKS_ID, 0); + final var DATA_INTERPOLATION_START_DELTA_TICKS_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_19_4.DATA_INTERPOLATION_START_DELTA_TICKS_ID.getMapping()); + display.getEntityData().set((EntityDataAccessor) DATA_INTERPOLATION_START_DELTA_TICKS_ID, 0); + } update(); } diff --git a/implementation_1_20_1/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_20_1.java b/implementation_1_20_1/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_20_1.java index 1d449a5c..c355f9c6 100644 --- a/implementation_1_20_1/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_20_1.java +++ b/implementation_1_20_1/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_20_1.java @@ -65,11 +65,13 @@ public void create() { case ITEM -> this.display = new Display.ItemDisplay(EntityType.ITEM_DISPLAY, world); } - final var DATA_INTERPOLATION_DURATION_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_20_1.DATA_INTERPOLATION_DURATION_ID.getMapping()); - display.getEntityData().set((EntityDataAccessor) DATA_INTERPOLATION_DURATION_ID, 1); + if (data instanceof DisplayHologramData dd){ + final var DATA_INTERPOLATION_DURATION_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_20_1.DATA_INTERPOLATION_DURATION_ID.getMapping()); + display.getEntityData().set((EntityDataAccessor) DATA_INTERPOLATION_DURATION_ID, dd.getInterpolationDuration()); - final var DATA_INTERPOLATION_START_DELTA_TICKS_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_20_1.DATA_INTERPOLATION_START_DELTA_TICKS_ID.getMapping()); - display.getEntityData().set((EntityDataAccessor) DATA_INTERPOLATION_START_DELTA_TICKS_ID, 0); + final var DATA_INTERPOLATION_START_DELTA_TICKS_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_20_1.DATA_INTERPOLATION_START_DELTA_TICKS_ID.getMapping()); + display.getEntityData().set((EntityDataAccessor) DATA_INTERPOLATION_START_DELTA_TICKS_ID, 0); + } update(); } diff --git a/implementation_1_20_2/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_20_2.java b/implementation_1_20_2/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_20_2.java index 86f042d2..ba6b9966 100644 --- a/implementation_1_20_2/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_20_2.java +++ b/implementation_1_20_2/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_20_2.java @@ -65,11 +65,13 @@ public void create() { case ITEM -> this.display = new Display.ItemDisplay(EntityType.ITEM_DISPLAY, world); } - final var DATA_INTERPOLATION_DURATION_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_20_2.DATA_INTERPOLATION_DURATION_ID.getMapping()); - display.getEntityData().set((EntityDataAccessor) DATA_INTERPOLATION_DURATION_ID, 1); + if (data instanceof DisplayHologramData dd) { + final var DATA_INTERPOLATION_DURATION_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_20_2.DATA_INTERPOLATION_DURATION_ID.getMapping()); + display.getEntityData().set((EntityDataAccessor) DATA_INTERPOLATION_DURATION_ID, dd.getInterpolationDuration()); - final var DATA_INTERPOLATION_START_DELTA_TICKS_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_20_2.DATA_INTERPOLATION_START_DELTA_TICKS_ID.getMapping()); - display.getEntityData().set((EntityDataAccessor) DATA_INTERPOLATION_START_DELTA_TICKS_ID, 0); + final var DATA_INTERPOLATION_START_DELTA_TICKS_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_20_2.DATA_INTERPOLATION_START_DELTA_TICKS_ID.getMapping()); + display.getEntityData().set((EntityDataAccessor) DATA_INTERPOLATION_START_DELTA_TICKS_ID, 0); + } update(); } diff --git a/implementation_1_20_4/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_20_4.java b/implementation_1_20_4/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_20_4.java index 09aa2511..f538741f 100644 --- a/implementation_1_20_4/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_20_4.java +++ b/implementation_1_20_4/src/main/java/de/oliver/fancyholograms/hologram/version/Hologram1_20_4.java @@ -65,11 +65,13 @@ public void create() { case ITEM -> this.display = new Display.ItemDisplay(EntityType.ITEM_DISPLAY, world); } - final var DATA_TRANSFORMATION_INTERPOLATION_DURATION_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_20_4.DISPLAY__DATA_TRANSFORMATION_INTERPOLATION_DURATION_ID.getMapping()); - display.getEntityData().set((EntityDataAccessor) DATA_TRANSFORMATION_INTERPOLATION_DURATION_ID, 1); + if (data instanceof DisplayHologramData dd) { + final var DATA_TRANSFORMATION_INTERPOLATION_DURATION_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_20_4.DISPLAY__DATA_TRANSFORMATION_INTERPOLATION_DURATION_ID.getMapping()); + display.getEntityData().set((EntityDataAccessor) DATA_TRANSFORMATION_INTERPOLATION_DURATION_ID, dd.getInterpolationDuration()); - final var DATA_TRANSFORMATION_INTERPOLATION_START_DELTA_TICKS_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_20_4.DISPLAY__DATA_TRANSFORMATION_INTERPOLATION_START_DELTA_TICKS_ID.getMapping()); - display.getEntityData().set((EntityDataAccessor) DATA_TRANSFORMATION_INTERPOLATION_START_DELTA_TICKS_ID, 0); + final var DATA_TRANSFORMATION_INTERPOLATION_START_DELTA_TICKS_ID = ReflectionUtils.getStaticValue(Display.class, MappingKeys1_20_4.DISPLAY__DATA_TRANSFORMATION_INTERPOLATION_START_DELTA_TICKS_ID.getMapping()); + display.getEntityData().set((EntityDataAccessor) DATA_TRANSFORMATION_INTERPOLATION_START_DELTA_TICKS_ID, 0); + } update(); } diff --git a/src/main/java/de/oliver/fancyholograms/hologram/version/HologramImpl.java b/src/main/java/de/oliver/fancyholograms/hologram/version/HologramImpl.java index e917665f..35fb4814 100644 --- a/src/main/java/de/oliver/fancyholograms/hologram/version/HologramImpl.java +++ b/src/main/java/de/oliver/fancyholograms/hologram/version/HologramImpl.java @@ -37,8 +37,10 @@ public void create() { case BLOCK -> this.fsDisplay = new FS_BlockDisplay(); } - fsDisplay.setTransformationInterpolationDuration(1); - fsDisplay.setTransformationInterpolationStartDeltaTicks(0); + if (data instanceof DisplayHologramData dd) { + fsDisplay.setTransformationInterpolationDuration(dd.getInterpolationDuration()); + fsDisplay.setTransformationInterpolationStartDeltaTicks(0); + } update(); }