diff --git a/CHANGELOG.md b/CHANGELOG.md index 05361f18d..219e1a587 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,6 +55,7 @@ * Fixed #2097 * Fixed Wither Assembler requiring more items than it actually consumes * Fixed Metrics not updating automatically +* Fixed #2143 ## Release Candidate 14 (12 Jul 2020) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java index 42dfbbd6c..9c0a7683a 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java @@ -52,14 +52,17 @@ public class LocalizationService extends SlimefunLocalization implements Persist if (serverDefaultLanguage != null) { translationsEnabled = SlimefunPlugin.getCfg().getBoolean("options.enable-translations"); - + defaultLanguage = new Language(serverDefaultLanguage, "11b3188fd44902f72602bd7c2141f5a70673a411adb3d81862c69e536166b"); defaultLanguage.setMessagesFile(getConfig().getConfiguration()); loadEmbeddedLanguages(); String language = getConfig().getString(LANGUAGE_PATH); - if (language == null) language = serverDefaultLanguage; + + if (language == null) { + language = serverDefaultLanguage; + } if (hasLanguage(serverDefaultLanguage)) { setLanguage(serverDefaultLanguage, !serverDefaultLanguage.equals(language)); @@ -201,7 +204,7 @@ public class LocalizationService extends SlimefunLocalization implements Persist */ public double getProgress(Language lang) { int defaultKeys = getTotalKeys(languages.get("en")); - + if (defaultKeys == 0) { return 0; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/MetricsService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/MetricsService.java index a4c306fa7..6b995f0d9 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/MetricsService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/MetricsService.java @@ -144,7 +144,6 @@ public class MetricsService { int latest = getLatestVersion(); if (latest > Integer.parseInt(currentVersion)) { - cleanUp(); return download(latest); } @@ -209,6 +208,7 @@ public class MetricsService { plugin.getLogger().log(Level.INFO, "Successfully downloaded {0} build: #{1}", new Object[] { REPO_NAME, version }); // Replace the metric file with the new one + cleanUp(); Files.move(f.toPath(), metricsModuleFile.toPath(), StandardCopyOption.REPLACE_EXISTING); metricVersion = String.valueOf(version); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SlimefunLocalization.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SlimefunLocalization.java index e287a2de0..85e9a202e 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SlimefunLocalization.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SlimefunLocalization.java @@ -87,25 +87,55 @@ public abstract class SlimefunLocalization extends Localization implements Keyed public String getMessage(Player p, String key) { Language language = getLanguage(p); - if (language == null) return "NO LANGUAGE FOUND"; - return language.getMessagesFile().getString(key); + + if (language == null) { + return "NO LANGUAGE FOUND"; + } + + String message = language.getMessagesFile().getString(key); + + if (message == null) { + Language fallback = getLanguage(SupportedLanguage.ENGLISH.getLanguageId()); + return fallback.getMessagesFile().getString(key); + } + + return message; } public List getMessages(Player p, String key) { Language language = getLanguage(p); - if (language == null) return Arrays.asList("NO LANGUAGE FOUND"); - return language.getMessagesFile().getStringList(key); + + if (language == null) { + return Arrays.asList("NO LANGUAGE FOUND"); + } + + List messages = language.getMessagesFile().getStringList(key); + + if (messages.isEmpty()) { + Language fallback = getLanguage(SupportedLanguage.ENGLISH.getLanguageId()); + return fallback.getMessagesFile().getStringList(key); + } + + return messages; } public String getResearchName(Player p, NamespacedKey key) { Language language = getLanguage(p); - if (language.getResearchesFile() == null) return null; + + if (language.getResearchesFile() == null) { + return null; + } + return language.getResearchesFile().getString(key.getNamespace() + "." + key.getKey()); } public String getCategoryName(Player p, NamespacedKey key) { Language language = getLanguage(p); - if (language.getCategoriesFile() == null) return null; + + if (language.getCategoriesFile() == null) { + return null; + } + return language.getCategoriesFile().getString(key.getNamespace() + "." + key.getKey()); } @@ -118,7 +148,8 @@ public abstract class SlimefunLocalization extends Localization implements Keyed return value; } else { - return getLanguage("en").getResourcesFile().getString(key); + Language fallback = getLanguage(SupportedLanguage.ENGLISH.getLanguageId()); + return fallback.getResourcesFile().getString(key); } }