mirror of
https://github.com/BentoBoxWorld/BentoBox.git
synced 2024-10-27 13:59:38 +01:00
Added a better exception handling when loading locales
This commit is contained in:
parent
5fc4967e1b
commit
96c68957c5
@ -6,6 +6,7 @@ import java.util.Locale;
|
|||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import us.tastybento.bskyblock.BSkyBlock;
|
||||||
import us.tastybento.bskyblock.util.ItemParser;
|
import us.tastybento.bskyblock.util.ItemParser;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -17,9 +18,9 @@ public class BSBLocale {
|
|||||||
private YamlConfiguration config;
|
private YamlConfiguration config;
|
||||||
private ItemStack banner;
|
private ItemStack banner;
|
||||||
|
|
||||||
public BSBLocale(Locale locale, File file) {
|
public BSBLocale(Locale locale, YamlConfiguration config) {
|
||||||
this.locale = locale;
|
this.locale = locale;
|
||||||
config = YamlConfiguration.loadConfiguration(file);
|
this.config = config;
|
||||||
|
|
||||||
// Load the banner from the configuration
|
// Load the banner from the configuration
|
||||||
banner = ItemParser.parse(config.getString("banner"));
|
banner = ItemParser.parse(config.getString("banner"));
|
||||||
@ -79,10 +80,9 @@ public class BSBLocale {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Merges a language YAML file to this locale
|
* Merges a language YAML file to this locale
|
||||||
* @param language - language file
|
* @param toBeMerged the YamlConfiguration of the language file
|
||||||
*/
|
*/
|
||||||
public void merge(File language) {
|
public void merge(YamlConfiguration toBeMerged) {
|
||||||
YamlConfiguration toBeMerged = YamlConfiguration.loadConfiguration(language);
|
|
||||||
for (String key : toBeMerged.getKeys(true)) {
|
for (String key : toBeMerged.getKeys(true)) {
|
||||||
if (!config.contains(key)) {
|
if (!config.contains(key)) {
|
||||||
config.set(key, toBeMerged.get(key));
|
config.set(key, toBeMerged.get(key));
|
||||||
@ -93,5 +93,4 @@ public class BSBLocale {
|
|||||||
public boolean contains(String reference) {
|
public boolean contains(String reference) {
|
||||||
return config.contains(reference);
|
return config.contains(reference);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import java.util.Locale;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import us.tastybento.bskyblock.BSkyBlock;
|
import us.tastybento.bskyblock.BSkyBlock;
|
||||||
import us.tastybento.bskyblock.api.localization.BSBLocale;
|
import us.tastybento.bskyblock.api.localization.BSBLocale;
|
||||||
import us.tastybento.bskyblock.api.user.User;
|
import us.tastybento.bskyblock.api.user.User;
|
||||||
@ -85,12 +86,22 @@ public class LocalesManager {
|
|||||||
// Store all the locales available
|
// Store all the locales available
|
||||||
for (File language : Objects.requireNonNull(localeDir.listFiles(ymlFilter))) {
|
for (File language : Objects.requireNonNull(localeDir.listFiles(ymlFilter))) {
|
||||||
Locale localeObject = Locale.forLanguageTag(language.getName().substring(0, language.getName().length() - 4));
|
Locale localeObject = Locale.forLanguageTag(language.getName().substring(0, language.getName().length() - 4));
|
||||||
if (languages.containsKey(localeObject)) {
|
|
||||||
// Merge into current language
|
try {
|
||||||
languages.get(localeObject).merge(language);
|
YamlConfiguration languageYaml = YamlConfiguration.loadConfiguration(language);
|
||||||
} else {
|
|
||||||
// New language
|
if (languages.containsKey(localeObject)) {
|
||||||
languages.put(localeObject, new BSBLocale(localeObject, language));
|
// Merge into current language
|
||||||
|
languages.get(localeObject).merge(languageYaml);
|
||||||
|
} else {
|
||||||
|
// New language
|
||||||
|
languages.put(localeObject, new BSBLocale(localeObject, languageYaml));
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
BSkyBlock.getInstance().logError("Could not load '" + language.getName() + "' : " + e.getMessage()
|
||||||
|
+ " with the following cause '" + e.getCause() + "'." +
|
||||||
|
" The file has likely an invalid YML format or has been made unreadable during the process."
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user