From 0f7ed0db4b5671c9ca72b81b6f4cca3f1a51af89 Mon Sep 17 00:00:00 2001 From: MattMX Date: Sun, 1 Dec 2024 01:02:01 +0000 Subject: [PATCH] :bug: Add Legacy hex code converter #32 --- .../com/mattmx/nametags/EventsListener.java | 24 +++++++++-------- .../mattmx/nametags/config/TextFormatter.java | 27 ++++++++++++++++++- 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/mattmx/nametags/EventsListener.java b/src/main/java/com/mattmx/nametags/EventsListener.java index cdc325e..9f3aed6 100644 --- a/src/main/java/com/mattmx/nametags/EventsListener.java +++ b/src/main/java/com/mattmx/nametags/EventsListener.java @@ -5,6 +5,8 @@ import com.mattmx.nametags.entity.trait.SneakTrait; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDeathEvent; +import org.bukkit.event.entity.EntityRemoveEvent; import org.bukkit.event.player.PlayerChangedWorldEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; @@ -26,17 +28,17 @@ public void onPlayerJoin(@NotNull PlayerJoinEvent event) { .updateVisibility(); } - @EventHandler - public void onEntityRemove(@NotNull EntityRemoveFromWorldEvent event) { - plugin.getEntityManager().removeLastSentPassengersCache(event.getEntity().getEntityId()); - - NameTagEntity entity = plugin.getEntityManager() - .removeEntity(event.getEntity()); - - if (entity != null) { - entity.destroy(); - } - } +// @EventHandler +// public void onEntityRemove(@NotNull EntityRemoveFromWorldEvent event) { +// plugin.getEntityManager().removeLastSentPassengersCache(event.getEntity().getEntityId()); +// +// NameTagEntity entity = plugin.getEntityManager() +// .removeEntity(event.getEntity()); +// +// if (entity != null) { +// entity.destroy(); +// } +// } @EventHandler public void onPlayerQuit(@NotNull PlayerQuitEvent event) { diff --git a/src/main/java/com/mattmx/nametags/config/TextFormatter.java b/src/main/java/com/mattmx/nametags/config/TextFormatter.java index 0850398..8630e2e 100644 --- a/src/main/java/com/mattmx/nametags/config/TextFormatter.java +++ b/src/main/java/com/mattmx/nametags/config/TextFormatter.java @@ -8,6 +8,8 @@ import java.util.Arrays; import java.util.Optional; import java.util.function.Function; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public enum TextFormatter { MINI_MESSAGE( @@ -16,10 +18,33 @@ public enum TextFormatter { ), LEGACY( "legacy", - (line) -> getLegacySerializer().deserialize(line) + (line) -> getLegacySerializer().deserialize(convertLegacyHex(line)) ) ; + // Converts legacy hex format &x&9&0&0&c&3&f to modern hex format ΄c3f + // https://github.com/Matt-MX/DisplayNameTags/issues/32#issuecomment-2509403581 + private static String convertLegacyHex(String input) { + //regex to match the legacy hex format + String legacyHexPattern = "&x(&[0-9a-fA-F]){6}"; + Pattern pattern = Pattern.compile(legacyHexPattern); + Matcher matcher = pattern.matcher(input); + + StringBuilder result = new StringBuilder(); + while (matcher.find()) { + String legacyHex = matcher.group(); + //extract hex digits from the legacy format + String hexColor = legacyHex.replace("&x", "") + .replace("&", ""); + //replace with modern format + String modernHex = "&#" + hexColor; + matcher.appendReplacement(result, modernHex); + } + matcher.appendTail(result); + + return result.toString(); + } + private static final LegacyComponentSerializer legacy = LegacyComponentSerializer.builder() .character('&') .hexCharacter('#')