diff --git a/src/main/java/us/tastybento/bskyblock/managers/LocalesManager.java b/src/main/java/us/tastybento/bskyblock/managers/LocalesManager.java index 2c05fc520..23b49faf5 100644 --- a/src/main/java/us/tastybento/bskyblock/managers/LocalesManager.java +++ b/src/main/java/us/tastybento/bskyblock/managers/LocalesManager.java @@ -4,11 +4,7 @@ import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import us.tastybento.bskyblock.BSkyBlock; import us.tastybento.bskyblock.api.localization.BSBLocale; @@ -21,7 +17,7 @@ import us.tastybento.bskyblock.util.FileLister; public class LocalesManager { private BSkyBlock plugin; - private HashMap languages = new HashMap<>(); + private Map languages = new HashMap<>(); private static final String LOCALE_FOLDER = "locales"; public LocalesManager(BSkyBlock plugin) { @@ -60,7 +56,6 @@ public class LocalesManager { // Files must be 9 chars long FilenameFilter ymlFilter = (dir, name) -> name.toLowerCase().endsWith(".yml") && name.length() == 9; - // Run through the files and store the locales File localeDir = new File(plugin.getDataFolder(), LOCALE_FOLDER + File.separator + parent); // If the folder does not exist, then make it and fill with the locale files from the jar @@ -79,7 +74,6 @@ public class LocalesManager { } catch (IOException e) { plugin.logError("Could not copy locale files from jar " + e.getMessage()); } - } // Store all the locales available @@ -105,8 +99,21 @@ public class LocalesManager { } } - public Set getAvailableLocales() { - return languages.keySet(); + public List getAvailableLocales(boolean sort) { + if (sort) { + List locales = new LinkedList<>(languages.keySet()); + + locales.sort((locale1, locale2) -> { + if (locale1.toLanguageTag().equals(plugin.getSettings().getDefaultLanguage())) return -2; + else if (locale1.toLanguageTag().startsWith("en")) return -1; + else if (locale1.toLanguageTag().equals(locale2.toLanguageTag())) return 0; + else return 1; + }); + + return locales; + } else { + return new ArrayList<>(languages.keySet()); + } } public Map getLanguages() { diff --git a/src/main/java/us/tastybento/bskyblock/panels/LanguagePanel.java b/src/main/java/us/tastybento/bskyblock/panels/LanguagePanel.java index 79d958361..1bab87395 100644 --- a/src/main/java/us/tastybento/bskyblock/panels/LanguagePanel.java +++ b/src/main/java/us/tastybento/bskyblock/panels/LanguagePanel.java @@ -1,6 +1,8 @@ package us.tastybento.bskyblock.panels; import java.util.Locale; +import java.util.Set; +import java.util.SortedSet; import us.tastybento.bskyblock.BSkyBlock; import us.tastybento.bskyblock.api.panels.builders.PanelBuilder; @@ -22,7 +24,7 @@ public class LanguagePanel { PanelBuilder panelBuilder = new PanelBuilder() .name(user.getTranslation("language.panel-title")); - for (Locale locale : BSkyBlock.getInstance().getLocalesManager().getAvailableLocales()) { + for (Locale locale : BSkyBlock.getInstance().getLocalesManager().getAvailableLocales(true)) { PanelItemBuilder localeIcon = new PanelItemBuilder().icon(BSkyBlock.getInstance().getLocalesManager().getLanguages().get(locale).getBanner()) .name(fancyLocaleDisplayName(user, locale)) .clickHandler((panel, u, click, slot) -> {