From e34f48dc068b25547c56894a87e264bfdc0a1baf Mon Sep 17 00:00:00 2001 From: MattMX Date: Thu, 10 Oct 2024 12:03:45 +0100 Subject: [PATCH] :bug: Fix legacy hex codes #18 --- gradle.properties | 2 +- .../nametags/config/ConfigDefaultsListener.java | 10 +--------- .../com/mattmx/nametags/config/TextFormatter.java | 12 +++++++++++- .../com/mattmx/nametags/entity/trait/SneakTrait.java | 9 +++++++++ 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/gradle.properties b/gradle.properties index 4fcd150..5e41f38 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ kotlin.code.style=official # Project configuration group_name = com.mattmx id = nametags -version = 1.1 +version = 1.2 plugin_name = NameTags plugin_main_class_name = NameTags diff --git a/src/main/java/com/mattmx/nametags/config/ConfigDefaultsListener.java b/src/main/java/com/mattmx/nametags/config/ConfigDefaultsListener.java index 56bdc84..d20b9e2 100644 --- a/src/main/java/com/mattmx/nametags/config/ConfigDefaultsListener.java +++ b/src/main/java/com/mattmx/nametags/config/ConfigDefaultsListener.java @@ -5,7 +5,6 @@ import com.mattmx.nametags.entity.trait.SneakTrait; import com.mattmx.nametags.event.NameTagEntityCreateEvent; import me.tofaa.entitylib.meta.display.AbstractDisplayMeta; -import org.bukkit.Bukkit; import org.bukkit.Color; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; @@ -80,14 +79,7 @@ public void onCreate(@NotNull NameTagEntityCreateEvent event) { // Maybe we should introduce an `afterRefresh` callback? entity.getTraits() .getTrait(SneakTrait.class) - .ifPresent((sneak) -> { - if (!sneak.isSneaking()) return; - - entity.modify((tag) -> { - Color currentColor = Color.fromARGB(tag.getBackgroundColor()); - tag.setBackgroundColor(sneak.withCustomSneakOpacity(currentColor).asARGB()); - }); - }); + .ifPresent(SneakTrait::manuallyUpdateSneakingOpacity); entity.updateVisibility(); entity.getPassenger().refresh(); diff --git a/src/main/java/com/mattmx/nametags/config/TextFormatter.java b/src/main/java/com/mattmx/nametags/config/TextFormatter.java index 65fe363..0850398 100644 --- a/src/main/java/com/mattmx/nametags/config/TextFormatter.java +++ b/src/main/java/com/mattmx/nametags/config/TextFormatter.java @@ -16,10 +16,20 @@ public enum TextFormatter { ), LEGACY( "legacy", - (line) -> LegacyComponentSerializer.legacyAmpersand().deserialize(line) + (line) -> getLegacySerializer().deserialize(line) ) ; + private static final LegacyComponentSerializer legacy = LegacyComponentSerializer.builder() + .character('&') + .hexCharacter('#') + .hexColors() + .build(); + + public static @NotNull LegacyComponentSerializer getLegacySerializer() { + return legacy; + } + private final @NotNull String identifier; private final @NotNull Function formatter; diff --git a/src/main/java/com/mattmx/nametags/entity/trait/SneakTrait.java b/src/main/java/com/mattmx/nametags/entity/trait/SneakTrait.java index 7a85d56..7f38a15 100644 --- a/src/main/java/com/mattmx/nametags/entity/trait/SneakTrait.java +++ b/src/main/java/com/mattmx/nametags/entity/trait/SneakTrait.java @@ -9,6 +9,15 @@ public class SneakTrait extends Trait { private int previousTextOpacity = Byte.MAX_VALUE; private boolean isSneaking = false; + public void manuallyUpdateSneakingOpacity() { + if (!isSneaking()) return; + + getTag().modify((tag) -> { + Color currentColor = Color.fromARGB(tag.getBackgroundColor()); + tag.setBackgroundColor(withCustomSneakOpacity(currentColor).asARGB()); + }); + } + public void updateSneak(boolean sneaking) { this.isSneaking = sneaking; getTag().modify((meta) -> {