diff --git a/nicko-core/dependency-reduced-pom.xml b/nicko-core/dependency-reduced-pom.xml
index d5378cc..817f08a 100644
--- a/nicko-core/dependency-reduced-pom.xml
+++ b/nicko-core/dependency-reduced-pom.xml
@@ -34,16 +34,21 @@
net.wesjd:anvilgui
de.studiocode.invui:*
+ com.github.jsixface:*
net.wesjd.anvilgui
- net.artelnatif.anvilgui
+ net.artelnatif.libs.anvilgui
de.studiocode.invui
- net.artelnatif.invui
+ net.artelnatif.libs.invui
+
+
+ com.github.jsixface
+ net.artelnatif.libs.yaml
false
diff --git a/nicko-core/pom.xml b/nicko-core/pom.xml
index 53ac089..5863a5c 100644
--- a/nicko-core/pom.xml
+++ b/nicko-core/pom.xml
@@ -105,7 +105,12 @@
mariadb-java-client
3.1.0
-
+
+
+ com.github.jsixface
+ yamlconfig
+ 1.1.1
+
@@ -130,16 +135,21 @@
net.wesjd:anvilgui
de.studiocode.invui:*
+ com.github.jsixface:*
net.wesjd.anvilgui
- net.artelnatif.anvilgui
+ net.artelnatif.libs.anvilgui
de.studiocode.invui
- net.artelnatif.invui
+ net.artelnatif.libs.invui
+
+
+ com.github.jsixface
+ net.artelnatif.libs.yaml
diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java b/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java
index 8da0185..d2abf9f 100644
--- a/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java
+++ b/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java
@@ -107,9 +107,7 @@ public class NickoBukkit extends JavaPlugin {
localeFileManager = new LocaleFileManager();
if (config.isCustomLocale()) {
if (localeFileManager.dumpFromLocale(Locale.ENGLISH)) {
- if (localeFileManager.loadValues()) {
- getLogger().info("Successfully loaded custom language file.");
- }
+ getLogger().info("Successfully loaded custom language file.");
} else {
getLogger().warning("Failed to load custom language file!");
}
diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/anvil/AnvilManager.java b/nicko-core/src/main/java/net/artelnatif/nicko/anvil/AnvilManager.java
index 2e1897f..fd1b5ce 100644
--- a/nicko-core/src/main/java/net/artelnatif/nicko/anvil/AnvilManager.java
+++ b/nicko-core/src/main/java/net/artelnatif/nicko/anvil/AnvilManager.java
@@ -60,9 +60,9 @@ public class AnvilManager {
appearanceManager.setName(response);
final ActionResult actionResult = appearanceManager.updatePlayer(false);
if (!actionResult.isError()) {
- player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_SUCCESS));
+ player.sendMessage(I18N.translate(player, I18NDict.Event.Disguise.SUCCESS));
} else {
- player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_FAIL, I18N.translateWithoutPrefix(player, actionResult.getErrorMessage())));
+ player.sendMessage(I18N.translate(player, I18NDict.Event.Disguise.FAIL, I18N.translateWithoutPrefix(player, actionResult.getErrorMessage())));
}
return AnvilGUI.Response.close();
}
@@ -81,9 +81,9 @@ public class AnvilManager {
appearanceManager.setSkin(response);
final ActionResult actionResult = appearanceManager.updatePlayer(true);
if (!actionResult.isError()) {
- player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_SUCCESS));
+ player.sendMessage(I18N.translate(player, I18NDict.Event.Disguise.SUCCESS));
} else {
- player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_FAIL, I18N.translateWithoutPrefix(player, actionResult.getErrorMessage())));
+ player.sendMessage(I18N.translate(player, I18NDict.Event.Disguise.FAIL, I18N.translateWithoutPrefix(player, actionResult.getErrorMessage())));
}
return AnvilGUI.Response.close();
}
diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/event/PlayerJoinListener.java b/nicko-core/src/main/java/net/artelnatif/nicko/event/PlayerJoinListener.java
index b431e10..d11c7f7 100644
--- a/nicko-core/src/main/java/net/artelnatif/nicko/event/PlayerJoinListener.java
+++ b/nicko-core/src/main/java/net/artelnatif/nicko/event/PlayerJoinListener.java
@@ -24,9 +24,9 @@ public class PlayerJoinListener implements Listener {
if (appearanceManager.hasData()) {
final ActionResult actionResult = appearanceManager.updatePlayer(appearanceManager.needsASkinChange());
if (!actionResult.isError()) {
- player.sendMessage(I18N.translate(player, I18NDict.Event.PREVIOUS_SKIN_APPLIED));
+ player.sendMessage(I18N.translate(player, I18NDict.Event.PreviousSkin.SUCCESS));
} else {
- player.sendMessage(I18N.translate(player, I18NDict.Event.PREVIOUS_SKIN_APPLY_FAIL, I18N.translate(player, actionResult.getErrorMessage())));
+ player.sendMessage(I18N.translate(player, I18NDict.Event.PreviousSkin.FAIL, I18N.translate(player, actionResult.getErrorMessage())));
}
}
}, 20L);
diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/AdminPanelGUI.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/AdminPanelGUI.java
index d7586ab..9526943 100644
--- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/AdminPanelGUI.java
+++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/AdminPanelGUI.java
@@ -5,7 +5,6 @@ import de.studiocode.invui.gui.builder.GUIBuilder;
import de.studiocode.invui.gui.builder.guitype.GUIType;
import de.studiocode.invui.gui.structure.Structure;
import de.studiocode.invui.window.impl.single.SimpleWindow;
-import net.artelnatif.nicko.gui.items.admin.ReloadLanguageFileItem;
import net.artelnatif.nicko.gui.items.common.BackItem;
import org.bukkit.entity.Player;
@@ -15,12 +14,11 @@ public class AdminPanelGUI {
public AdminPanelGUI(Player player) {
final Structure structure = new Structure("# # # # # # # # #",
- "# % % P U L % % #",
+ "# % % P U # % % #",
"B # # # # # # # #");
structure.addIngredient('B', new BackItem(new MainGUI(player).getGUI()));
this.gui = new GUIBuilder<>(GUIType.NORMAL)
.setStructure(structure)
- .addIngredient('L', new ReloadLanguageFileItem())
.build();
this.player = player;
}
diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/ReloadLanguageFileItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/ReloadLanguageFileItem.java
deleted file mode 100644
index 5df1f9c..0000000
--- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/ReloadLanguageFileItem.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package net.artelnatif.nicko.gui.items.admin;
-
-import de.studiocode.invui.item.ItemProvider;
-import de.studiocode.invui.item.builder.ItemBuilder;
-import de.studiocode.invui.item.impl.BaseItem;
-import net.artelnatif.nicko.NickoBukkit;
-import net.artelnatif.nicko.i18n.I18N;
-import net.artelnatif.nicko.i18n.I18NDict;
-import org.bukkit.Material;
-import org.bukkit.enchantments.Enchantment;
-import org.bukkit.entity.Player;
-import org.bukkit.event.inventory.ClickType;
-import org.bukkit.event.inventory.InventoryClickEvent;
-import org.bukkit.inventory.ItemFlag;
-import org.jetbrains.annotations.NotNull;
-
-public class ReloadLanguageFileItem extends BaseItem {
- @Override
- public ItemProvider getItemProvider() {
- return new ItemBuilder(Material.BOOK)
- .addEnchantment(Enchantment.DAMAGE_ALL, 1, false)
- .addItemFlags(ItemFlag.HIDE_ENCHANTS)
- .setDisplayName("§fReload Language File");
- }
-
- @Override
- public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) {
- if (clickType.isLeftClick() || clickType.isRightClick()) {
- event.getView().close();
- final boolean success = NickoBukkit.getInstance().getLocaleFileManager().loadValues();
- if (success) {
- player.sendMessage(I18N.translate(player, I18NDict.Plugin.CUSTOM_LANGUAGE_RELOAD_SUCCESS));
- } else {
- player.sendMessage(I18N.translate(player, I18NDict.Plugin.CUSTOM_LANGUAGE_RELOAD_FAIL));
- }
- }
- }
-}
\ No newline at end of file
diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ResetItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ResetItem.java
index 5ed6bbb..9f6f651 100644
--- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ResetItem.java
+++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ResetItem.java
@@ -27,15 +27,15 @@ public class ResetItem extends BaseItem {
final AppearanceManager appearanceManager = AppearanceManager.get(player);
if (!appearanceManager.hasData()) {
- player.sendMessage(I18N.translate(player, I18NDict.Event.UNDISGUISE_NOTACTIVE));
+ player.sendMessage(I18N.translate(player, I18NDict.Event.Undisguise.NONE));
event.getView().close();
return;
}
if (!appearanceManager.reset().isError()) {
- player.sendMessage(I18N.translate(player, I18NDict.Event.UNDISGUISE_SUCCESS));
+ player.sendMessage(I18N.translate(player, I18NDict.Event.Undisguise.SUCCESS));
} else {
- player.sendMessage(I18N.translate(player, I18NDict.Event.UNDISGUISE_FAIL));
+ player.sendMessage(I18N.translate(player, I18NDict.Event.Undisguise.FAIL));
}
}
}
diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/LanguageCyclingItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/LanguageCyclingItem.java
index 29cc6be..c7de942 100644
--- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/LanguageCyclingItem.java
+++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/LanguageCyclingItem.java
@@ -21,15 +21,21 @@ public class LanguageCyclingItem {
getItemProviderForLocale(Locale.CUSTOM),
};
+ private final ItemProvider[] providersNoCustom = new ItemProvider[]{
+ getItemProviderForLocale(Locale.ENGLISH),
+ getItemProviderForLocale(Locale.FRENCH)
+ };
+
public BaseItem get(Player player) {
- Optional profile = NickoBukkit.getInstance().getDataStore().getData(player.getUniqueId());
+ final NickoBukkit instance = NickoBukkit.getInstance();
+ Optional profile = instance.getDataStore().getData(player.getUniqueId());
if (profile.isPresent()) {
final NickoProfile nickoProfile = profile.get();
int localeOrdinal = nickoProfile.getLocale().ordinal();
return CycleItem.withStateChangeHandler((observer, integer) -> {
nickoProfile.setLocale(Locale.values()[integer]);
observer.playSound(player, Sound.UI_BUTTON_CLICK, 1f, 0.707107f); // 0.707107 ~= C
- }, localeOrdinal, providers);
+ }, localeOrdinal, instance.getNickoConfig().isCustomLocale() ? providers : providersNoCustom);
}
return new SimpleItem(ItemProvider.EMPTY);
diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java
index 69a2aed..3597f2f 100644
--- a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java
+++ b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java
@@ -1,12 +1,13 @@
package net.artelnatif.nicko.i18n;
+import com.github.jsixface.YamlConfig;
import net.artelnatif.nicko.NickoBukkit;
import net.artelnatif.nicko.disguise.NickoProfile;
import org.bukkit.entity.Player;
import org.yaml.snakeyaml.Yaml;
+import java.io.InputStream;
import java.text.MessageFormat;
-import java.util.HashMap;
import java.util.Optional;
public class I18N {
@@ -51,10 +52,11 @@ public class I18N {
final Locale locale = getLocale(player);
String translation;
if (locale == Locale.CUSTOM) {
- translation = instance.getLocaleFileManager().getFromFile(key.key());
+ translation = instance.getLocaleFileManager().get(key.key());
} else {
- final HashMap values = yaml.load(instance.getResource(locale.getCode() + ".yml"));
- translation = values.getOrDefault(key.key(), key.key());
+ final InputStream resource = instance.getResource(locale.getCode() + ".yml");
+ final YamlConfig yamlConfig = YamlConfig.load(resource);
+ translation = yamlConfig.getString(key.key());
}
return translation;
diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18NDict.java b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18NDict.java
index deebc55..2c545eb 100644
--- a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18NDict.java
+++ b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18NDict.java
@@ -2,13 +2,21 @@ package net.artelnatif.nicko.i18n;
public record I18NDict(String key) {
public static class Event {
- public static final I18NDict UNDISGUISE_SUCCESS = new I18NDict("event.undisguise.success");
- public static final I18NDict UNDISGUISE_FAIL = new I18NDict("event.undisguise.fail");
- public static final I18NDict UNDISGUISE_NOTACTIVE = new I18NDict("event.undisguise.notactive");
- public static final I18NDict DISGUISE_SUCCESS = new I18NDict("event.disguise.success");
- public static final I18NDict DISGUISE_FAIL = new I18NDict("event.disguise.fail");
- public static final I18NDict PREVIOUS_SKIN_APPLIED = new I18NDict("event.previous_skin_applied.success");
- public static final I18NDict PREVIOUS_SKIN_APPLY_FAIL = new I18NDict("event.previous_skin_applied.fail");
+ public static class Disguise {
+ public static final I18NDict SUCCESS = new I18NDict("event.disguise.success");
+ public static final I18NDict FAIL = new I18NDict("event.disguise.fail");
+ }
+
+ public static class Undisguise {
+ public static final I18NDict SUCCESS = new I18NDict("event.undisguise.success");
+ public static final I18NDict FAIL = new I18NDict("event.undisguise.fail");
+ public static final I18NDict NONE = new I18NDict("event.undisguise.none");
+ }
+
+ public static class PreviousSkin {
+ public static final I18NDict SUCCESS = new I18NDict("event.previous_skin_applied.success");
+ public static final I18NDict FAIL = new I18NDict("event.previous_skin_applied.fail");
+ }
}
public static class Plugin {
diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/LocaleFileManager.java b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/LocaleFileManager.java
index dc2e396..b80de9d 100644
--- a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/LocaleFileManager.java
+++ b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/LocaleFileManager.java
@@ -1,5 +1,6 @@
package net.artelnatif.nicko.i18n;
+import com.github.jsixface.YamlConfig;
import net.artelnatif.nicko.NickoBukkit;
import org.yaml.snakeyaml.Yaml;
@@ -11,23 +12,16 @@ public class LocaleFileManager {
private final File folder = new File(NickoBukkit.getInstance().getDataFolder() + "/lang/");
private final File file = new File(folder, "lang.yml");
- private HashMap data = new HashMap<>();
-
- public boolean loadValues() {
- if (!file.exists()) return true;
+ public String get(String key) {
+ if (!file.exists()) return key;
try (BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file))) {
- data = yaml.load(inputStream);
- return true;
+ final YamlConfig yamlConfig = YamlConfig.load(inputStream);
+ return yamlConfig.getString(key);
} catch (IOException e) {
- return false;
+ return key;
}
}
- public String getFromFile(String key) {
- if (!file.exists() || data.isEmpty()) return key;
- return data.get(key);
- }
-
public boolean dumpFromLocale(Locale locale) {
if (locale == Locale.CUSTOM) return true;
if (file.exists()) return true;
diff --git a/nicko-core/src/main/resources/en.yml b/nicko-core/src/main/resources/en.yml
index 22b55dd..9034f67 100644
--- a/nicko-core/src/main/resources/en.yml
+++ b/nicko-core/src/main/resources/en.yml
@@ -17,5 +17,5 @@ event:
success: "§aYour previous active disguise has been applied back."
undisguise:
fail: "§cUnable to remove your disguise. It will be set back to default on your next login. Sorry!"
- notactive: "§cYou do not have an active disguise."
+ none: "§cYou do not have an active disguise."
success: "§aDisguise removed."
\ No newline at end of file
diff --git a/nicko-core/src/main/resources/fr.yml b/nicko-core/src/main/resources/fr.yml
index e200af4..3efa83b 100644
--- a/nicko-core/src/main/resources/fr.yml
+++ b/nicko-core/src/main/resources/fr.yml
@@ -17,5 +17,5 @@ event:
success: "§aVotre précédent déguisement a été réappliqué."
undisguise:
fail: "§cImpossible de retier votre déguisement. Il sera remis par défaut à votre prochaine reconnexion. Désolé !"
- notactive: "§cVous n'avez pas de déguisement."
+ none: "§cVous n'avez pas de déguisement."
success: "§aDéguisement retiré."
\ No newline at end of file