From f10e2caed29cb0516fa2ed5cd390326985bfd2d8 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Mon, 7 Nov 2022 10:30:07 +0100 Subject: [PATCH] Minor fixes and improvements Uses translateColors from ColorHelper in StringFormatter Uses a primitive double where the Double class was used Adds improved description to the translator class Adds a stripColorCodes class to the ColorHelper Uses color conversion from ColorHelper in readKeyValuePairs --- .../knarlib/formatting/StringFormatter.java | 14 +++----------- .../knarlib/formatting/TimeFormatter.java | 2 +- .../knarcraft/knarlib/formatting/Translator.java | 5 +++++ .../net/knarcraft/knarlib/util/ColorHelper.java | 11 +++++++++++ .../net/knarcraft/knarlib/util/FileHelper.java | 11 +++++++---- 5 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/main/java/net/knarcraft/knarlib/formatting/StringFormatter.java b/src/main/java/net/knarcraft/knarlib/formatting/StringFormatter.java index 692915d..4f36c06 100644 --- a/src/main/java/net/knarcraft/knarlib/formatting/StringFormatter.java +++ b/src/main/java/net/knarcraft/knarlib/formatting/StringFormatter.java @@ -1,6 +1,8 @@ package net.knarcraft.knarlib.formatting; import net.knarcraft.knarlib.KnarLib; +import net.knarcraft.knarlib.property.ColorConversion; +import net.knarcraft.knarlib.util.ColorHelper; import net.md_5.bungee.api.ChatColor; import org.bukkit.command.CommandSender; @@ -62,17 +64,7 @@ public final class StringFormatter { * @return

The formatted message

*/ private static String getFormattedMessage(String message) { - return "[" + pluginName + "] " + ChatColor.RESET + translateColors(message); - } - - /** - * Translates & color codes to proper colors - * - * @param input

The input string to translate colors for

- * @return

The input with color codes translated

- */ - private static String translateColors(String input) { - return ChatColor.translateAlternateColorCodes('&', input); + return "[" + pluginName + "] " + ChatColor.RESET + ColorHelper.translateColorCodes(message, ColorConversion.NORMAL); } /** diff --git a/src/main/java/net/knarcraft/knarlib/formatting/TimeFormatter.java b/src/main/java/net/knarcraft/knarlib/formatting/TimeFormatter.java index 7414f61..7e91049 100644 --- a/src/main/java/net/knarcraft/knarlib/formatting/TimeFormatter.java +++ b/src/main/java/net/knarcraft/knarlib/formatting/TimeFormatter.java @@ -32,7 +32,7 @@ public final class TimeFormatter { if (sortedUnits == null) { initializeUnits(); } - for (Double unit : sortedUnits) { + for (double unit : sortedUnits) { if (duration / unit >= 1) { double units = round(duration / unit); return formatDurationString(units, timeUnits.get(unit)[units == 1 ? 0 : 1], diff --git a/src/main/java/net/knarcraft/knarlib/formatting/Translator.java b/src/main/java/net/knarcraft/knarlib/formatting/Translator.java index 76a4c6f..9015e91 100644 --- a/src/main/java/net/knarcraft/knarlib/formatting/Translator.java +++ b/src/main/java/net/knarcraft/knarlib/formatting/Translator.java @@ -20,6 +20,11 @@ import java.util.logging.Level; /** * A tool to get strings translated to the correct language + * + *

To add translatable messages, create a class extending TranslatableMessage, and register it by calling + * "registerMessageCategory" on one of its values. + * Add a file strings.yml in your resources directory with data: `en.ENUM: "Text"`. You must have a `en` language as + * it's used as the fallback, but you can additionally add any language code you want.

*/ public final class Translator { diff --git a/src/main/java/net/knarcraft/knarlib/util/ColorHelper.java b/src/main/java/net/knarcraft/knarlib/util/ColorHelper.java index edcc401..b1b747a 100644 --- a/src/main/java/net/knarcraft/knarlib/util/ColorHelper.java +++ b/src/main/java/net/knarcraft/knarlib/util/ColorHelper.java @@ -50,6 +50,17 @@ public final class ColorHelper { ColorHelper.requireAmpersandInHexColors = requireAmpersandInHexColors; } + /** + * Strips all color codes from the given message + * + * @param message

The message to strip color codes from

+ * @param colorConversion

The type of color conversion to apply before stripping

+ * @return

The message without color codes

+ */ + public static String stripColorCodes(String message, ColorConversion colorConversion) { + return ChatColor.stripColor(translateColorCodes(message, colorConversion)); + } + /** * Translates color codes according to the given color conversion setting * diff --git a/src/main/java/net/knarcraft/knarlib/util/FileHelper.java b/src/main/java/net/knarcraft/knarlib/util/FileHelper.java index fa6ed59..aabf3c7 100644 --- a/src/main/java/net/knarcraft/knarlib/util/FileHelper.java +++ b/src/main/java/net/knarcraft/knarlib/util/FileHelper.java @@ -1,6 +1,6 @@ package net.knarcraft.knarlib.util; -import net.md_5.bungee.api.ChatColor; +import net.knarcraft.knarlib.property.ColorConversion; import java.io.BufferedReader; import java.io.BufferedWriter; @@ -90,11 +90,14 @@ public final class FileHelper { /** * Reads key/value pairs from an input stream * - * @param bufferedReader

The buffered reader to read

+ * @param bufferedReader

The buffered reader to read

+ * @param separator

The separator separating a key from a value

+ * @param colorConversion

The color conversion to use for any color codes encountered

* @return

A map containing the read pairs

* @throws IOException

If unable to read from the stream

*/ - public static Map readKeyValuePairs(BufferedReader bufferedReader, String separator, boolean translateColorCodes) throws IOException { + public static Map readKeyValuePairs(BufferedReader bufferedReader, String separator, + ColorConversion colorConversion) throws IOException { Map readPairs = new HashMap<>(); String line = bufferedReader.readLine(); @@ -114,7 +117,7 @@ public final class FileHelper { //Read the line String key = line.substring(0, separatorIndex); - String value = ChatColor.translateAlternateColorCodes('&', line.substring(separatorIndex + 1)); + String value = ColorHelper.translateColorCodes(line.substring(separatorIndex + 1), colorConversion); readPairs.put(key, value); line = bufferedReader.readLine();