Skip to content

Commit

Permalink
🐛 Add Legacy hex code converter #32
Browse files Browse the repository at this point in the history
  • Loading branch information
Matt-MX committed Dec 1, 2024
1 parent 562696b commit 0f7ed0d
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 12 deletions.
24 changes: 13 additions & 11 deletions src/main/java/com/mattmx/nametags/EventsListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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) {
Expand Down
27 changes: 26 additions & 1 deletion src/main/java/com/mattmx/nametags/config/TextFormatter.java
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand All @@ -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 &#900c3f
// 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('#')
Expand Down

0 comments on commit 0f7ed0d

Please sign in to comment.