1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 03:35:51 +00:00

[CI skip] Refactoring

This commit is contained in:
TheBusyBiscuit 2020-06-24 20:50:53 +02:00
parent 58ccc4b87a
commit 2424a2ceab
3 changed files with 57 additions and 34 deletions

View File

@ -54,7 +54,7 @@ public class LocalizationService extends SlimefunLocalization implements Persist
translationsEnabled = SlimefunPlugin.getCfg().getBoolean("options.enable-translations");
defaultLanguage = new Language(serverDefaultLanguage, "11b3188fd44902f72602bd7c2141f5a70673a411adb3d81862c69e536166b");
defaultLanguage.setMessages(getConfig().getConfiguration());
defaultLanguage.setMessagesFile(getConfig().getConfiguration());
loadEmbeddedLanguages();
@ -147,10 +147,10 @@ public class LocalizationService extends SlimefunLocalization implements Persist
getConfig().clear();
}
defaultLanguage.setResearches(streamConfigFile("researches_" + language + ".yml", null));
defaultLanguage.setResources(streamConfigFile("resources_" + language + ".yml", null));
defaultLanguage.setCategories(streamConfigFile("categories_" + language + ".yml", null));
defaultLanguage.setRecipeTypes(streamConfigFile("recipes_" + language + ".yml", null));
defaultLanguage.setResearchesFile(streamConfigFile("researches_" + language + ".yml", null));
defaultLanguage.setResourcesFile(streamConfigFile("resources_" + language + ".yml", null));
defaultLanguage.setCategoriesFile(streamConfigFile("categories_" + language + ".yml", null));
defaultLanguage.setRecipeTypesFile(streamConfigFile("recipes_" + language + ".yml", null));
Slimefun.getLogger().log(Level.INFO, "Loaded language \"{0}\"", language);
getConfig().setValue(LANGUAGE_PATH, language);
@ -179,11 +179,11 @@ public class LocalizationService extends SlimefunLocalization implements Persist
FileConfiguration recipes = streamConfigFile("recipes_" + id + ".yml", null);
Language language = new Language(id, hash);
language.setMessages(messages);
language.setResearches(researches);
language.setResources(resources);
language.setCategories(categories);
language.setRecipeTypes(recipes);
language.setMessagesFile(messages);
language.setResearchesFile(researches);
language.setResourcesFile(resources);
language.setCategoriesFile(categories);
language.setRecipeTypesFile(recipes);
languages.put(id, language);
}
@ -201,13 +201,16 @@ public class LocalizationService extends SlimefunLocalization implements Persist
*/
public double getProgress(Language lang) {
int defaultKeys = getTotalKeys(languages.get("en"));
if (defaultKeys == 0) return 0;
if (defaultKeys == 0) {
return 0;
}
return Math.min(DoubleHandler.fixDouble(100.0 * (getTotalKeys(lang) / (double) defaultKeys)), 100.0);
}
private int getTotalKeys(Language lang) {
return getKeys(lang.getMessages(), lang.getResearches(), lang.getResources(), lang.getCategories(), lang.getRecipeTypes());
return getKeys(lang.getFiles());
}
private int getKeys(FileConfiguration... files) {

View File

@ -60,43 +60,53 @@ public final class Language {
return id;
}
public FileConfiguration getMessages() {
FileConfiguration getMessagesFile() {
return messages;
}
public FileConfiguration getResearches() {
FileConfiguration getResearchesFile() {
return researches;
}
public FileConfiguration getResources() {
FileConfiguration getResourcesFile() {
return resources;
}
public FileConfiguration getCategories() {
FileConfiguration getCategoriesFile() {
return categories;
}
public FileConfiguration getRecipeTypes() {
FileConfiguration getRecipeTypesFile() {
return recipeTypes;
}
public void setMessages(FileConfiguration config) {
public void setMessagesFile(FileConfiguration config) {
Validate.notNull(config);
this.messages = config;
}
public void setResearches(FileConfiguration config) {
public void setResearchesFile(FileConfiguration config) {
Validate.notNull(config);
this.researches = config;
}
public void setResources(FileConfiguration config) {
public void setResourcesFile(FileConfiguration config) {
Validate.notNull(config);
this.resources = config;
}
public void setCategories(FileConfiguration config) {
public void setCategoriesFile(FileConfiguration config) {
Validate.notNull(config);
this.categories = config;
}
public void setRecipeTypes(FileConfiguration config) {
public void setRecipeTypesFile(FileConfiguration config) {
Validate.notNull(config);
this.recipeTypes = config;
}
@ -119,7 +129,8 @@ public final class Language {
* @return The localized name of this {@link Language}
*/
public String getName(Player p) {
return SlimefunPlugin.getLocal().getMessage(p, "languages." + id);
String name = SlimefunPlugin.getLocal().getMessage(p, "languages." + id);
return name != null ? name : toString();
}
/**
@ -132,4 +143,13 @@ public final class Language {
return this == SlimefunPlugin.getLocal().getDefaultLanguage();
}
@Override
public String toString() {
return "Language [ id= " + id + " | default=" + isDefault() + " ]";
}
public FileConfiguration[] getFiles() {
return new FileConfiguration[] { getMessagesFile(), getCategoriesFile(), getResearchesFile(), getResourcesFile() };
}
}

View File

@ -88,37 +88,37 @@ 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.getMessages().getString(key);
return language.getMessagesFile().getString(key);
}
public List<String> getMessages(Player p, String key) {
Language language = getLanguage(p);
if (language == null) return Arrays.asList("NO LANGUAGE FOUND");
return language.getMessages().getStringList(key);
return language.getMessagesFile().getStringList(key);
}
public String getResearchName(Player p, NamespacedKey key) {
Language language = getLanguage(p);
if (language.getResearches() == null) return null;
return language.getResearches().getString(key.getNamespace() + "." + key.getKey());
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.getCategories() == null) return null;
return language.getCategories().getString(key.getNamespace() + "." + key.getKey());
if (language.getCategoriesFile() == null) return null;
return language.getCategoriesFile().getString(key.getNamespace() + "." + key.getKey());
}
public String getResourceString(Player p, String key) {
Language language = getLanguage(p);
String value = language.getResources() != null ? language.getResources().getString(key) : null;
String value = language.getResourcesFile() != null ? language.getResourcesFile().getString(key) : null;
if (value != null) {
return value;
}
else {
return getLanguage("en").getResources().getString(key);
return getLanguage("en").getResourcesFile().getString(key);
}
}
@ -127,15 +127,15 @@ public abstract class SlimefunLocalization extends Localization implements Keyed
ItemStack item = recipeType.toItem();
NamespacedKey key = recipeType.getKey();
if (language.getRecipeTypes() == null || !language.getRecipeTypes().contains(key.getNamespace() + "." + key.getKey())) {
if (language.getRecipeTypesFile() == null || !language.getRecipeTypesFile().contains(key.getNamespace() + "." + key.getKey())) {
language = getLanguage("en");
}
if (!language.getRecipeTypes().contains(key.getNamespace() + "." + key.getKey())) {
if (!language.getRecipeTypesFile().contains(key.getNamespace() + "." + key.getKey())) {
return item;
}
FileConfiguration config = language.getRecipeTypes();
FileConfiguration config = language.getRecipeTypesFile();
return new CustomItem(item, meta -> {
meta.setDisplayName(ChatColor.AQUA + config.getString(key.getNamespace() + "." + key.getKey() + ".name"));