From 37f470c0013b296d73cfebf2bd750ca93f9a793a Mon Sep 17 00:00:00 2001 From: boiscljo Date: Wed, 15 Dec 2021 10:22:51 -0500 Subject: [PATCH 1/5] Allow modifier to be applied to only parts of the text --- .../iridiumcolorapi/IridiumColorAPI.java | 113 ++++++++++-------- 1 file changed, 66 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java b/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java index 73e27ec..22e4e5d 100644 --- a/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java +++ b/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java @@ -21,7 +21,8 @@ public class IridiumColorAPI { /** * The current version of the server in the a form of a major version. - * If the static initialization for this fails, you know something's wrong with the server software. + * If the static initialization for this fails, you know something's wrong with + * the server software. * * @since 1.0.0 */ @@ -34,7 +35,8 @@ public class IridiumColorAPI { */ private static final boolean SUPPORTS_RGB = VERSION >= 16; - private static final List SPECIAL_COLORS = Arrays.asList("&l", "&n", "&o", "&k", "&m","§l", "§n", "§o", "§k", "§m"); + private static final List SPECIAL_COLORS = Arrays.asList("&l", "&n", "&o", "&k", "&m", "§l", "§n", "§o", + "§k", "§m"); /** * Cached result of all legacy colors. @@ -64,7 +66,8 @@ public class IridiumColorAPI { * * @since 1.0.2 */ - private static final List PATTERNS = Arrays.asList(new GradientPattern(), new SolidPattern(), new RainbowPattern()); + private static final List PATTERNS = Arrays.asList(new GradientPattern(), new SolidPattern(), + new RainbowPattern()); /** * Processes a string to add color to it. @@ -78,7 +81,7 @@ public static String process(@Nonnull String string) { for (Pattern pattern : PATTERNS) { string = pattern.process(string); } - + string = ChatColor.translateAlternateColorCodes('&', string); return string; } @@ -93,8 +96,8 @@ public static String process(@Nonnull String string) { @Nonnull public static List process(@Nonnull List strings) { return strings.stream() - .map(IridiumColorAPI::process) - .collect(Collectors.toList()); + .map(IridiumColorAPI::process) + .collect(Collectors.toList()); } /** @@ -119,22 +122,10 @@ public static String color(@Nonnull String string, @Nonnull Color color) { */ @Nonnull public static String color(@Nonnull String string, @Nonnull Color start, @Nonnull Color end) { - StringBuilder specialColors = new StringBuilder(); - for (String color : SPECIAL_COLORS) { - if (string.contains(color)) { - specialColors.append(color); - string = string.replace(color, ""); - } - } - - StringBuilder stringBuilder = new StringBuilder(); + String originalString = string; + string = withoutSpecialChar(string); ChatColor[] colors = createGradient(start, end, string.length()); - String[] characters = string.split(""); - for (int i = 0; i < string.length(); i++) { - stringBuilder.append(colors[i]).append(specialColors).append(characters[i]); - } - - return stringBuilder.toString(); + return apply(originalString, colors); } /** @@ -146,22 +137,11 @@ public static String color(@Nonnull String string, @Nonnull Color start, @Nonnul */ @Nonnull public static String rainbow(@Nonnull String string, float saturation) { - StringBuilder specialColors = new StringBuilder(); - for (String color : SPECIAL_COLORS) { - if (string.contains(color)) { - specialColors.append(color); - string = string.replace(color, ""); - } - } - - StringBuilder stringBuilder = new StringBuilder(); + String originalString = string; + string = withoutSpecialChar(string); + ChatColor[] colors = createRainbow(string.length(), saturation); - String[] characters = string.split(""); - for (int i = 0; i < string.length(); i++) { - stringBuilder.append(colors[i]).append(specialColors).append(characters[i]); - } - - return stringBuilder.toString(); + return apply(originalString, colors); } /** @@ -172,14 +152,16 @@ public static String rainbow(@Nonnull String string, float saturation) { */ @Nonnull public static ChatColor getColor(@Nonnull String string) { - return SUPPORTS_RGB ? ChatColor.of(new Color(Integer.parseInt(string, 16))) : getClosestColor(new Color(Integer.parseInt(string, 16))); + return SUPPORTS_RGB ? ChatColor.of(new Color(Integer.parseInt(string, 16))) + : getClosestColor(new Color(Integer.parseInt(string, 16))); } /** - * Removes all color codes from the provided String, including IridiumColorAPI patterns. + * Removes all color codes from the provided String, including IridiumColorAPI + * patterns. * - * @param string The String which should be stripped - * @return The stripped string without color codes + * @param string The String which should be stripped + * @return The stripped string without color codes * @since 1.0.5 */ @Nonnull @@ -187,6 +169,40 @@ public static String stripColorFormatting(@Nonnull String string) { return string.replaceAll("<#[0-9A-F]{6}>|[&§][a-f0-9lnokm]|<[/]?[A-Z]{5,8}(:[0-9A-F]{6})?[0-9]*>", ""); } + @Nonnull + private static String apply(@Nonnull String source, ChatColor[] colors) { + StringBuilder specialColors = new StringBuilder(); + StringBuilder stringBuilder = new StringBuilder(); + String[] characters = source.split(""); + int outIndex = 0; + for (int i = 0; i < characters.length; i++) { + if (characters[i].equals("&") || characters[i].equals("§")) { + if (i + 1 < characters.length) { + if (characters[i + 1].equals("r")) { + specialColors.setLength(0); + } else { + specialColors.append(characters[i]); + specialColors.append(characters[i + 1]); + } + i++; + } else + stringBuilder.append(colors[outIndex++]).append(specialColors).append(characters[i]); + } else + stringBuilder.append(colors[outIndex++]).append(specialColors).append(characters[i]); + } + return stringBuilder.toString(); + } + + @Nonnull + private static String withoutSpecialChar(@Nonnull String source) { + for (String color : SPECIAL_COLORS) { + if (source.contains(color)) { + source = source.replace(color, ""); + } + } + return source; + } + /** * Returns a rainbow array of chat colors. * @@ -199,7 +215,7 @@ public static String stripColorFormatting(@Nonnull String string) { private static ChatColor[] createRainbow(int step, float saturation) { ChatColor[] colors = new ChatColor[step]; double colorStep = (1.00 / step); - + for (int i = 0; i < step; i++) { Color color = Color.getHSBColor((float) (colorStep * i), saturation, saturation); if (SUPPORTS_RGB) { @@ -208,7 +224,7 @@ private static ChatColor[] createRainbow(int step, float saturation) { colors[i] = getClosestColor(color); } } - + return colors; } @@ -234,18 +250,18 @@ private static ChatColor[] createGradient(@Nonnull Color start, @Nonnull Color e }; for (int i = 0; i < step; i++) { - Color color = new Color(start.getRed() + ((stepR * i) * direction[0]), start.getGreen() + ((stepG * i) * direction[1]), start.getBlue() + ((stepB * i) * direction[2])); + Color color = new Color(start.getRed() + ((stepR * i) * direction[0]), + start.getGreen() + ((stepG * i) * direction[1]), start.getBlue() + ((stepB * i) * direction[2])); if (SUPPORTS_RGB) { colors[i] = ChatColor.of(color); } else { colors[i] = getClosestColor(color); } } - + return colors; } - /** * Returns the closest legacy color from an rgb color * @@ -258,7 +274,9 @@ private static ChatColor getClosestColor(Color color) { double nearestDistance = Integer.MAX_VALUE; for (Color constantColor : COLORS.keySet()) { - double distance = Math.pow(color.getRed() - constantColor.getRed(), 2) + Math.pow(color.getGreen() - constantColor.getGreen(), 2) + Math.pow(color.getBlue() - constantColor.getBlue(), 2); + double distance = Math.pow(color.getRed() - constantColor.getRed(), 2) + + Math.pow(color.getGreen() - constantColor.getGreen(), 2) + + Math.pow(color.getBlue() - constantColor.getBlue(), 2); if (nearestDistance > distance) { nearestColor = constantColor; nearestDistance = distance; @@ -290,7 +308,8 @@ private static int getVersion() { // 1.13.2, 1.14.4, etc... int lastDot = version.lastIndexOf('.'); - if (version.indexOf('.') != lastDot) version = version.substring(0, lastDot); + if (version.indexOf('.') != lastDot) + version = version.substring(0, lastDot); return Integer.parseInt(version.substring(2)); } From 7f6e3b955a57d0fdbd413c14c4b3c90f88477026 Mon Sep 17 00:00:00 2001 From: boiscljo Date: Wed, 15 Dec 2021 12:40:17 -0500 Subject: [PATCH 2/5] Fix autoformatting and add testing --- .../iridium/iridiumcolorapi/IridiumColorAPI.java | 16 +++++----------- .../iridiumcolorapi/IridiumColorAPITest.java | 1 + 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java b/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java index 22e4e5d..fbd5cc3 100644 --- a/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java +++ b/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java @@ -35,8 +35,7 @@ public class IridiumColorAPI { */ private static final boolean SUPPORTS_RGB = VERSION >= 16; - private static final List SPECIAL_COLORS = Arrays.asList("&l", "&n", "&o", "&k", "&m", "§l", "§n", "§o", - "§k", "§m"); + private static final List SPECIAL_COLORS = Arrays.asList("&l", "&n", "&o", "&k", "&m", "§l", "§n", "§o", "§k", "§m"); /** * Cached result of all legacy colors. @@ -66,8 +65,7 @@ public class IridiumColorAPI { * * @since 1.0.2 */ - private static final List PATTERNS = Arrays.asList(new GradientPattern(), new SolidPattern(), - new RainbowPattern()); + private static final List PATTERNS = Arrays.asList(new GradientPattern(), new SolidPattern(), new RainbowPattern()); /** * Processes a string to add color to it. @@ -250,8 +248,7 @@ private static ChatColor[] createGradient(@Nonnull Color start, @Nonnull Color e }; for (int i = 0; i < step; i++) { - Color color = new Color(start.getRed() + ((stepR * i) * direction[0]), - start.getGreen() + ((stepG * i) * direction[1]), start.getBlue() + ((stepB * i) * direction[2])); + Color color = new Color(start.getRed() + ((stepR * i) * direction[0]), start.getGreen() + ((stepG * i) * direction[1]), start.getBlue() + ((stepB * i) * direction[2])); if (SUPPORTS_RGB) { colors[i] = ChatColor.of(color); } else { @@ -274,9 +271,7 @@ private static ChatColor getClosestColor(Color color) { double nearestDistance = Integer.MAX_VALUE; for (Color constantColor : COLORS.keySet()) { - double distance = Math.pow(color.getRed() - constantColor.getRed(), 2) - + Math.pow(color.getGreen() - constantColor.getGreen(), 2) - + Math.pow(color.getBlue() - constantColor.getBlue(), 2); + double distance = Math.pow(color.getRed() - constantColor.getRed(), 2) + Math.pow(color.getGreen() - constantColor.getGreen(), 2) + Math.pow(color.getBlue() - constantColor.getBlue(), 2); if (nearestDistance > distance) { nearestColor = constantColor; nearestDistance = distance; @@ -308,8 +303,7 @@ private static int getVersion() { // 1.13.2, 1.14.4, etc... int lastDot = version.lastIndexOf('.'); - if (version.indexOf('.') != lastDot) - version = version.substring(0, lastDot); + if (version.indexOf('.') != lastDot) version = version.substring(0, lastDot); return Integer.parseInt(version.substring(2)); } diff --git a/src/test/java/com/iridium/iridiumcolorapi/IridiumColorAPITest.java b/src/test/java/com/iridium/iridiumcolorapi/IridiumColorAPITest.java index 0168420..62f5639 100644 --- a/src/test/java/com/iridium/iridiumcolorapi/IridiumColorAPITest.java +++ b/src/test/java/com/iridium/iridiumcolorapi/IridiumColorAPITest.java @@ -26,6 +26,7 @@ static void setup() { @Test void process() { assertEquals("§x§1§2§3§4§5§6Test", IridiumColorAPI.process("Test")); + assertEquals("§x§1§2§3§4§5§6Te§kst", IridiumColorAPI.process("Te&kst")); assertEquals("§x§2§c§0§8§b§a§lT§x§1§e§3§3§a§f§le§x§1§0§5§e§a§4§ls§x§0§2§8§9§9§9§lt", IridiumColorAPI.process("&lTest")); assertEquals("§x§f§f§0§0§0§0§lT§x§8§0§f§f§0§0§le§x§0§0§f§f§f§f§ls§x§8§0§0§0§f§f§lt", IridiumColorAPI.process("&lTest")); assertEquals("§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*", IridiumColorAPI.process("******************************************************************************************************************************************************************************************************")); From 5fa1e55f656ed29187ff7fc7e7c4d837a2c0ffdd Mon Sep 17 00:00:00 2001 From: boiscljo Date: Wed, 15 Dec 2021 12:51:15 -0500 Subject: [PATCH 3/5] Gradient and rainbow test case --- .../java/com/iridium/iridiumcolorapi/IridiumColorAPITest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/java/com/iridium/iridiumcolorapi/IridiumColorAPITest.java b/src/test/java/com/iridium/iridiumcolorapi/IridiumColorAPITest.java index 62f5639..3111d59 100644 --- a/src/test/java/com/iridium/iridiumcolorapi/IridiumColorAPITest.java +++ b/src/test/java/com/iridium/iridiumcolorapi/IridiumColorAPITest.java @@ -25,10 +25,13 @@ static void setup() { @Test void process() { + assertEquals("§x§1§2§3§4§5§6Test", IridiumColorAPI.process("Test")); assertEquals("§x§1§2§3§4§5§6Te§kst", IridiumColorAPI.process("Te&kst")); assertEquals("§x§2§c§0§8§b§a§lT§x§1§e§3§3§a§f§le§x§1§0§5§e§a§4§ls§x§0§2§8§9§9§9§lt", IridiumColorAPI.process("&lTest")); + assertEquals("§x§2§c§0§8§b§a§lT§x§1§e§3§3§a§f§le§x§1§0§5§e§a§4§ls§x§0§2§8§9§9§9§l§kt", IridiumColorAPI.process("&lTes§kt")); assertEquals("§x§f§f§0§0§0§0§lT§x§8§0§f§f§0§0§le§x§0§0§f§f§f§f§ls§x§8§0§0§0§f§f§lt", IridiumColorAPI.process("&lTest")); + assertEquals("§x§f§f§0§0§0§0§lT§x§8§0§f§f§0§0§le§x§0§0§f§f§f§f§ls§x§8§0§0§0§f§f§l§kt", IridiumColorAPI.process("&lTes&kt")); assertEquals("§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*§x§1§2§3§4§5§6*", IridiumColorAPI.process("******************************************************************************************************************************************************************************************************")); } From db20b5b79a2d6fa37e6f990e445b528a0fb07a1c Mon Sep 17 00:00:00 2001 From: boiscljo Date: Wed, 15 Dec 2021 12:55:52 -0500 Subject: [PATCH 4/5] Remove the reassigning the parameters --- .../com/iridium/iridiumcolorapi/IridiumColorAPI.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java b/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java index fbd5cc3..0b5caa5 100644 --- a/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java +++ b/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java @@ -136,9 +136,8 @@ public static String color(@Nonnull String string, @Nonnull Color start, @Nonnul @Nonnull public static String rainbow(@Nonnull String string, float saturation) { String originalString = string; - string = withoutSpecialChar(string); - ChatColor[] colors = createRainbow(string.length(), saturation); + ChatColor[] colors = createRainbow(withoutSpecialChar(string).length(), saturation); return apply(originalString, colors); } @@ -193,12 +192,13 @@ private static String apply(@Nonnull String source, ChatColor[] colors) { @Nonnull private static String withoutSpecialChar(@Nonnull String source) { + String workingString = source; for (String color : SPECIAL_COLORS) { - if (source.contains(color)) { - source = source.replace(color, ""); + if (workingString.contains(color)) { + workingString = workingString.replace(color, ""); } } - return source; + return workingString; } /** From 1468c50b2b0abd0e14fd9164ba59bf502980bb65 Mon Sep 17 00:00:00 2001 From: boiscljo Date: Wed, 15 Dec 2021 13:12:35 -0500 Subject: [PATCH 5/5] Remove the reassigning the parameters --- .../java/com/iridium/iridiumcolorapi/IridiumColorAPI.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java b/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java index 0b5caa5..3e96f0e 100644 --- a/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java +++ b/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java @@ -121,8 +121,8 @@ public static String color(@Nonnull String string, @Nonnull Color color) { @Nonnull public static String color(@Nonnull String string, @Nonnull Color start, @Nonnull Color end) { String originalString = string; - string = withoutSpecialChar(string); - ChatColor[] colors = createGradient(start, end, string.length()); + + ChatColor[] colors = createGradient(start, end, withoutSpecialChar(string).length()); return apply(originalString, colors); }