diff --git a/src/main/java/net/knarcraft/knarlib/KnarLib.java b/src/main/java/net/knarcraft/knarlib/KnarLib.java index 9a6baf3..266b49f 100644 --- a/src/main/java/net/knarcraft/knarlib/KnarLib.java +++ b/src/main/java/net/knarcraft/knarlib/KnarLib.java @@ -4,6 +4,8 @@ import org.bukkit.plugin.java.JavaPlugin; /** * KnarLib's main class + * + *
Make sure you initialize KnarLib by running setPlugin() during onEnable! Some methods will not work without it.
*/ public final class KnarLib { diff --git a/src/main/java/net/knarcraft/knarlib/formatting/StringFormatter.java b/src/main/java/net/knarcraft/knarlib/formatting/StringFormatter.java index 4f36c06..ffb3bc4 100644 --- a/src/main/java/net/knarcraft/knarlib/formatting/StringFormatter.java +++ b/src/main/java/net/knarcraft/knarlib/formatting/StringFormatter.java @@ -20,11 +20,12 @@ public final class StringFormatter { /** * Displays a message signifying a successful action * - * @param senderThe command sender to display the message to
- * @param messageThe translatable message to display
+ * @param senderThe command sender to display the message to
+ * @param translatorThe translator to use for the translation
+ * @param messageThe translatable message to display
*/ - public static void displaySuccessMessage(CommandSender sender, TranslatableMessage message) { - sender.sendMessage(ChatColor.GREEN + getFormattedMessage(Translator.getTranslatedMessage(message))); + public static void displaySuccessMessage(CommandSender sender, Translator translator, TranslatableMessage message) { + sender.sendMessage(ChatColor.GREEN + getFormattedMessage(translator.getTranslatedMessage(message))); } /** @@ -40,18 +41,19 @@ public final class StringFormatter { /** * Displays a message signifying an unsuccessful action * - * @param senderThe command sender to display the message to
- * @param messageThe translatable message to display
+ * @param senderThe command sender to display the message to
+ * @param translatorThe translator to use for the translation
+ * @param messageThe translatable message to display
*/ - public static void displayErrorMessage(CommandSender sender, TranslatableMessage message) { - sender.sendMessage(ChatColor.DARK_RED + getFormattedMessage(Translator.getTranslatedMessage(message))); + public static void displayErrorMessage(CommandSender sender, Translator translator, TranslatableMessage message) { + sender.sendMessage(ChatColor.DARK_RED + getFormattedMessage(translator.getTranslatedMessage(message))); } /** * Displays a message signifying an unsuccessful action * * @param senderThe command sender to display the message to
- * @param messageThe translatable message to display
+ * @param messageThe raw message to display
*/ public static void displayErrorMessage(CommandSender sender, String message) { sender.sendMessage(ChatColor.DARK_RED + getFormattedMessage(message)); @@ -67,6 +69,34 @@ public final class StringFormatter { return "[" + pluginName + "] " + ChatColor.RESET + ColorHelper.translateColorCodes(message, ColorConversion.NORMAL); } + /** + * Replaces a placeholder in a string + * + * @param translatorThe translator to use for the translation
+ * @param translatableMessageThe translatable message to replace in
+ * @param placeholderThe placeholder to replace
+ * @param replacementThe replacement value
+ * @returnThe input string with the placeholder replaced
+ */ + public static String replacePlaceholder(Translator translator, TranslatableMessage translatableMessage, String placeholder, + String replacement) { + return replacePlaceholder(translator.getTranslatedMessage(translatableMessage), placeholder, replacement); + } + + /** + * Replaces placeholders in a string + * + * @param translatorThe translator to use for the translation
+ * @param translatableMessageThe translatable message to replace in
+ * @param placeholdersThe placeholders to replace
+ * @param replacementsThe replacement values
+ * @returnThe input string with placeholders replaced
+ */ + public static String replacePlaceholders(Translator translator, TranslatableMessage translatableMessage, String[] placeholders, + String[] replacements) { + return replacePlaceholders(translator.getTranslatedMessage(translatableMessage), placeholders, replacements); + } + /** * Replaces a placeholder in a string * diff --git a/src/main/java/net/knarcraft/knarlib/formatting/TimeFormatter.java b/src/main/java/net/knarcraft/knarlib/formatting/TimeFormatter.java index 7e91049..3ae530f 100644 --- a/src/main/java/net/knarcraft/knarlib/formatting/TimeFormatter.java +++ b/src/main/java/net/knarcraft/knarlib/formatting/TimeFormatter.java @@ -23,11 +23,13 @@ public final class TimeFormatter { /** * Gets the string used for displaying this sign's duration * + * @param translatorThe translator to use for translation
+ * @param durationThe duration, in seconds, to display
* @returnThe string used for displaying this sign's duration
*/ - public static String getDurationString(long duration) { + public static String getDurationString(Translator translator, long duration) { if (duration == 0) { - return Translator.getTranslatedMessage(TranslatableTimeUnit.UNIT_NOW); + return translator.getTranslatedMessage(TranslatableTimeUnit.UNIT_NOW); } else { if (sortedUnits == null) { initializeUnits(); @@ -35,11 +37,11 @@ public final class TimeFormatter { for (double unit : sortedUnits) { if (duration / unit >= 1) { double units = round(duration / unit); - return formatDurationString(units, timeUnits.get(unit)[units == 1 ? 0 : 1], + return formatDurationString(units, translator, timeUnits.get(unit)[units == 1 ? 0 : 1], (units * 10) % 10 == 0); } } - return formatDurationString(duration, TranslatableTimeUnit.UNIT_SECONDS, false); + return formatDurationString(duration, translator, TranslatableTimeUnit.UNIT_SECONDS, false); } } @@ -57,14 +59,16 @@ public final class TimeFormatter { * Formats a duration string * * @param durationThe duration to display
+ * @param translatorThe translator to use for translation
* @param translatableMessageThe time unit to display
* @param castToIntWhether to cast the duration to an int
* @returnThe formatted duration string
*/ - private static String formatDurationString(double duration, TranslatableTimeUnit translatableMessage, boolean castToInt) { - String durationFormat = Translator.getTranslatedMessage(TranslatableTimeUnit.DURATION_FORMAT); + private static String formatDurationString(double duration, Translator translator, + TranslatableTimeUnit translatableMessage, boolean castToInt) { + String durationFormat = translator.getTranslatedMessage(TranslatableTimeUnit.DURATION_FORMAT); durationFormat = replacePlaceholder(durationFormat, "{unit}", - Translator.getTranslatedMessage(translatableMessage)); + translator.getTranslatedMessage(translatableMessage)); return replacePlaceholder(durationFormat, "{time}", castToInt ? String.valueOf((int) duration) : String.valueOf(duration)); } diff --git a/src/main/java/net/knarcraft/knarlib/formatting/Translator.java b/src/main/java/net/knarcraft/knarlib/formatting/Translator.java index 9015e91..28f1d6a 100644 --- a/src/main/java/net/knarcraft/knarlib/formatting/Translator.java +++ b/src/main/java/net/knarcraft/knarlib/formatting/Translator.java @@ -28,13 +28,9 @@ import java.util.logging.Level; */ public final class Translator { - private static final ListA translatable message in the category to register
*/ - public static void registerMessageCategory(TranslatableMessage translatableMessage) { + public void registerMessageCategory(TranslatableMessage translatableMessage) { messageCategories.add(translatableMessage); } /** * Loads the languages used by this translator + * + * @param selectedLanguageThe currently selected language
*/ - public static void loadLanguages(String selectedLanguage) { + public void loadLanguages(String selectedLanguage) { backupTranslatedMessages = loadTranslatedMessages("en"); translatedMessages = loadCustomTranslatedMessages(selectedLanguage); if (translatedMessages == null) { @@ -65,7 +63,7 @@ public final class Translator { * @param translatableMessageThe message to translate
* @returnThe translated message
*/ - public static String getTranslatedMessage(TranslatableMessage translatableMessage) { + public String getTranslatedMessage(TranslatableMessage translatableMessage) { if (translatedMessages == null) { return "Translated strings not loaded"; } @@ -86,7 +84,7 @@ public final class Translator { * @param languageThe language chosen by the user
* @returnA mapping of all strings for the given language
*/ - public static MapThe selected language
* @returnThe loaded translated strings, or null if no custom language file exists
*/ - public static MapThe buffered reader to read from
* @returnThe loaded translated strings
*/ - private static MapIf set to true, f35336 will be treated as a color code, but #f35336 won't. By default, this is set to false, + *
If set to true, &#f35336 will be treated as a color code, but #f35336 won't. By default, this is set to false, * meaning that both are treated as color codes.
* * @param requireAmpersandInHexColorsTrue if hex colors should require an ampersand
diff --git a/src/main/java/net/knarcraft/knarlib/util/FileHelper.java b/src/main/java/net/knarcraft/knarlib/util/FileHelper.java index aabf3c7..3b1c41f 100644 --- a/src/main/java/net/knarcraft/knarlib/util/FileHelper.java +++ b/src/main/java/net/knarcraft/knarlib/util/FileHelper.java @@ -25,8 +25,10 @@ public final class FileHelper { } /** - * Gets a buffered reader for + * Gets a buffered reader for an internal file * + * @param fileThe name of the file to get a buffered reader for (start with a '/'). The file should reside in + * the resources directory.
* @returnA buffered read for reading the file
* @throws FileNotFoundExceptionIf unable to get an input stream for the given file
*/