From 1a2d9c136c841eec2fff126ce52beb8c7ca2ec0b Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+ChomeNS@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:27:29 +0700 Subject: [PATCH] refactor: improve NamedTextColor and style getting in ComponentUtilities --- build-number.txt | 2 +- .../chomens_bot/util/ComponentUtilities.java | 88 +++++++++---------- 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/build-number.txt b/build-number.txt index 39dcb9cb..961ebfac 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -2405 \ No newline at end of file +2407 \ No newline at end of file diff --git a/src/main/java/me/chayapak1/chomens_bot/util/ComponentUtilities.java b/src/main/java/me/chayapak1/chomens_bot/util/ComponentUtilities.java index cc16ccd6..cf32aa9d 100644 --- a/src/main/java/me/chayapak1/chomens_bot/util/ComponentUtilities.java +++ b/src/main/java/me/chayapak1/chomens_bot/util/ComponentUtilities.java @@ -169,6 +169,27 @@ public class ComponentUtilities { DISCORD_ANSI_MAP.put("r", "\u001b[0m"); } + public static final Map NAMED_TEXT_COLOR_MAP = new HashMap<>(); + + static { + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.BLACK, "0"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.DARK_BLUE, "1"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.DARK_GREEN, "2"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.DARK_AQUA, "3"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.DARK_RED, "4"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.DARK_PURPLE, "5"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.GOLD, "6"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.GRAY, "7"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.DARK_GRAY, "8"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.BLUE, "9"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.GREEN, "a"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.AQUA, "b"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.RED, "c"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.LIGHT_PURPLE, "d"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.YELLOW, "e"); + NAMED_TEXT_COLOR_MAP.put(NamedTextColor.WHITE, "f"); + } + // we only focus on the discord ones that we made private static final Pattern DISCORD_ANSI_PATTERN = Pattern.compile("(\\u001b\\[\\d+m)"); @@ -263,28 +284,25 @@ public class ComponentUtilities { final TextDecoration decoration = decorationEntry.getKey(); final TextDecoration.State state = decorationEntry.getValue(); - if (state == TextDecoration.State.NOT_SET || state == TextDecoration.State.FALSE) continue; + if (state != TextDecoration.State.TRUE) continue; - if (type == ParseType.ANSI || type == ParseType.DISCORD_ANSI) { - final Map map = type == ParseType.ANSI ? - ANSI_MAP : - DISCORD_ANSI_MAP; + if (type != ParseType.PLAIN) { + final Map styleMap = + type == ParseType.ANSI ? ANSI_MAP : DISCORD_ANSI_MAP; - switch (decoration) { - case BOLD -> style.append(map.get("l")); - case ITALIC -> style.append(map.get("o")); - case OBFUSCATED -> style.append(map.get("k")); - case UNDERLINED -> style.append(map.get("n")); - case STRIKETHROUGH -> style.append(map.get("m")); - } - } else if (type == ParseType.SECTION_SIGNS) { - switch (decoration) { - case BOLD -> style.append("§l"); - case ITALIC -> style.append("§o"); - case OBFUSCATED -> style.append("§k"); - case UNDERLINED -> style.append("§n"); - case STRIKETHROUGH -> style.append("§m"); - } + final String key = switch (decoration) { + case BOLD -> "l"; + case ITALIC -> "o"; + case UNDERLINED -> "n"; + case STRIKETHROUGH -> "m"; + case OBFUSCATED -> "k"; + }; + + style.append( + type == ParseType.SECTION_SIGNS ? + "§" + key : + styleMap.getOrDefault(key, "") + ); } } @@ -296,28 +314,10 @@ public class ComponentUtilities { // map totallynotskidded™ from https://github.com/PrismarineJS/prismarine-chat/blob/master/index.js#L299 String code; - if (color == NamedTextColor.BLACK) code = "0"; - else if (color == NamedTextColor.DARK_BLUE) code = "1"; - else if (color == NamedTextColor.DARK_GREEN) code = "2"; - else if (color == NamedTextColor.DARK_AQUA) code = "3"; - else if (color == NamedTextColor.DARK_RED) code = "4"; - else if (color == NamedTextColor.DARK_PURPLE) code = "5"; - else if (color == NamedTextColor.GOLD) code = "6"; - else if (color == NamedTextColor.GRAY) code = "7"; - else if (color == NamedTextColor.DARK_GRAY) code = "8"; - else if (color == NamedTextColor.BLUE) code = "9"; - else if (color == NamedTextColor.GREEN) code = "a"; - else if (color == NamedTextColor.AQUA) code = "b"; - else if (color == NamedTextColor.RED) code = "c"; - else if (color == NamedTextColor.LIGHT_PURPLE) code = "d"; - else if (color == NamedTextColor.YELLOW) code = "e"; - else if (color == NamedTextColor.WHITE) code = "f"; - else { - try { - code = color.asHexString(); - } catch (NullPointerException e) { - code = ""; // mabe...,,.,.., - } + if (color instanceof NamedTextColor named) { + code = NAMED_TEXT_COLOR_MAP.getOrDefault(named, ""); + } else { + code = color.asHexString(); } if (type == ParseType.SECTION_SIGNS) { @@ -346,9 +346,9 @@ public class ComponentUtilities { } return ansiCode; - } else { - return ""; } + + return ""; } private String getPartialResultAndSetLastColor (String originalResult, String color, String style) {