From a630889a69b0e70bc1a7d42d362c0d0c86fe4396 Mon Sep 17 00:00:00 2001 From: iiAhmedYT <61851106+iiAhmedYT@users.noreply.github.com> Date: Tue, 2 Jan 2024 22:24:48 +0200 Subject: [PATCH 1/4] Add bungeecord support, Improve IridiumColorAPI#apply --- build.gradle.kts | 2 +- .../iridiumcolorapi/IridiumColorAPI.java | 82 +++++++++---------- 2 files changed, 40 insertions(+), 44 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 043b3db..f58a706 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } group = "com.iridium" -version = "1.0.6" +version = "1.0.7" description = "IridiumColorAPI" java.sourceCompatibility = JavaVersion.VERSION_1_8 diff --git a/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java b/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java index 4d32031..8e4a64d 100644 --- a/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java +++ b/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java @@ -6,12 +6,10 @@ import com.iridium.iridiumcolorapi.patterns.RainbowPattern; import com.iridium.iridiumcolorapi.patterns.SolidPattern; import net.md_5.bungee.api.ChatColor; -import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; import javax.annotation.Nonnull; import java.awt.*; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -34,7 +32,7 @@ public class IridiumColorAPI { * * @since 1.0.0 */ - private static final boolean SUPPORTS_RGB = VERSION >= 16; + private static final boolean SUPPORTS_RGB = VERSION >= 16 || VERSION == -1; private static final List SPECIAL_COLORS = Arrays.asList("&l", "&n", "&o", "&k", "&m", "§l", "§n", "§o", "§k", "§m"); @@ -81,8 +79,7 @@ public static String process(@Nonnull String string) { string = pattern.process(string); } - string = ChatColor.translateAlternateColorCodes('&', string); - return string; + return ChatColor.translateAlternateColorCodes('&', string); } /** @@ -121,10 +118,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; - ChatColor[] colors = createGradient(start, end, withoutSpecialChar(string).length()); - return apply(originalString, colors); + return apply(string, colors); } /** @@ -136,10 +131,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; - ChatColor[] colors = createRainbow(withoutSpecialChar(string).length(), saturation); - return apply(originalString, colors); + return apply(string, colors); } /** @@ -171,22 +164,22 @@ public static String stripColorFormatting(@Nonnull String string) { 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]); + + for (int i = 0; i < source.length(); i++) { + char currentChar = source.charAt(i); + if (('&' != currentChar && '§' != currentChar) || i + 1 >= source.length()) { + stringBuilder.append(colors[outIndex++]).append(specialColors).append(currentChar); + continue; + } + + char nextChar = source.charAt(i + 1); + if ('r' == nextChar) { + specialColors.setLength(0); + } else { + specialColors.append(currentChar).append(nextChar); + } + i++; } return stringBuilder.toString(); } @@ -285,28 +278,31 @@ private static ChatColor getClosestColor(Color color) { * Gets a simplified major version (..., 9, 10, ..., 14). * In most cases, you shouldn't be using this method. * - * @return the simplified major version. + * @return the simplified major version, or -1 for bungeecord * @since 1.0.0 */ private static int getVersion() { - String version = Bukkit.getVersion(); - Validate.notEmpty(version, "Cannot get major Minecraft version from null or empty string"); - - // getVersion() - int index = version.lastIndexOf("MC:"); - if (index != -1) { - version = version.substring(index + 4, version.length() - 1); - } else if (version.endsWith("SNAPSHOT")) { - // getBukkitVersion() - index = version.indexOf('-'); - version = version.substring(0, index); + if (!classExists("org.bukkit.Bukkit") && classExists("net.md_5.bungee.api.ChatColor")) { + return -1; } + String version = Bukkit.getServer().getClass().getPackage().getName().substring(24); + return Integer.parseInt(version.split("_")[1]); + } - // 1.13.2, 1.14.4, etc... - int lastDot = version.lastIndexOf('.'); - if (version.indexOf('.') != lastDot) version = version.substring(0, lastDot); - - return Integer.parseInt(version.substring(2)); + /** + * Checks if a class exists in the current server + * + * @param path The path of that class + * @return true if the class exists, false if it doesn't + * @since 1.0.7 + */ + private static boolean classExists(final String path) { + try { + Class.forName(path); + return true; + } catch (ClassNotFoundException e) { + return false; + } } } From 5d3b7a3df8afc3b83cf4b2f99335df886583bcc3 Mon Sep 17 00:00:00 2001 From: iiAhmedYT <61851106+iiAhmedYT@users.noreply.github.com> Date: Tue, 9 Jan 2024 03:14:17 +0200 Subject: [PATCH 2/4] put back the old check for the tests to run --- .../iridiumcolorapi/IridiumColorAPI.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java b/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java index 8e4a64d..6856f80 100644 --- a/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java +++ b/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java @@ -6,6 +6,7 @@ import com.iridium.iridiumcolorapi.patterns.RainbowPattern; import com.iridium.iridiumcolorapi.patterns.SolidPattern; import net.md_5.bungee.api.ChatColor; +import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; import javax.annotation.Nonnull; @@ -285,8 +286,24 @@ private static int getVersion() { if (!classExists("org.bukkit.Bukkit") && classExists("net.md_5.bungee.api.ChatColor")) { return -1; } - String version = Bukkit.getServer().getClass().getPackage().getName().substring(24); - return Integer.parseInt(version.split("_")[1]); + + String version = Bukkit.getVersion(); + Validate.notEmpty(version, "Cannot get major Minecraft version from null or empty string"); + + // getVersion() + int index = version.lastIndexOf("MC:"); + if (index != -1) { + version = version.substring(index + 4, version.length() - 1); + } else if (version.endsWith("SNAPSHOT")) { + // getBukkitVersion() + index = version.indexOf('-'); + version = version.substring(0, index); + } + // 1.13.2, 1.14.4, etc... + int lastDot = version.lastIndexOf('.'); + if (version.indexOf('.') != lastDot) version = version.substring(0, lastDot); + + return Integer.parseInt(version.substring(2)); } /** From 69b453fbc3b66613dc316e4963e3ba8823cad548 Mon Sep 17 00:00:00 2001 From: iiAhmedYT <61851106+iiAhmedYT@users.noreply.github.com> Date: Tue, 9 Jan 2024 03:16:30 +0200 Subject: [PATCH 3/4] fix a potential bug one day? --- src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java b/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java index 6856f80..9633735 100644 --- a/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java +++ b/src/main/java/com/iridium/iridiumcolorapi/IridiumColorAPI.java @@ -175,7 +175,7 @@ private static String apply(@Nonnull String source, ChatColor[] colors) { } char nextChar = source.charAt(i + 1); - if ('r' == nextChar) { + if ('r' == nextChar || 'R' == nextChar) { specialColors.setLength(0); } else { specialColors.append(currentChar).append(nextChar); From a8a07f5a283ef0473332dfa30a923028d0cc4a81 Mon Sep 17 00:00:00 2001 From: iiAhmedYT <61851106+iiAhmedYT@users.noreply.github.com> Date: Tue, 9 Jan 2024 12:21:46 +0200 Subject: [PATCH 4/4] Fix compiling issues for me --- build.gradle.kts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index f58a706..4ef060d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -26,6 +26,10 @@ publishing { } } +tasks.withType().configureEach { + options.encoding = "UTF-8" +} + tasks { build { dependsOn(test)