From 0ef5766004dde77f4837c47ebad4dea6b6923e17 Mon Sep 17 00:00:00 2001 From: ineanto Date: Tue, 27 Aug 2024 22:48:39 +0200 Subject: [PATCH] feat(language): reworked messages and formatting --- .gitignore | 3 +- CHANGELOG.secret.log | 116 ++++++++++++++++++ build.gradle.kts | 6 +- .../nicko/{NickoBukkit.java => Nicko.java} | 26 ++-- .../xyz/ineanto/nicko/anvil/AnvilManager.java | 30 ++--- .../nicko/appearance/AppearanceManager.java | 16 +-- .../appearance/random/RandomNameFetcher.java | 6 +- .../ineanto/nicko/command/NickoCommand.java | 8 +- .../ineanto/nicko/config/Configuration.java | 11 +- .../nicko/config/ConfigurationManager.java | 3 - .../nicko/event/PlayerJoinListener.java | 17 ++- .../nicko/event/PlayerQuitListener.java | 6 +- .../java/xyz/ineanto/nicko/gui/AdminGUI.java | 16 +-- .../ineanto/nicko/gui/CacheManagementGUI.java | 8 +- .../java/xyz/ineanto/nicko/gui/ChoiceGUI.java | 10 +- .../java/xyz/ineanto/nicko/gui/HomeGUI.java | 8 +- .../ineanto/nicko/gui/InvalidateSkinGUI.java | 20 +-- .../xyz/ineanto/nicko/gui/PlayerCheckGUI.java | 14 +-- .../xyz/ineanto/nicko/gui/SettingsGUI.java | 8 +- .../ineanto/nicko/gui/items/ItemDefaults.java | 12 +- .../gui/items/admin/ManageCacheItem.java | 16 +-- .../gui/items/admin/ManagePlayerItem.java | 12 +- .../gui/items/admin/cache/CacheEntryItem.java | 22 ++-- .../admin/cache/CacheStatisticsItem.java | 14 +-- .../admin/cache/InvalidateCacheItem.java | 18 +-- .../items/admin/cache/InvalidateSkinItem.java | 10 +- .../admin/check/PlayerInformationItem.java | 26 ++-- .../gui/items/appearance/ChangeBothItem.java | 10 +- .../gui/items/appearance/ChangeNameItem.java | 10 +- .../gui/items/appearance/ChangeSkinItem.java | 16 +-- .../nicko/gui/items/common/GoBackItem.java | 10 +- .../gui/items/common/ScrollDownItem.java | 14 +-- .../nicko/gui/items/common/ScrollUpItem.java | 14 +-- .../gui/items/common/choice/CancelItem.java | 10 +- .../gui/items/common/choice/ConfirmItem.java | 10 +- .../nicko/gui/items/home/AdminAccessItem.java | 10 +- .../nicko/gui/items/home/ExitItem.java | 10 +- .../nicko/gui/items/home/RandomSkinItem.java | 24 ++-- .../nicko/gui/items/home/ResetItem.java | 16 +-- .../gui/items/home/SettingsAccessItem.java | 10 +- .../items/settings/LanguageCyclingItem.java | 38 +++--- .../items/settings/RandomSkinCyclingItem.java | 22 ++-- .../CustomLanguage.java} | 27 ++-- .../Locale.java => language/Language.java} | 12 +- .../LanguageKey.java} | 8 +- .../PlayerLanguage.java} | 69 ++++++++--- .../nicko/{i18n => language}/Translation.java | 2 +- .../migration/ConfigurationMigrator.java | 13 +- .../nicko/migration/CustomLocaleMigrator.java | 34 ++--- .../nicko/placeholder/NickoExpansion.java | 6 +- .../ineanto/nicko/profile/NickoProfile.java | 24 ++-- .../nicko/storage/PlayerDataStore.java | 4 +- .../nicko/storage/json/JSONStorage.java | 10 +- .../nicko/storage/mariadb/MariaDBStorage.java | 4 +- .../nicko/storage/mysql/MySQLStorage.java | 4 +- .../nicko/storage/redis/RedisCache.java | 6 +- .../wrapper/WrapperPlayServerRespawn.java | 35 +++--- src/main/resources/config.yml | 21 ++-- src/main/resources/en.yml | 50 ++++---- src/main/resources/fr.yml | 54 ++++---- src/main/resources/plugin.yml | 2 +- .../ineanto/nicko/test/NickoPluginTest.java | 6 +- .../nicko/test/appearance/RandomNameTest.java | 6 +- .../nicko/test/config/ConfigurationTest.java | 6 +- .../test/config/ConfigurationVersionTest.java | 13 +- .../nicko/test/i18n/ItemTranslationTest.java | 22 ++-- .../nicko/test/i18n/TranslationTest.java | 14 +-- .../nicko/test/migration/MigrationTest.java | 28 +++-- .../nicko/test/storage/MapCacheTest.java | 6 +- .../nicko/test/storage/RedisCacheTest.java | 7 +- .../nicko/test/storage/SQLStorageTest.java | 13 +- 71 files changed, 670 insertions(+), 522 deletions(-) create mode 100644 CHANGELOG.secret.log rename src/main/java/xyz/ineanto/nicko/{NickoBukkit.java => Nicko.java} (91%) rename src/main/java/xyz/ineanto/nicko/{i18n/CustomLocale.java => language/CustomLanguage.java} (58%) rename src/main/java/xyz/ineanto/nicko/{i18n/Locale.java => language/Language.java} (64%) rename src/main/java/xyz/ineanto/nicko/{i18n/I18NDict.java => language/LanguageKey.java} (96%) rename src/main/java/xyz/ineanto/nicko/{i18n/I18N.java => language/PlayerLanguage.java} (69%) rename src/main/java/xyz/ineanto/nicko/{i18n => language}/Translation.java (72%) diff --git a/.gitignore b/.gitignore index 8a238de..bc8385d 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,5 @@ bin/ !**/src/test/**/bin/ ### Server ### -run/ \ No newline at end of file +run/ +CHANGELOG.secret.log \ No newline at end of file diff --git a/CHANGELOG.secret.log b/CHANGELOG.secret.log new file mode 100644 index 0000000..98b7f56 --- /dev/null +++ b/CHANGELOG.secret.log @@ -0,0 +1,116 @@ +1.2.0: Update n°13 (XX/XX/24) + [FEATURES] + - Players are now able to save disguises as presets. + + [FIXES] + - Fixed an oversight preventing the configuration from properly being migrated. + + [LANGUAGE] + - Moved the prefix to the language file. + - Updated the language files to modernize the messages. + + [OTHER] + - Dropped the release candidate status as Nicko is now considered stable. + +1.1.7-RC1: Hotfix n°5 (04/05/24) + [OTHER] + - Restored download link again on spigotmc.org + +1.1.6-RC1: Update n°11 (04/05/24) + [FEATURES] + - Update dependencies in preparation to the 1.20.5 update + + [OTHER] + - Restored download link on spigotmc.org + +1.1.5-RC1: Update n°10 (25/12/23) + [FEATURES] + - Various improvements to performance. + [FIXES] + - Fixed a bug related to configuration migration. + +1.1.4-RC1: Update n°9 (07/02/23) + [OTHER] + - The repository hosting the previous version of Nicko had expired, this is now fixed. + +1.1.3-RC1: Hotfix n°4 (28/12/23) + [FIXES] + - Fixed the English Locale version being late. + +1.1.2-RC1: Update n°8 (28/12/23) + [FEATURES] + - Players now default back to their original appearance upon failure. + + [FIXES] + - Fixed an invalid placeholder parameter (%nicko_random_skin% now gets if the player has random skin on login set or not). + - Fixed the error reason not appearing upon failure. + - Fixed player profiles (name and skin associated) not being reset gracefully upon failure. + - Fixed error messages not being precise enough. + - Various optimizations and improvements. + +1.1.1-RC1: Update n°7 (27/12/23) + [FEATURES] + - Made Nicko compatible with 1.20.3 and 1.20.4. + + +1.1.0-RC1: Update n°6 (23/12/23) + [BREAKING] + - The language system has been updated to use the Adventure library (https://docs.advntr.dev/index.html). This results in the custom locale breaking + Nicko upon usage of legacy color codes (e.g., "§6Nicko"). Your custom locale will be backed up upon starting this version and you will be able to + use the new default English locale to help you make your locale compatible with the new formatting. + + [FEATURES] + - Players can now choose to get a random appearance via a list of more than 400 usernames and skins associated. + - Players can now toggle a setting to automatically get a random appearance upon joining. + - Introduced a version string inside Nicko's language files to plan future updates to the file. (see [BREAKING]) + + (Note: the random skin functionality is still work-in-progress and might break or not work at all because of + the lack of time that I have to test all the usernames and skins associated.) + + [FIXES] + - Various optimizations and improvements. + - Internal refactoring + - bStats metrics are not minified anymore. + +1.0.8-RC1: Update n°5 (19/12/23) + [FEATURES] + - Introduced a version string inside Nicko's configuration to plan future updates to the file. Your previous configuration file will automatically be migrated to this current version (with the backup of your old one included!) + - Persistence and cache will now fallback to local alternatives when unreachable. + - Player check GUI has been updated to better reflect the current state of player's disguises. + - Developers can now listen to the PlayerDisguiseEvent and cancel the disguise process. + + [OTHER] + - Various optimizations and improvements. + - Internal refactoring + +1.0.7-RC1: Update n°4 (13/12/23) + [OTHER] + - In line with my thinking that Minecraft servers should always be in one of the latest versions to give developers more freedom and less maintenance hassle, Nicko will now only be supporting the current major version and the one before it. This results in this version of Nicko now needing at minimum Java version 17 and a server running 1.19. If you can't upgrade, consider myself sorry. + - Various optimizations and improvements following the upgrade to Java 17. + +1.0.6-RC1: Update n°3 (11/12/23) + [OTHER] + - Added telemetry via bStats to gather useful informations about Nicko. This feature is optional and can be disabled inside the "bStats" folder found in plugins folder. Informations gathered are public record and can be found at: https://bstats.org/plugin/bukkit/Nicko/20483. + +1.0.5-RC1: Update n°2 (11/12/23) + [OTHER] + - Moved plugin to the Gradle build chain, resulting in faster builds and smaller Jar. This has no consequences for players. + +1.0.4-RC1: + [FEATURES] + - The players check GUI is now updated upon player's joining and leaving + - Administrators are now able to remove a player's disguise through the player check GUI + +1.0.3-RC1: Hotfix n°3 (07/12/23) + [FIXES] + - Fixed a visual bug where players in survival mode were seeing themselves as having full health and hunger after disguising. + +1.0.2-RC1: Hotfix n°2 (06/12/23) + [OTHER] + - Internal refactoring + +1.0.1-RC1: Hotfix n°1 (06/12/23) + [FIXES] + - Fixed an issue when joining and players being disguised were not for the player joining. + + diff --git a/build.gradle.kts b/build.gradle.kts index a835108..18ed652 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -130,12 +130,12 @@ tasks { url("https://download.luckperms.net/1554/bukkit/loader/LuckPerms-Bukkit-5.4.139.jar") // 1.20 - 1.20.4 testing - url("https://github.com/dmulloy2/ProtocolLib/releases/download/5.2.0/ProtocolLib.jar") + //url("https://github.com/dmulloy2/ProtocolLib/releases/download/5.2.0/ProtocolLib.jar") // 1.20.5 - latest testing - //url("https://ci.dmulloy2.net/job/ProtocolLib/lastSuccessfulBuild/artifact/build/libs/ProtocolLib.jar") + url("https://ci.dmulloy2.net/job/ProtocolLib/lastSuccessfulBuild/artifact/build/libs/ProtocolLib.jar") } - minecraftVersion("1.20.4") + minecraftVersion("1.21.1") } } \ No newline at end of file diff --git a/src/main/java/xyz/ineanto/nicko/NickoBukkit.java b/src/main/java/xyz/ineanto/nicko/Nicko.java similarity index 91% rename from src/main/java/xyz/ineanto/nicko/NickoBukkit.java rename to src/main/java/xyz/ineanto/nicko/Nicko.java index 3073e52..a0621bb 100644 --- a/src/main/java/xyz/ineanto/nicko/NickoBukkit.java +++ b/src/main/java/xyz/ineanto/nicko/Nicko.java @@ -12,8 +12,8 @@ import xyz.ineanto.nicko.config.Configuration; import xyz.ineanto.nicko.config.ConfigurationManager; import xyz.ineanto.nicko.event.PlayerJoinListener; import xyz.ineanto.nicko.event.PlayerQuitListener; -import xyz.ineanto.nicko.i18n.CustomLocale; -import xyz.ineanto.nicko.i18n.Locale; +import xyz.ineanto.nicko.language.CustomLanguage; +import xyz.ineanto.nicko.language.Language; import xyz.ineanto.nicko.migration.ConfigurationMigrator; import xyz.ineanto.nicko.migration.CustomLocaleMigrator; import xyz.ineanto.nicko.mojang.MojangAPI; @@ -28,8 +28,8 @@ import xyz.xenondevs.invui.item.impl.SimpleItem; import java.io.IOException; -public class NickoBukkit extends JavaPlugin { - private static NickoBukkit plugin; +public class Nicko extends JavaPlugin { + private static Nicko plugin; private final boolean unitTesting; @@ -37,19 +37,19 @@ public class NickoBukkit extends JavaPlugin { private PlayerDataStore dataStore; private ConfigurationManager configurationManager; private Configuration configuration; - private CustomLocale customLocale; + private CustomLanguage customLanguage; private PlayerNameStore nameStore; private RandomNameFetcher nameFetcher; private Metrics metrics; - public NickoBukkit() { + public Nicko() { this.unitTesting = false; } /** * Used by MockBukkit */ - protected NickoBukkit(Configuration configuration) { + protected Nicko(Configuration configuration) { this.unitTesting = true; this.configuration = configuration; getLogger().info("Unit Testing Mode enabled."); @@ -107,9 +107,9 @@ public class NickoBukkit extends JavaPlugin { if (configuration.isCustomLocale()) { try { - CustomLocale.dumpIntoFile(Locale.ENGLISH); - customLocale = new CustomLocale(); - new CustomLocaleMigrator(this, customLocale).migrate(); + CustomLanguage.dumpIntoFile(Language.ENGLISH); + customLanguage = new CustomLanguage(); + new CustomLocaleMigrator(this, customLanguage).migrate(); getLogger().info("Successfully loaded the custom locale."); } catch (IOException e) { getLogger().severe("Failed to load the custom locale!"); @@ -155,7 +155,7 @@ public class NickoBukkit extends JavaPlugin { getLogger().info("Nicko (Bukkit) has been disabled."); } - public static NickoBukkit getInstance() { + public static Nicko getInstance() { return plugin; } @@ -195,7 +195,7 @@ public class NickoBukkit extends JavaPlugin { return mojangAPI; } - public CustomLocale getCustomLocale() { - return customLocale; + public CustomLanguage getCustomLocale() { + return customLanguage; } } diff --git a/src/main/java/xyz/ineanto/nicko/anvil/AnvilManager.java b/src/main/java/xyz/ineanto/nicko/anvil/AnvilManager.java index 2c2f7ce..38c7f73 100644 --- a/src/main/java/xyz/ineanto/nicko/anvil/AnvilManager.java +++ b/src/main/java/xyz/ineanto/nicko/anvil/AnvilManager.java @@ -7,12 +7,12 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.appearance.ActionResult; import xyz.ineanto.nicko.appearance.AppearanceManager; import xyz.ineanto.nicko.event.custom.PlayerDisguiseEvent; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.ineanto.nicko.mojang.MojangUtils; import xyz.ineanto.nicko.profile.NickoProfile; import xyz.ineanto.nicko.storage.PlayerDataStore; @@ -24,13 +24,13 @@ import java.util.Optional; public class AnvilManager { private final Player player; private final AppearanceManager appearanceManager; - private final PlayerDataStore dataStore = NickoBukkit.getInstance().getDataStore(); + private final PlayerDataStore dataStore = Nicko.getInstance().getDataStore(); private final NickoProfile profile; - private final I18N i18n; + private final PlayerLanguage playerLanguage; public AnvilManager(Player player) { this.player = player; - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); final Optional optionalProfile = dataStore.getData(player.getUniqueId()); this.profile = optionalProfile.orElse(NickoProfile.EMPTY_PROFILE.clone()); @@ -51,7 +51,7 @@ public class AnvilManager { private AnvilGUI.Builder getNameThenSkinAnvil() { return new AnvilGUI.Builder() - .plugin(NickoBukkit.getInstance()) + .plugin(Nicko.getInstance()) .itemLeft(getLeftItem(false)) .interactableSlots(AnvilGUI.Slot.OUTPUT) .onClick((slot, snapshot) -> { @@ -71,7 +71,7 @@ public class AnvilManager { private AnvilGUI.Builder getNameAnvil() { return new AnvilGUI.Builder() - .plugin(NickoBukkit.getInstance()) + .plugin(Nicko.getInstance()) .itemLeft(getLeftItem(false)) .interactableSlots(AnvilGUI.Slot.OUTPUT) .onClick((slot, snapshot) -> { @@ -91,7 +91,7 @@ public class AnvilManager { private AnvilGUI.Builder getSkinAnvil() { return new AnvilGUI.Builder() - .plugin(NickoBukkit.getInstance()) + .plugin(Nicko.getInstance()) .itemLeft(getLeftItem(true)) .interactableSlots(AnvilGUI.Slot.OUTPUT) .onClick((slot, snapshot) -> { @@ -116,13 +116,13 @@ public class AnvilManager { final ActionResult actionResult = appearanceManager.updatePlayer(skinChange, false); if (!actionResult.isError()) { - player.sendMessage(i18n.translate(I18NDict.Event.Appearance.Set.OK, true)); + player.sendMessage(playerLanguage.translate(LanguageKey.Event.Appearance.Set.OK, true)); } else { player.sendMessage( - i18n.translate( - I18NDict.Event.Appearance.Set.ERROR, + playerLanguage.translate( + LanguageKey.Event.Appearance.Set.ERROR, true, - i18n.translate(actionResult.getErrorKey(), false) + playerLanguage.translate(actionResult.getErrorKey(), false) )); } return Collections.singletonList(AnvilGUI.ResponseAction.close()); @@ -134,9 +134,9 @@ public class AnvilManager { if (meta != null) { if (skin) { - meta.displayName(Component.text(i18n.translate(I18NDict.GUI.NEW_SKIN, false))); + meta.displayName(Component.text(playerLanguage.translate(LanguageKey.GUI.NEW_SKIN, false))); } else { - meta.displayName(Component.text(i18n.translate(I18NDict.GUI.NEW_NAME, false))); + meta.displayName(Component.text(playerLanguage.translate(LanguageKey.GUI.NEW_NAME, false))); } } diff --git a/src/main/java/xyz/ineanto/nicko/appearance/AppearanceManager.java b/src/main/java/xyz/ineanto/nicko/appearance/AppearanceManager.java index 7bc4319..7b9fcd8 100644 --- a/src/main/java/xyz/ineanto/nicko/appearance/AppearanceManager.java +++ b/src/main/java/xyz/ineanto/nicko/appearance/AppearanceManager.java @@ -8,8 +8,8 @@ import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerTeleportEvent; -import xyz.ineanto.nicko.NickoBukkit; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.Nicko; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.ineanto.nicko.mojang.MojangAPI; import xyz.ineanto.nicko.mojang.MojangSkin; import xyz.ineanto.nicko.profile.NickoProfile; @@ -24,7 +24,7 @@ import java.util.Optional; import java.util.concurrent.ExecutionException; public class AppearanceManager { - private final NickoBukkit instance = NickoBukkit.getInstance(); + private final Nicko instance = Nicko.getInstance(); private final PlayerDataStore dataStore = instance.getDataStore(); private final PlayerNameStore nameStore = instance.getNameStore(); @@ -105,7 +105,7 @@ public class AppearanceManager { if (skinChange) { Optional skin; try { - final MojangAPI mojangAPI = NickoBukkit.getInstance().getMojangAPI(); + final MojangAPI mojangAPI = Nicko.getInstance().getMojangAPI(); final Optional uuid = mojangAPI.getUUID(profile.getSkin()); if (uuid.isPresent()) { skin = reset ? mojangAPI.getSkinWithoutCaching(uuid.get()) : mojangAPI.getSkin(uuid.get()); @@ -116,18 +116,18 @@ public class AppearanceManager { properties.put("textures", new WrappedSignedProperty("textures", skinResult.value(), skinResult.signature())); } else { reset(); - return ActionResult.error(I18NDict.Error.MOJANG_SKIN); + return ActionResult.error(LanguageKey.Error.MOJANG_SKIN); } } else { reset(); - return ActionResult.error(I18NDict.Error.MOJANG_NAME); + return ActionResult.error(LanguageKey.Error.MOJANG_NAME); } return ActionResult.ok(); } catch (ExecutionException e) { - return ActionResult.error(I18NDict.Error.CACHE); + return ActionResult.error(LanguageKey.Error.CACHE); } catch (IOException e) { reset(); - return ActionResult.error(I18NDict.Error.MOJANG_NAME); + return ActionResult.error(LanguageKey.Error.MOJANG_NAME); } catch (InterruptedException e) { return ActionResult.error("Unknown error"); } diff --git a/src/main/java/xyz/ineanto/nicko/appearance/random/RandomNameFetcher.java b/src/main/java/xyz/ineanto/nicko/appearance/random/RandomNameFetcher.java index c390f4a..3ff9574 100644 --- a/src/main/java/xyz/ineanto/nicko/appearance/random/RandomNameFetcher.java +++ b/src/main/java/xyz/ineanto/nicko/appearance/random/RandomNameFetcher.java @@ -1,6 +1,6 @@ package xyz.ineanto.nicko.appearance.random; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import java.io.BufferedReader; import java.io.IOException; @@ -12,9 +12,9 @@ import java.util.List; import java.util.Random; public class RandomNameFetcher { - private final NickoBukkit instance; + private final Nicko instance; - public RandomNameFetcher(NickoBukkit instance) { + public RandomNameFetcher(Nicko instance) { this.instance = instance; } diff --git a/src/main/java/xyz/ineanto/nicko/command/NickoCommand.java b/src/main/java/xyz/ineanto/nicko/command/NickoCommand.java index 40ffbbf..118696e 100644 --- a/src/main/java/xyz/ineanto/nicko/command/NickoCommand.java +++ b/src/main/java/xyz/ineanto/nicko/command/NickoCommand.java @@ -6,8 +6,8 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import xyz.ineanto.nicko.gui.HomeGUI; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; public class NickoCommand implements CommandExecutor { @Override @@ -16,8 +16,8 @@ public class NickoCommand implements CommandExecutor { if (player.isOp() || player.hasPermission("nicko.use") || player.hasPermission("nicko.*")) { new HomeGUI(player).open(); } else { - final I18N i18N = new I18N(player); - player.sendMessage(i18N.translate(I18NDict.Error.PERMISSION, true)); + final PlayerLanguage playerLanguage = new PlayerLanguage(player); + player.sendMessage(playerLanguage.translate(LanguageKey.Error.PERMISSION, true)); } return false; } diff --git a/src/main/java/xyz/ineanto/nicko/config/Configuration.java b/src/main/java/xyz/ineanto/nicko/config/Configuration.java index a4958ad..b706f2f 100644 --- a/src/main/java/xyz/ineanto/nicko/config/Configuration.java +++ b/src/main/java/xyz/ineanto/nicko/config/Configuration.java @@ -4,11 +4,10 @@ import com.fasterxml.jackson.annotation.JsonProperty; import xyz.ineanto.nicko.version.Version; public class Configuration { - public static final Version VERSION = new Version(1, 0, 8); + public static final Version VERSION = new Version(1, 0, 9); public static final Configuration DEFAULT = new Configuration(VERSION.toString(), DefaultDataSources.SQL_EMPTY, DefaultDataSources.REDIS_EMPTY, - "§6Nicko §8§l| §r", false); private final transient Version versionObject; @@ -19,21 +18,17 @@ public class Configuration { private final SQLDataSourceConfiguration sqlConfiguration; @JsonProperty("redis") private final DataSourceConfiguration redisConfiguration; - @JsonProperty("prefix") - private final String prefix; @JsonProperty("customLocale") private final Boolean customLocale; public Configuration(@JsonProperty("version") String version, @JsonProperty("sql") SQLDataSourceConfiguration sqlConfiguration, @JsonProperty("redis") DataSourceConfiguration redisConfiguration, - @JsonProperty("prefix") String prefix, @JsonProperty("customLocale") Boolean customLocale) { this.version = version; this.versionObject = Version.fromString(version); this.sqlConfiguration = sqlConfiguration; this.redisConfiguration = redisConfiguration; - this.prefix = prefix; this.customLocale = customLocale; } @@ -53,10 +48,6 @@ public class Configuration { return redisConfiguration; } - public String getPrefix() { - return prefix; - } - public Boolean isCustomLocale() { return customLocale; } diff --git a/src/main/java/xyz/ineanto/nicko/config/ConfigurationManager.java b/src/main/java/xyz/ineanto/nicko/config/ConfigurationManager.java index 566d55e..de83afb 100644 --- a/src/main/java/xyz/ineanto/nicko/config/ConfigurationManager.java +++ b/src/main/java/xyz/ineanto/nicko/config/ConfigurationManager.java @@ -10,10 +10,8 @@ import java.nio.file.StandardCopyOption; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.util.logging.Logger; public class ConfigurationManager { - private final Logger logger = Logger.getLogger("ConfigurationManager"); private final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); private final File file; private final File backupFile; @@ -40,7 +38,6 @@ public class ConfigurationManager { try { final InputStream input = getClass().getResourceAsStream("/config.yml"); if (input != null) { - logger.info("Saved default configuration as config.yml"); Files.createDirectories(file.getParentFile().toPath()); Files.createFile(file.toPath()); Files.copy(input, file.toPath(), StandardCopyOption.REPLACE_EXISTING); diff --git a/src/main/java/xyz/ineanto/nicko/event/PlayerJoinListener.java b/src/main/java/xyz/ineanto/nicko/event/PlayerJoinListener.java index b28fb11..b7e4408 100644 --- a/src/main/java/xyz/ineanto/nicko/event/PlayerJoinListener.java +++ b/src/main/java/xyz/ineanto/nicko/event/PlayerJoinListener.java @@ -6,13 +6,13 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.appearance.ActionResult; import xyz.ineanto.nicko.appearance.AppearanceManager; import xyz.ineanto.nicko.gui.PlayerCheckGUI; import xyz.ineanto.nicko.gui.PlayerCheckGUIData; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.ineanto.nicko.profile.NickoProfile; import xyz.ineanto.nicko.storage.PlayerDataStore; import xyz.ineanto.nicko.storage.name.PlayerNameStore; @@ -30,8 +30,8 @@ public class PlayerJoinListener implements Listener { @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) public void onPlayerJoin(PlayerJoinEvent event) { final Player player = event.getPlayer(); - final NickoBukkit instance = NickoBukkit.getInstance(); - final I18N i18n = new I18N(player); + final Nicko instance = Nicko.getInstance(); + final PlayerLanguage playerLanguage = new PlayerLanguage(player); final PlayerNameStore nameStore = instance.getNameStore(); final PlayerDataStore dataStore = instance.getDataStore(); nameStore.storeName(player); @@ -52,12 +52,11 @@ public class PlayerJoinListener implements Listener { final boolean needsASkinChange = profile.getSkin() != null && !profile.getSkin().equals(player.getName()); final ActionResult actionResult = appearanceManager.updatePlayer(needsASkinChange, false); if (!actionResult.isError()) { - player.sendMessage(i18n.translate(I18NDict.Event.Appearance.Restore.OK, true)); + player.sendMessage(playerLanguage.translateWithWhoosh(LanguageKey.Event.Appearance.Restore.OK)); } else { player.sendMessage( - i18n.translate(I18NDict.Event.Appearance.Restore.ERROR, - true, - i18n.translate(actionResult.getErrorKey(), false) + playerLanguage.translateWithOops(LanguageKey.Event.Appearance.Restore.ERROR, + playerLanguage.translate(actionResult.getErrorKey(), false) )); } } diff --git a/src/main/java/xyz/ineanto/nicko/event/PlayerQuitListener.java b/src/main/java/xyz/ineanto/nicko/event/PlayerQuitListener.java index 25ccb49..10160a4 100644 --- a/src/main/java/xyz/ineanto/nicko/event/PlayerQuitListener.java +++ b/src/main/java/xyz/ineanto/nicko/event/PlayerQuitListener.java @@ -5,7 +5,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerQuitEvent; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.appearance.ActionResult; import xyz.ineanto.nicko.gui.PlayerCheckGUI; import xyz.ineanto.nicko.gui.PlayerCheckGUIData; @@ -21,9 +21,9 @@ public class PlayerQuitListener implements Listener { @EventHandler public void onPlayerQuit(PlayerQuitEvent event) { final Player player = event.getPlayer(); - final ActionResult result = NickoBukkit.getInstance().getDataStore().saveData(player); + final ActionResult result = Nicko.getInstance().getDataStore().saveData(player); if (result.isError()) { - NickoBukkit.getInstance().getLogger().warning("Failed to save data for " + player.getName()); + Nicko.getInstance().getLogger().warning("Failed to save data for " + player.getName()); } // This is a dirty way to do it but could be worse tbh diff --git a/src/main/java/xyz/ineanto/nicko/gui/AdminGUI.java b/src/main/java/xyz/ineanto/nicko/gui/AdminGUI.java index dbcc2be..2646836 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/AdminGUI.java +++ b/src/main/java/xyz/ineanto/nicko/gui/AdminGUI.java @@ -5,8 +5,8 @@ import xyz.ineanto.nicko.gui.items.ItemDefaults; import xyz.ineanto.nicko.gui.items.admin.ManageCacheItem; import xyz.ineanto.nicko.gui.items.admin.ManagePlayerItem; import xyz.ineanto.nicko.gui.items.common.GoBackItem; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.item.impl.SimpleItem; import xyz.xenondevs.invui.window.Window; @@ -17,22 +17,22 @@ public class AdminGUI { private final String title; public AdminGUI(Player player) { - final I18N i18n = new I18N(player); - this.title = i18n.translate(I18NDict.GUI.Titles.ADMIN, false); + final PlayerLanguage playerLanguage = new PlayerLanguage(player); + this.title = playerLanguage.translate(LanguageKey.GUI.Titles.ADMIN, false); final HomeGUI parent = new HomeGUI(player); final GoBackItem backItem = new GoBackItem(player); - final ManagePlayerItem managePlayerItem = new ManagePlayerItem(i18n, player); + final ManagePlayerItem managePlayerItem = new ManagePlayerItem(playerLanguage, player); this.gui = Gui.normal() .setStructure( "# # # # # # # # #", - "# # # S C X # # #", + "# # # S C U # # #", "B # # # # # # # #" ) - .addIngredient('S', new ManageCacheItem(i18n)) + .addIngredient('S', new ManageCacheItem(playerLanguage)) .addIngredient('C', managePlayerItem.get()) - .addIngredient('U', new SimpleItem(ItemDefaults.getUnavailableItem(i18n))) + .addIngredient('U', new SimpleItem(ItemDefaults.getUnavailableItem(playerLanguage))) .addIngredient('B', backItem.get(parent.getGUI(), parent.getTitle())) .build(); this.player = player; diff --git a/src/main/java/xyz/ineanto/nicko/gui/CacheManagementGUI.java b/src/main/java/xyz/ineanto/nicko/gui/CacheManagementGUI.java index e8287e1..a44d47f 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/CacheManagementGUI.java +++ b/src/main/java/xyz/ineanto/nicko/gui/CacheManagementGUI.java @@ -5,8 +5,8 @@ import xyz.ineanto.nicko.gui.items.admin.cache.CacheStatisticsItem; import xyz.ineanto.nicko.gui.items.admin.cache.InvalidateCacheItem; import xyz.ineanto.nicko.gui.items.admin.cache.InvalidateSkinItem; import xyz.ineanto.nicko.gui.items.common.GoBackItem; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.window.Window; @@ -16,8 +16,8 @@ public class CacheManagementGUI { private final String title; public CacheManagementGUI(Player player) { - final I18N i18n = new I18N(player); - this.title = i18n.translate(I18NDict.GUI.Titles.CACHE, false); + final PlayerLanguage playerLanguage = new PlayerLanguage(player); + this.title = playerLanguage.translate(LanguageKey.GUI.Titles.CACHE, false); final AdminGUI parent = new AdminGUI(player); final GoBackItem backItem = new GoBackItem(player); diff --git a/src/main/java/xyz/ineanto/nicko/gui/ChoiceGUI.java b/src/main/java/xyz/ineanto/nicko/gui/ChoiceGUI.java index 15dbb4e..44c0527 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/ChoiceGUI.java +++ b/src/main/java/xyz/ineanto/nicko/gui/ChoiceGUI.java @@ -5,8 +5,8 @@ import org.bukkit.entity.Player; import xyz.ineanto.nicko.gui.items.common.choice.CancelItem; import xyz.ineanto.nicko.gui.items.common.choice.ChoiceCallback; import xyz.ineanto.nicko.gui.items.common.choice.ConfirmItem; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SimpleItem; @@ -18,11 +18,11 @@ public class ChoiceGUI { private final String title; public ChoiceGUI(Player player, ChoiceCallback callback) { - final I18N i18n = new I18N(player); + final PlayerLanguage playerLanguage = new PlayerLanguage(player); final ConfirmItem confirmItem = new ConfirmItem(player, callback); final CancelItem cancelItem = new CancelItem(player, callback); - this.title = i18n.translate(I18NDict.GUI.Titles.CONFIRM, false); + this.title = playerLanguage.translate(LanguageKey.GUI.Titles.CONFIRM, false); this.gui = Gui.normal() .setStructure( "@ @ @ @ % & & & &", @@ -31,7 +31,7 @@ public class ChoiceGUI { ) .addIngredient('@', confirmItem.get()) .addIngredient('&', cancelItem.get()) - .addIngredient('I', new SimpleItem(i18n.translateItem(new ItemBuilder(Material.PAPER), I18NDict.GUI.Choice.CHOOSE))) + .addIngredient('I', new SimpleItem(playerLanguage.translateItem(new ItemBuilder(Material.PAPER), LanguageKey.GUI.Choice.CHOOSE))) .build(); this.player = player; } diff --git a/src/main/java/xyz/ineanto/nicko/gui/HomeGUI.java b/src/main/java/xyz/ineanto/nicko/gui/HomeGUI.java index a918e7b..321b55e 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/HomeGUI.java +++ b/src/main/java/xyz/ineanto/nicko/gui/HomeGUI.java @@ -5,8 +5,8 @@ import xyz.ineanto.nicko.gui.items.appearance.ChangeBothItem; import xyz.ineanto.nicko.gui.items.appearance.ChangeNameItem; import xyz.ineanto.nicko.gui.items.appearance.ChangeSkinItem; import xyz.ineanto.nicko.gui.items.home.*; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.window.Window; @@ -25,8 +25,8 @@ public class HomeGUI { dynamicStructure[2] = dynamicStructure[2].replace("A", "#"); } - final I18N i18n = new I18N(player); - this.title = i18n.translate(I18NDict.GUI.Titles.HOME, false); + final PlayerLanguage playerLanguage = new PlayerLanguage(player); + this.title = playerLanguage.translate(LanguageKey.GUI.Titles.HOME, false); final ExitItem exitItem = new ExitItem(player); final ResetItem resetItem = new ResetItem(player); diff --git a/src/main/java/xyz/ineanto/nicko/gui/InvalidateSkinGUI.java b/src/main/java/xyz/ineanto/nicko/gui/InvalidateSkinGUI.java index 384bd9e..a2d3e31 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/InvalidateSkinGUI.java +++ b/src/main/java/xyz/ineanto/nicko/gui/InvalidateSkinGUI.java @@ -2,14 +2,14 @@ package xyz.ineanto.nicko.gui; import xyz.ineanto.nicko.gui.items.common.GoBackItem; import xyz.ineanto.nicko.gui.items.common.ScrollUpItem; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.ineanto.nicko.mojang.MojangSkin; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.gui.ScrollGui; import xyz.xenondevs.invui.gui.structure.Markers; import xyz.xenondevs.invui.item.Item; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.gui.items.admin.cache.CacheEntryItem; import xyz.ineanto.nicko.gui.items.common.ScrollDownItem; import org.bukkit.entity.Player; @@ -27,22 +27,22 @@ public class InvalidateSkinGUI { private final String title; public InvalidateSkinGUI(Player player) { - final I18N i18n = new I18N(player); - this.title = i18n.translate(I18NDict.GUI.Titles.INVALIDATE_SKIN, false); + final PlayerLanguage playerLanguage = new PlayerLanguage(player); + this.title = playerLanguage.translate(LanguageKey.GUI.Titles.INVALIDATE_SKIN, false); - final ConcurrentMap> skins = NickoBukkit.getInstance().getMojangAPI().getSkinCache().asMap(); + final ConcurrentMap> skins = Nicko.getInstance().getMojangAPI().getSkinCache().asMap(); final List loadedSkins = skins.entrySet().stream() .filter(entry -> entry.getValue().isPresent()) .map(Map.Entry::getKey) - .collect(Collectors.toList()); + .toList(); final List items = loadedSkins.stream() - .map(uuid -> new CacheEntryItem(i18n, uuid)) + .map(uuid -> new CacheEntryItem(playerLanguage, uuid)) .collect(Collectors.toList()); final CacheManagementGUI parent = new CacheManagementGUI(player); - final ScrollUpItem scrollUpItem = new ScrollUpItem(i18n); - final ScrollDownItem scrollDownItem = new ScrollDownItem(i18n); + final ScrollUpItem scrollUpItem = new ScrollUpItem(playerLanguage); + final ScrollDownItem scrollDownItem = new ScrollDownItem(playerLanguage); final GoBackItem backItem = new GoBackItem(player); gui = ScrollGui.items(guiItemBuilder -> { diff --git a/src/main/java/xyz/ineanto/nicko/gui/PlayerCheckGUI.java b/src/main/java/xyz/ineanto/nicko/gui/PlayerCheckGUI.java index a09c43f..13ff451 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/PlayerCheckGUI.java +++ b/src/main/java/xyz/ineanto/nicko/gui/PlayerCheckGUI.java @@ -7,8 +7,8 @@ import xyz.ineanto.nicko.gui.items.admin.check.PlayerInformationItem; import xyz.ineanto.nicko.gui.items.common.GoBackItem; import xyz.ineanto.nicko.gui.items.common.ScrollDownItem; import xyz.ineanto.nicko.gui.items.common.ScrollUpItem; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.gui.ScrollGui; import xyz.xenondevs.invui.gui.structure.Markers; @@ -26,20 +26,20 @@ public class PlayerCheckGUI { private final String title; public PlayerCheckGUI(Player player, Collection players) { - final I18N i18n = new I18N(player); - this.title = i18n.translate(I18NDict.GUI.Titles.CHECK, false); + final PlayerLanguage playerLanguage = new PlayerLanguage(player); + this.title = playerLanguage.translate(LanguageKey.GUI.Titles.CHECK, false); final List items = players.stream() .map(Entity::getUniqueId) .map(Bukkit::getPlayer) .filter(Objects::nonNull) - .map(mappedPlayer -> new PlayerInformationItem(i18n, mappedPlayer)) + .map(mappedPlayer -> new PlayerInformationItem(playerLanguage, mappedPlayer)) .collect(Collectors.toList()); final AdminGUI parent = new AdminGUI(player); final GoBackItem backItem = new GoBackItem(player); - final ScrollUpItem scrollUpItem = new ScrollUpItem(i18n); - final ScrollDownItem scrollDownItem = new ScrollDownItem(i18n); + final ScrollUpItem scrollUpItem = new ScrollUpItem(playerLanguage); + final ScrollDownItem scrollDownItem = new ScrollDownItem(playerLanguage); gui = ScrollGui.items(guiItemBuilder -> { guiItemBuilder.setStructure( diff --git a/src/main/java/xyz/ineanto/nicko/gui/SettingsGUI.java b/src/main/java/xyz/ineanto/nicko/gui/SettingsGUI.java index f02100c..ee08ba1 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/SettingsGUI.java +++ b/src/main/java/xyz/ineanto/nicko/gui/SettingsGUI.java @@ -4,8 +4,8 @@ import org.bukkit.entity.Player; import xyz.ineanto.nicko.gui.items.common.GoBackItem; import xyz.ineanto.nicko.gui.items.settings.LanguageCyclingItem; import xyz.ineanto.nicko.gui.items.settings.RandomSkinCyclingItem; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.window.Window; @@ -21,8 +21,8 @@ public class SettingsGUI { "B # # # # # # # #" }; - final I18N i18n = new I18N(player); - this.title = i18n.translate(I18NDict.GUI.Titles.SETTINGS, false); + final PlayerLanguage playerLanguage = new PlayerLanguage(player); + this.title = playerLanguage.translate(LanguageKey.GUI.Titles.SETTINGS, false); final HomeGUI parent = new HomeGUI(player); final LanguageCyclingItem languageItem = new LanguageCyclingItem(player); diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/ItemDefaults.java b/src/main/java/xyz/ineanto/nicko/gui/items/ItemDefaults.java index 88ed8f5..6529e12 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/ItemDefaults.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/ItemDefaults.java @@ -1,22 +1,22 @@ package xyz.ineanto.nicko.gui.items; import org.bukkit.Material; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.item.builder.AbstractItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.SkullBuilder; public class ItemDefaults { - public static AbstractItemBuilder getErrorSkullItem(I18N i18n, String key, Object... args) { + public static AbstractItemBuilder getErrorSkullItem(PlayerLanguage playerLanguage, String key, Object... args) { // "Missing Value" (Valve's signature missing texture) Texture Value final SkullBuilder.HeadTexture headTexture = new SkullBuilder.HeadTexture("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjNmZTU5YjJhMWQyYmYzMjcwNDA2OGVmYzg2MGM3NWY5MjEyYzIzMTBiNDNkMDdjNGJiYTRiNGViMjM0ZTY4NCJ9fX0="); final SkullBuilder builder = new SkullBuilder(headTexture); - return i18n.translateItem(builder, key, args); + return playerLanguage.translateItem(builder, key, args); } - public static AbstractItemBuilder getUnavailableItem(I18N i18n) { + public static AbstractItemBuilder getUnavailableItem(PlayerLanguage playerLanguage) { final ItemBuilder builder = new ItemBuilder(Material.RED_TERRACOTTA); - return i18n.translateItem(builder, I18NDict.GUI.UNAVAILABLE); + return playerLanguage.translateItem(builder, LanguageKey.GUI.UNAVAILABLE); } } diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/admin/ManageCacheItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/admin/ManageCacheItem.java index 81a48cb..ac9d4a4 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/admin/ManageCacheItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/admin/ManageCacheItem.java @@ -5,11 +5,11 @@ import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.gui.CacheManagementGUI; import xyz.ineanto.nicko.gui.items.ItemDefaults; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.SkullBuilder; import xyz.xenondevs.invui.item.impl.AsyncItem; @@ -19,18 +19,18 @@ import xyz.xenondevs.invui.util.MojangApiUtils; import java.io.IOException; public class ManageCacheItem extends AsyncItem { - public ManageCacheItem(I18N i18n) { + public ManageCacheItem(PlayerLanguage playerLanguage) { super(new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.PAINTING); - return i18n.translateItem(builder, I18NDict.GUI.LOADING); + return playerLanguage.translateItem(builder, LanguageKey.GUI.LOADING); }, (click -> true)).getItemProvider(), () -> { try { final SkullBuilder builder = new SkullBuilder("Notch"); - return i18n.translateItem(builder, I18NDict.GUI.Admin.MANAGE_CACHE); + return playerLanguage.translateItem(builder, LanguageKey.GUI.Admin.MANAGE_CACHE); } catch (MojangApiUtils.MojangApiException | IOException e) { - NickoBukkit.getInstance().getLogger().warning("Unable to get Head texture for Notch! (GUI/ManageCache)"); - return ItemDefaults.getErrorSkullItem(i18n, I18NDict.GUI.Admin.MANAGE_CACHE); + Nicko.getInstance().getLogger().warning("Unable to get Head texture for Notch! (GUI/ManageCache)"); + return ItemDefaults.getErrorSkullItem(playerLanguage, LanguageKey.GUI.Admin.MANAGE_CACHE); } }); } diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/admin/ManagePlayerItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/admin/ManagePlayerItem.java index adde45b..7cec662 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/admin/ManagePlayerItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/admin/ManagePlayerItem.java @@ -4,24 +4,24 @@ import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import xyz.ineanto.nicko.gui.PlayerCheckGUI; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; public class ManagePlayerItem { private final Player player; - private final I18N i18n; + private final PlayerLanguage playerLanguage; - public ManagePlayerItem(I18N i18n, Player player) { - this.i18n = i18n; + public ManagePlayerItem(PlayerLanguage playerLanguage, Player player) { + this.playerLanguage = playerLanguage; this.player = player; } public SuppliedItem get() { return new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.WRITABLE_BOOK); - return i18n.translateItem(builder, I18NDict.GUI.Admin.MANAGE_PLAYER); + return playerLanguage.translateItem(builder, LanguageKey.GUI.Admin.MANAGE_PLAYER); }, click -> { new PlayerCheckGUI(player, Bukkit.getOnlinePlayers()).open(); return true; diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/CacheEntryItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/CacheEntryItem.java index 89a37d5..cdf7c90 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/CacheEntryItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/CacheEntryItem.java @@ -6,13 +6,13 @@ import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.gui.ChoiceGUI; import xyz.ineanto.nicko.gui.InvalidateSkinGUI; import xyz.ineanto.nicko.gui.items.ItemDefaults; import xyz.ineanto.nicko.gui.items.common.choice.ChoiceCallback; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.LanguageKey; +import xyz.ineanto.nicko.language.PlayerLanguage; import xyz.ineanto.nicko.mojang.MojangAPI; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.SkullBuilder; @@ -25,22 +25,22 @@ import java.util.UUID; public class CacheEntryItem extends AsyncItem { private final String name; private final String uuid; - private final MojangAPI mojangAPI = NickoBukkit.getInstance().getMojangAPI(); + private final MojangAPI mojangAPI = Nicko.getInstance().getMojangAPI(); - public CacheEntryItem(I18N i18n, String uuid) { + public CacheEntryItem(PlayerLanguage playerLanguage, String uuid) { super(new ItemBuilder(Material.PAINTING) .setDisplayName( - Component.text(i18n.translate(I18NDict.GUI.LOADING, false)).content() + Component.text(playerLanguage.translate(LanguageKey.GUI.LOADING, false)).content() ), () -> { final String dashedUuid = uuid.replaceAll("(.{8})(.{4})(.{4})(.{4})(.+)", "$1-$2-$3-$4-$5"); final UUID uuidObject = UUID.fromString(dashedUuid); try { final SkullBuilder skull = new SkullBuilder(uuidObject); - return i18n.translateItem(skull, I18NDict.GUI.Admin.Cache.ENTRY, NickoBukkit.getInstance().getMojangAPI().getUUIDName(uuid)); + return playerLanguage.translateItem(skull, LanguageKey.GUI.Admin.Cache.ENTRY, Nicko.getInstance().getMojangAPI().getUUIDName(uuid)); } catch (MojangApiUtils.MojangApiException | IOException e) { - NickoBukkit.getInstance().getLogger().warning("Unable to get Head texture for specified UUID (" + uuid + ")! (GUI/Cache/Entry)"); - return ItemDefaults.getErrorSkullItem(i18n, I18NDict.GUI.Admin.Cache.ENTRY, NickoBukkit.getInstance().getMojangAPI().getUUIDName(uuid)); + Nicko.getInstance().getLogger().warning("Unable to get Head texture for specified UUID (" + uuid + ")! (GUI/Cache/Entry)"); + return ItemDefaults.getErrorSkullItem(playerLanguage, LanguageKey.GUI.Admin.Cache.ENTRY, Nicko.getInstance().getMojangAPI().getUUIDName(uuid)); } }); this.uuid = uuid; @@ -54,8 +54,8 @@ public class CacheEntryItem extends AsyncItem { new ChoiceGUI(player, new ChoiceCallback() { @Override public void onConfirm() { - final I18N i18n = new I18N(player); - player.sendMessage(i18n.translate(I18NDict.Event.Admin.Cache.INVALIDATE_ENTRY, true, name)); + final PlayerLanguage playerLanguage = new PlayerLanguage(player); + player.sendMessage(playerLanguage.translateWithWhoosh(LanguageKey.Event.Admin.Cache.INVALIDATE_ENTRY, name)); mojangAPI.eraseFromCache(uuid); } diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/CacheStatisticsItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/CacheStatisticsItem.java index 71feec5..6e4653a 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/CacheStatisticsItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/CacheStatisticsItem.java @@ -4,9 +4,9 @@ import com.google.common.cache.CacheStats; import com.google.common.cache.LoadingCache; import org.bukkit.Material; import org.bukkit.entity.Player; -import xyz.ineanto.nicko.NickoBukkit; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.Nicko; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.ineanto.nicko.mojang.MojangSkin; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; @@ -14,19 +14,19 @@ import xyz.xenondevs.invui.item.impl.SuppliedItem; import java.util.Optional; public class CacheStatisticsItem { - private final I18N i18n; + private final PlayerLanguage playerLanguage; public CacheStatisticsItem(Player player) { - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); } public SuppliedItem get() { return new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.BOOK); - final LoadingCache> cache = NickoBukkit.getInstance().getMojangAPI().getSkinCache(); + final LoadingCache> cache = Nicko.getInstance().getMojangAPI().getSkinCache(); final CacheStats stats = cache.stats(); - return i18n.translateItem(builder, I18NDict.GUI.Admin.Cache.STATISTICS, + return playerLanguage.translateItem(builder, LanguageKey.GUI.Admin.Cache.STATISTICS, stats.requestCount(), Math.round(cache.size()) ); diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/InvalidateCacheItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/InvalidateCacheItem.java index 16d2592..55ffbf9 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/InvalidateCacheItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/InvalidateCacheItem.java @@ -3,32 +3,32 @@ package xyz.ineanto.nicko.gui.items.admin.cache; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; -import xyz.ineanto.nicko.NickoBukkit; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.Nicko; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; public class InvalidateCacheItem { - private final I18N i18n; + private final PlayerLanguage playerLanguage; public InvalidateCacheItem(Player player) { - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); } public SuppliedItem get() { return new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.TNT); - return i18n.translateItem(builder, I18NDict.GUI.Admin.Cache.INVALIDATE_CACHE); + return playerLanguage.translateItem(builder, LanguageKey.GUI.Admin.Cache.INVALIDATE_CACHE); }, (click) -> { final ClickType clickType = click.getClickType(); if (clickType.isLeftClick() || clickType.isRightClick()) { click.getEvent().getView().close(); final Player player = click.getPlayer(); - final I18N i18n = new I18N(player); - player.sendMessage(i18n.translate(I18NDict.Event.Admin.Cache.INVALIDATE_CACHE, true)); - NickoBukkit.getInstance().getMojangAPI().getSkinCache().invalidateAll(); + final PlayerLanguage playerLanguage = new PlayerLanguage(player); + player.sendMessage(playerLanguage.translateWithWhoosh(LanguageKey.Event.Admin.Cache.INVALIDATE_CACHE)); + Nicko.getInstance().getMojangAPI().getSkinCache().invalidateAll(); return true; } return false; diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/InvalidateSkinItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/InvalidateSkinItem.java index cbf690c..f39034d 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/InvalidateSkinItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/admin/cache/InvalidateSkinItem.java @@ -4,22 +4,22 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import xyz.ineanto.nicko.gui.InvalidateSkinGUI; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; public class InvalidateSkinItem { - private final I18N i18n; + private final PlayerLanguage playerLanguage; public InvalidateSkinItem(Player player) { - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); } public SuppliedItem get() { return new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.PAPER); - return i18n.translateItem(builder, I18NDict.GUI.Admin.Cache.INVALIDATE_SKIN); + return playerLanguage.translateItem(builder, LanguageKey.GUI.Admin.Cache.INVALIDATE_SKIN); }, (click) -> { final ClickType clickType = click.getClickType(); if (clickType.isLeftClick() || clickType.isRightClick()) { diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/admin/check/PlayerInformationItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/admin/check/PlayerInformationItem.java index 9ea7dcb..a439944 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/admin/check/PlayerInformationItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/admin/check/PlayerInformationItem.java @@ -6,14 +6,14 @@ import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.appearance.AppearanceManager; import xyz.ineanto.nicko.gui.ChoiceGUI; import xyz.ineanto.nicko.gui.PlayerCheckGUI; import xyz.ineanto.nicko.gui.items.ItemDefaults; import xyz.ineanto.nicko.gui.items.common.choice.ChoiceCallback; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.ineanto.nicko.profile.NickoProfile; import xyz.xenondevs.invui.item.builder.AbstractItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder; @@ -28,20 +28,20 @@ import java.util.Optional; public class PlayerInformationItem extends AsyncItem { private final Player target; private final NickoProfile profile; - private final I18N i18n; + private final PlayerLanguage playerLanguage; - public PlayerInformationItem(I18N i18n, Player target) { + public PlayerInformationItem(PlayerLanguage playerLanguage, Player target) { super(new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.PAINTING); - return i18n.translateItem(builder, I18NDict.GUI.LOADING); + return playerLanguage.translateItem(builder, LanguageKey.GUI.LOADING); }, (click -> true)).getItemProvider(), () -> { try { final SkullBuilder skull = new SkullBuilder(target.getUniqueId()); - final Optional optionalProfile = NickoBukkit.getInstance().getDataStore().getData(target.getUniqueId()); + final Optional optionalProfile = Nicko.getInstance().getDataStore().getData(target.getUniqueId()); if (optionalProfile.isPresent()) { final NickoProfile profile = optionalProfile.get(); - final AbstractItemBuilder headItem = i18n.translateItem(skull, I18NDict.GUI.Admin.CHECK, + final AbstractItemBuilder headItem = playerLanguage.translateItem(skull, LanguageKey.GUI.Admin.CHECK, target.getName(), (profile.hasData() ? "" : ""), (profile.getName() == null ? "N/A" : profile.getName()), @@ -56,16 +56,16 @@ public class PlayerInformationItem extends AsyncItem { return headItem; } } catch (MojangApiUtils.MojangApiException | IOException e) { - NickoBukkit.getInstance().getLogger().severe("Unable to get head for specified UUID ( " + target.getUniqueId() + ")! (GUI/PlayerCheck)"); + Nicko.getInstance().getLogger().severe("Unable to get head for specified UUID ( " + target.getUniqueId() + ")! (GUI/PlayerCheck)"); } - return ItemDefaults.getErrorSkullItem(i18n, I18NDict.GUI.Admin.CHECK, + return ItemDefaults.getErrorSkullItem(playerLanguage, LanguageKey.GUI.Admin.CHECK, "§c§l?!?", "§7N/A", "§7N/A", "§7N/A" ); }); - this.i18n = i18n; + this.playerLanguage = playerLanguage; this.target = target; - this.profile = NickoBukkit.getInstance().getDataStore().getData(target.getUniqueId()).orElse(NickoProfile.EMPTY_PROFILE); + this.profile = Nicko.getInstance().getDataStore().getData(target.getUniqueId()).orElse(NickoProfile.EMPTY_PROFILE); } @Override @@ -78,7 +78,7 @@ public class PlayerInformationItem extends AsyncItem { public void onConfirm() { final AppearanceManager appearanceManager = new AppearanceManager(target); appearanceManager.reset(); - player.sendMessage(i18n.translate(I18NDict.Event.Admin.Check.REMOVE_SKIN, true, target.getName())); + player.sendMessage(playerLanguage.translate(LanguageKey.Event.Admin.Check.REMOVE_SKIN, true, target.getName())); } @Override diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/appearance/ChangeBothItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/appearance/ChangeBothItem.java index 0308eef..2e19cf2 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/appearance/ChangeBothItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/appearance/ChangeBothItem.java @@ -4,22 +4,22 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import xyz.ineanto.nicko.anvil.AnvilManager; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; public class ChangeBothItem { - private final I18N i18n; + private final PlayerLanguage playerLanguage; public ChangeBothItem(Player player) { - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); } public SuppliedItem get() { return new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.TOTEM_OF_UNDYING); - return i18n.translateItem(builder, I18NDict.GUI.Home.CHANGE_BOTH); + return playerLanguage.translateItem(builder, LanguageKey.GUI.Home.CHANGE_BOTH); }, click -> { final ClickType clickType = click.getClickType(); if (clickType.isLeftClick() || clickType.isRightClick()) { diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/appearance/ChangeNameItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/appearance/ChangeNameItem.java index 0f83859..744851c 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/appearance/ChangeNameItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/appearance/ChangeNameItem.java @@ -4,22 +4,22 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import xyz.ineanto.nicko.anvil.AnvilManager; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; public class ChangeNameItem { - private final I18N i18n; + private final PlayerLanguage playerLanguage; public ChangeNameItem(Player player) { - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); } public SuppliedItem get() { return new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.NAME_TAG); - return i18n.translateItem(builder, I18NDict.GUI.Home.CHANGE_NAME); + return playerLanguage.translateItem(builder, LanguageKey.GUI.Home.CHANGE_NAME); }, click -> { final ClickType clickType = click.getClickType(); if (clickType.isLeftClick() || clickType.isRightClick()) { diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/appearance/ChangeSkinItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/appearance/ChangeSkinItem.java index 7e6e865..6c78cc8 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/appearance/ChangeSkinItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/appearance/ChangeSkinItem.java @@ -2,11 +2,11 @@ package xyz.ineanto.nicko.gui.items.appearance; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.anvil.AnvilManager; import xyz.ineanto.nicko.gui.items.ItemDefaults; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.item.builder.SkullBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.util.MojangApiUtils; @@ -14,11 +14,11 @@ import xyz.xenondevs.invui.util.MojangApiUtils; import java.io.IOException; public class ChangeSkinItem { - private final I18N i18n; + private final PlayerLanguage playerLanguage; private final Player player; public ChangeSkinItem(Player player) { - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); this.player = player; } @@ -26,10 +26,10 @@ public class ChangeSkinItem { return new SuppliedItem(() -> { try { final SkullBuilder builder = new SkullBuilder(player.getName()); - return i18n.translateItem(builder, I18NDict.GUI.Home.CHANGE_SKIN); + return playerLanguage.translateItem(builder, LanguageKey.GUI.Home.CHANGE_SKIN); } catch (MojangApiUtils.MojangApiException | IOException e) { - NickoBukkit.getInstance().getLogger().warning("Unable to get Head texture for specified player (" + player.getName() + ")! (GUI/Home)"); - return ItemDefaults.getErrorSkullItem(i18n, I18NDict.GUI.Home.CHANGE_SKIN); + Nicko.getInstance().getLogger().warning("Unable to get Head texture for specified player (" + player.getName() + ")! (GUI/Home)"); + return ItemDefaults.getErrorSkullItem(playerLanguage, LanguageKey.GUI.Home.CHANGE_SKIN); } }, click -> { final ClickType clickType = click.getClickType(); diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/common/GoBackItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/common/GoBackItem.java index afd1e3d..1dc7752 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/common/GoBackItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/common/GoBackItem.java @@ -2,24 +2,24 @@ package xyz.ineanto.nicko.gui.items.common; import org.bukkit.Material; import org.bukkit.entity.Player; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.window.Window; public class GoBackItem { - private final I18N i18n; + private final PlayerLanguage playerLanguage; public GoBackItem(Player player) { - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); } public SuppliedItem get(Gui gui, String parentTitle) { return new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.ARROW); - return i18n.translateItem(builder, I18NDict.GUI.GO_BACK); + return playerLanguage.translateItem(builder, LanguageKey.GUI.GO_BACK); }, click -> { click.getEvent().getView().close(); Window.single().setGui(gui).setTitle(parentTitle).open(click.getPlayer()); diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/common/ScrollDownItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/common/ScrollDownItem.java index 9961660..64054d9 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/common/ScrollDownItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/common/ScrollDownItem.java @@ -4,26 +4,26 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.bukkit.Material; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; -import xyz.ineanto.nicko.i18n.Translation; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; +import xyz.ineanto.nicko.language.Translation; import xyz.xenondevs.invui.gui.ScrollGui; import xyz.xenondevs.invui.item.ItemProvider; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.controlitem.ScrollItem; public class ScrollDownItem extends ScrollItem { - final I18N i18n; + final PlayerLanguage playerLanguage; - public ScrollDownItem(I18N i18n) { + public ScrollDownItem(PlayerLanguage playerLanguage) { super(1); - this.i18n = i18n; + this.playerLanguage = playerLanguage; } @Override public ItemProvider getItemProvider(ScrollGui gui) { final ItemBuilder builder = new ItemBuilder(Material.GREEN_STAINED_GLASS_PANE); - final Translation translation = i18n.translateAndReplace(I18NDict.GUI.SCROLL_DOWN); + final Translation translation = playerLanguage.translateAndReplace(LanguageKey.GUI.SCROLL_DOWN); builder.setDisplayName(Component.text(translation.name()).content()); if (!gui.canScroll(1)) { // Lore serialization diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/common/ScrollUpItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/common/ScrollUpItem.java index fb7d98a..8f1fe88 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/common/ScrollUpItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/common/ScrollUpItem.java @@ -4,26 +4,26 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.bukkit.Material; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; -import xyz.ineanto.nicko.i18n.Translation; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; +import xyz.ineanto.nicko.language.Translation; import xyz.xenondevs.invui.gui.ScrollGui; import xyz.xenondevs.invui.item.ItemProvider; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.controlitem.ScrollItem; public class ScrollUpItem extends ScrollItem { - final I18N i18n; + final PlayerLanguage playerLanguage; - public ScrollUpItem(I18N i18n) { + public ScrollUpItem(PlayerLanguage playerLanguage) { super(-1); - this.i18n = i18n; + this.playerLanguage = playerLanguage; } @Override public ItemProvider getItemProvider(ScrollGui gui) { final ItemBuilder builder = new ItemBuilder(Material.RED_STAINED_GLASS_PANE); - final Translation translation = i18n.translateAndReplace(I18NDict.GUI.SCROLL_UP); + final Translation translation = playerLanguage.translateAndReplace(LanguageKey.GUI.SCROLL_UP); builder.setDisplayName(Component.text(translation.name()).content()); if (!gui.canScroll(-1)) { // Lore serialization diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/common/choice/CancelItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/common/choice/CancelItem.java index 257b2ae..8fa5c40 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/common/choice/CancelItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/common/choice/CancelItem.java @@ -2,24 +2,24 @@ package xyz.ineanto.nicko.gui.items.common.choice; import org.bukkit.Material; import org.bukkit.entity.Player; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; public class CancelItem { - private final I18N i18n; + private final PlayerLanguage playerLanguage; private final ChoiceCallback callback; public CancelItem(Player player, ChoiceCallback callback) { - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); this.callback = callback; } public SuppliedItem get() { return new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.RED_STAINED_GLASS_PANE); - return i18n.translateItem(builder, I18NDict.GUI.Choice.CANCEL); + return playerLanguage.translateItem(builder, LanguageKey.GUI.Choice.CANCEL); }, click -> { click.getEvent().getView().close(); callback.onCancel(); diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/common/choice/ConfirmItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/common/choice/ConfirmItem.java index 397b839..95fcacb 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/common/choice/ConfirmItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/common/choice/ConfirmItem.java @@ -2,24 +2,24 @@ package xyz.ineanto.nicko.gui.items.common.choice; import org.bukkit.Material; import org.bukkit.entity.Player; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; public class ConfirmItem { - private final I18N i18n; + private final PlayerLanguage playerLanguage; private final ChoiceCallback callback; public ConfirmItem(Player player, ChoiceCallback callback) { - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); this.callback = callback; } public SuppliedItem get() { return new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.GREEN_STAINED_GLASS_PANE); - return i18n.translateItem(builder, I18NDict.GUI.Choice.CONFIRM); + return playerLanguage.translateItem(builder, LanguageKey.GUI.Choice.CONFIRM); }, click -> { click.getEvent().getView().close(); callback.onConfirm(); diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/home/AdminAccessItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/home/AdminAccessItem.java index a0b0873..478431d 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/home/AdminAccessItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/home/AdminAccessItem.java @@ -4,22 +4,22 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import xyz.ineanto.nicko.gui.AdminGUI; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; public class AdminAccessItem { - private final I18N i18n; + private final PlayerLanguage playerLanguage; public AdminAccessItem(Player player) { - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); } public SuppliedItem get() { return new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.COMMAND_BLOCK_MINECART); - return i18n.translateItem(builder, I18NDict.GUI.Home.ADMIN); + return playerLanguage.translateItem(builder, LanguageKey.GUI.Home.ADMIN); }, click -> { final ClickType clickType = click.getClickType(); if (clickType.isLeftClick() || clickType.isRightClick()) { diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/home/ExitItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/home/ExitItem.java index c78a230..2d04be3 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/home/ExitItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/home/ExitItem.java @@ -3,22 +3,22 @@ package xyz.ineanto.nicko.gui.items.home; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; public class ExitItem { - private final I18N i18n; + private final PlayerLanguage playerLanguage; public ExitItem(Player player) { - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); } public SuppliedItem get() { return new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.OAK_DOOR); - return i18n.translateItem(builder, I18NDict.GUI.EXIT); + return playerLanguage.translateItem(builder, LanguageKey.GUI.EXIT); }, click -> { click.getEvent().getView().close(); final ClickType clickType = click.getClickType(); diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/home/RandomSkinItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/home/RandomSkinItem.java index 35260a2..9ddd6af 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/home/RandomSkinItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/home/RandomSkinItem.java @@ -2,11 +2,11 @@ package xyz.ineanto.nicko.gui.items.home; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.appearance.ActionResult; import xyz.ineanto.nicko.appearance.AppearanceManager; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.ineanto.nicko.profile.NickoProfile; import xyz.xenondevs.invui.item.builder.SkullBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; @@ -14,19 +14,19 @@ import xyz.xenondevs.invui.item.impl.SuppliedItem; import java.util.Optional; public class RandomSkinItem { - private final I18N i18n; - private final NickoBukkit instance; + private final PlayerLanguage playerLanguage; + private final Nicko instance; public RandomSkinItem(Player player) { - this.instance = NickoBukkit.getInstance(); - this.i18n = new I18N(player); + this.instance = Nicko.getInstance(); + this.playerLanguage = new PlayerLanguage(player); } public SuppliedItem get() { return new SuppliedItem(() -> { final SkullBuilder.HeadTexture texture = new SkullBuilder.HeadTexture("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzgzMTEzOGMyMDYxMWQzMDJjNDIzZmEzMjM3MWE3NDNkMTc0MzdhMTg5NzNjMzUxOTczNDQ3MGE3YWJiNCJ9fX0="); final SkullBuilder builder = new SkullBuilder(texture); - return i18n.translateItem(builder, I18NDict.GUI.Home.RANDOM_SKIN); + return playerLanguage.translateItem(builder, LanguageKey.GUI.Home.RANDOM_SKIN); }, (event) -> { final Player player = event.getPlayer(); final ClickType clickType = event.getClickType(); @@ -42,12 +42,12 @@ public class RandomSkinItem { final AppearanceManager appearanceManager = new AppearanceManager(player); final ActionResult result = appearanceManager.updatePlayer(true, false); if (!result.isError()) { - player.sendMessage(i18n.translate(I18NDict.Event.Appearance.Set.OK, true)); + player.sendMessage(playerLanguage.translate(LanguageKey.Event.Appearance.Set.OK, true)); } else { - player.sendMessage(i18n.translate( - I18NDict.Event.Appearance.Set.ERROR, + player.sendMessage(playerLanguage.translate( + LanguageKey.Event.Appearance.Set.ERROR, true, - i18n.translate(result.getErrorKey(), false) + playerLanguage.translate(result.getErrorKey(), false) ) ); } diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/home/ResetItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/home/ResetItem.java index b328a52..f00a806 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/home/ResetItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/home/ResetItem.java @@ -4,8 +4,8 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import xyz.ineanto.nicko.appearance.AppearanceManager; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.ineanto.nicko.profile.NickoProfile; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; @@ -13,16 +13,16 @@ import xyz.xenondevs.invui.item.impl.SuppliedItem; import java.util.Optional; public class ResetItem { - private final I18N i18n; + private final PlayerLanguage playerLanguage; public ResetItem(Player player) { - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); } public SuppliedItem get() { return new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.TNT); - return i18n.translateItem(builder, I18NDict.GUI.Home.RESET); + return playerLanguage.translateItem(builder, LanguageKey.GUI.Home.RESET); }, (event) -> { final Player player = event.getPlayer(); final ClickType clickType = event.getClickType(); @@ -30,16 +30,16 @@ public class ResetItem { final Optional optionalProfile = NickoProfile.get(player); optionalProfile.ifPresent(profile -> { if (!profile.hasData()) { - player.sendMessage(i18n.translate(I18NDict.Event.Appearance.Remove.MISSING, true)); + player.sendMessage(playerLanguage.translate(LanguageKey.Event.Appearance.Remove.MISSING, true)); event.getEvent().getView().close(); return; } final AppearanceManager appearanceManager = new AppearanceManager(player); if (!appearanceManager.reset().isError()) { - player.sendMessage(i18n.translate(I18NDict.Event.Appearance.Remove.OK, true)); + player.sendMessage(playerLanguage.translate(LanguageKey.Event.Appearance.Remove.OK, true)); } else { - player.sendMessage(i18n.translate(I18NDict.Event.Appearance.Remove.ERROR, true)); + player.sendMessage(playerLanguage.translate(LanguageKey.Event.Appearance.Remove.ERROR, true)); } }); return true; diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/home/SettingsAccessItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/home/SettingsAccessItem.java index 06aa368..ea3f849 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/home/SettingsAccessItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/home/SettingsAccessItem.java @@ -4,22 +4,22 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import xyz.ineanto.nicko.gui.SettingsGUI; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; public class SettingsAccessItem { - private final I18N i18n; + private final PlayerLanguage playerLanguage; public SettingsAccessItem(Player player) { - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); } public SuppliedItem get() { return new SuppliedItem(() -> { final ItemBuilder builder = new ItemBuilder(Material.COMPARATOR); - return i18n.translateItem(builder, I18NDict.GUI.Home.SETTINGS); + return playerLanguage.translateItem(builder, LanguageKey.GUI.Home.SETTINGS); }, click -> { final ClickType clickType = click.getClickType(); if (clickType.isLeftClick() || clickType.isRightClick()) { diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/settings/LanguageCyclingItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/settings/LanguageCyclingItem.java index 9c691ec..b836991 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/settings/LanguageCyclingItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/settings/LanguageCyclingItem.java @@ -6,12 +6,12 @@ import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Player; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.gui.SettingsGUI; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; -import xyz.ineanto.nicko.i18n.Translation; -import xyz.ineanto.nicko.i18n.Locale; +import xyz.ineanto.nicko.language.Language; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; +import xyz.ineanto.nicko.language.Translation; import xyz.ineanto.nicko.profile.NickoProfile; import xyz.ineanto.nicko.storage.PlayerDataStore; import xyz.xenondevs.invui.item.ItemProvider; @@ -28,26 +28,26 @@ import java.util.Optional; public class LanguageCyclingItem { private final Player player; private final ItemProvider[] providers; - private final I18N i18n; + private final PlayerLanguage playerLanguage; public LanguageCyclingItem(Player player) { this.player = player; - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); this.providers = getItems(); } public AbstractItem get() { - final PlayerDataStore dataStore = NickoBukkit.getInstance().getDataStore(); + final PlayerDataStore dataStore = Nicko.getInstance().getDataStore(); final Optional profile = dataStore.getData(player.getUniqueId()); if (profile.isPresent()) { final NickoProfile nickoProfile = profile.get(); int localeOrdinal = nickoProfile.getLocale().ordinal(); return CycleItem.withStateChangeHandler((observer, integer) -> { observer.playSound(player, Sound.UI_BUTTON_CLICK, 1f, 0.707107f); // 0.707107 ~= C - nickoProfile.setLocale(Locale.values()[integer]); + nickoProfile.setLocale(Language.values()[integer]); player.getOpenInventory().close(); if (dataStore.updateCache(player.getUniqueId(), nickoProfile).isError()) { - player.sendMessage(i18n.translate(I18NDict.Event.Settings.ERROR, true)); + player.sendMessage(playerLanguage.translate(LanguageKey.Event.Settings.ERROR, true)); } else { new SettingsGUI(player).open(); } @@ -57,14 +57,14 @@ public class LanguageCyclingItem { return new SimpleItem(ItemProvider.EMPTY); } - private ItemProvider generateItem(Locale locale, List locales) { + private ItemProvider generateItem(Language language, List languages) { final ItemBuilder builder = new ItemBuilder(Material.OAK_SIGN); - final Translation translation = i18n.translateAndReplace(I18NDict.GUI.Settings.LANGUAGE); - final Translation cyclingChoicesTranslation = i18n.translateAndReplace(I18NDict.GUI.Settings.CYCLING_CHOICES); + final Translation translation = playerLanguage.translateAndReplace(LanguageKey.GUI.Settings.LANGUAGE); + final Translation cyclingChoicesTranslation = playerLanguage.translateAndReplace(LanguageKey.GUI.Settings.CYCLING_CHOICES); builder.setDisplayName(Component.text(translation.name()).content()); - for (Locale value : locales) { - if (locale != value) { + for (Language value : languages) { + if (language != value) { builder.addLoreLines("§7> " + value.getName()); } else { builder.addLoreLines("§6§l> §f" + value.getName()); @@ -80,13 +80,13 @@ public class LanguageCyclingItem { } private ItemProvider[] getItems() { - final NickoBukkit instance = NickoBukkit.getInstance(); + final Nicko instance = Nicko.getInstance(); final ArrayList items = new ArrayList<>(); - final ArrayList localesToGenerate = new ArrayList<>(); + final ArrayList localesToGenerate = new ArrayList<>(); - Collections.addAll(localesToGenerate, Locale.values()); + Collections.addAll(localesToGenerate, Language.values()); if (!instance.getNickoConfig().isCustomLocale()) { - localesToGenerate.remove(Locale.CUSTOM); + localesToGenerate.remove(Language.CUSTOM); } localesToGenerate.forEach(locale -> items.add(generateItem(locale, localesToGenerate))); return items.toArray(new ItemProvider[]{}); diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/settings/RandomSkinCyclingItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/settings/RandomSkinCyclingItem.java index af62565..abe356a 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/settings/RandomSkinCyclingItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/settings/RandomSkinCyclingItem.java @@ -5,10 +5,10 @@ import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.bukkit.Sound; import org.bukkit.entity.Player; -import xyz.ineanto.nicko.NickoBukkit; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; -import xyz.ineanto.nicko.i18n.Translation; +import xyz.ineanto.nicko.Nicko; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; +import xyz.ineanto.nicko.language.Translation; import xyz.ineanto.nicko.profile.NickoProfile; import xyz.ineanto.nicko.storage.PlayerDataStore; import xyz.xenondevs.invui.item.ItemProvider; @@ -22,11 +22,11 @@ import java.util.Optional; public class RandomSkinCyclingItem { private final Player player; private final ItemProvider[] providers; - private final I18N i18n; + private final PlayerLanguage playerLanguage; public RandomSkinCyclingItem(Player player) { this.player = player; - this.i18n = new I18N(player); + this.playerLanguage = new PlayerLanguage(player); this.providers = new ItemProvider[]{ getItemProviderForValue(true), getItemProviderForValue(false) @@ -34,7 +34,7 @@ public class RandomSkinCyclingItem { } public AbstractItem get() { - final PlayerDataStore dataStore = NickoBukkit.getInstance().getDataStore(); + final PlayerDataStore dataStore = Nicko.getInstance().getDataStore(); final Optional profile = dataStore.getData(player.getUniqueId()); if (profile.isPresent()) { final NickoProfile nickoProfile = profile.get(); @@ -43,7 +43,7 @@ public class RandomSkinCyclingItem { observer.playSound(player, Sound.UI_BUTTON_CLICK, 1f, 0.707107f); // 0.707107 ~= C nickoProfile.setRandomSkin(integer != 1); if (dataStore.updateCache(player.getUniqueId(), nickoProfile).isError()) { - player.sendMessage(i18n.translate(I18NDict.Event.Settings.ERROR, true)); + player.sendMessage(playerLanguage.translate(LanguageKey.Event.Settings.ERROR, true)); player.getOpenInventory().close(); } }, localeOrdinal, providers); @@ -55,12 +55,12 @@ public class RandomSkinCyclingItem { private ItemProvider getItemProviderForValue(boolean enabled) { final SkullBuilder.HeadTexture texture = new SkullBuilder.HeadTexture("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzgzMTEzOGMyMDYxMWQzMDJjNDIzZmEzMjM3MWE3NDNkMTc0MzdhMTg5NzNjMzUxOTczNDQ3MGE3YWJiNCJ9fX0="); final SkullBuilder builder = new SkullBuilder(texture); - final Translation randomSkinTranslation = i18n.translateAndReplace(I18NDict.GUI.Settings.RANDOM_SKIN); - final Translation toggleableTranslation = i18n.translateAndReplace(I18NDict.GUI.Settings.TOGGLEABLE_BUTTON, + final Translation randomSkinTranslation = playerLanguage.translateAndReplace(LanguageKey.GUI.Settings.RANDOM_SKIN); + final Translation toggleableTranslation = playerLanguage.translateAndReplace(LanguageKey.GUI.Settings.TOGGLEABLE_BUTTON, (enabled ? "§7>§c" : "§6§l>§c§l"), (enabled ? "§6§l>§a§l" : "§7>§a") ); - final Translation cyclingChoicesTranslation = i18n.translateAndReplace(I18NDict.GUI.Settings.CYCLING_CHOICES); + final Translation cyclingChoicesTranslation = playerLanguage.translateAndReplace(LanguageKey.GUI.Settings.CYCLING_CHOICES); builder.setDisplayName(randomSkinTranslation.name()); toggleableTranslation.lore().forEach(builder::addLoreLines); diff --git a/src/main/java/xyz/ineanto/nicko/i18n/CustomLocale.java b/src/main/java/xyz/ineanto/nicko/language/CustomLanguage.java similarity index 58% rename from src/main/java/xyz/ineanto/nicko/i18n/CustomLocale.java rename to src/main/java/xyz/ineanto/nicko/language/CustomLanguage.java index 5007070..23e5c7e 100644 --- a/src/main/java/xyz/ineanto/nicko/i18n/CustomLocale.java +++ b/src/main/java/xyz/ineanto/nicko/language/CustomLanguage.java @@ -1,40 +1,41 @@ -package xyz.ineanto.nicko.i18n; +package xyz.ineanto.nicko.language; import com.github.jsixface.YamlConfig; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.version.Version; -import java.io.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; import java.nio.file.Files; -import java.util.logging.Logger; -public class CustomLocale { - private static final Logger logger = Logger.getLogger("CustomLocale"); - private static final File directory = new File(NickoBukkit.getInstance().getDataFolder(), "/locale/"); +public class CustomLanguage { + private static final File directory = new File(Nicko.getInstance().getDataFolder(), "/locale/"); private static final File file = new File(directory, "locale.yml"); private final String version; private final Version versionObject; private final YamlConfig yamlFile; - public CustomLocale() throws IOException { + public CustomLanguage() throws IOException { this.yamlFile = new YamlConfig(new FileInputStream(file)); this.version = yamlFile.getString("version"); this.versionObject = Version.fromString(version); } - public static void dumpIntoFile(Locale locale) throws IOException { - if (locale == Locale.CUSTOM) return; + public static void dumpIntoFile(Language language) throws IOException { + if (language == Language.CUSTOM) return; if (file.exists()) return; if (!directory.exists()) directory.mkdirs(); - final String localeFileName = locale.getCode() + ".yml"; + final String localeFileName = language.getCode() + ".yml"; try { - final InputStream resource = NickoBukkit.getInstance().getResource(localeFileName); + final InputStream resource = Nicko.getInstance().getResource(localeFileName); Files.copy(resource, file.toPath()); resource.close(); } catch (IOException e) { - logger.severe("Unable to dump Locale: " + locale.getCode() + "!"); + Nicko.getInstance().getLogger().severe("Unable to dump Locale: " + language.getCode() + "!"); } } diff --git a/src/main/java/xyz/ineanto/nicko/i18n/Locale.java b/src/main/java/xyz/ineanto/nicko/language/Language.java similarity index 64% rename from src/main/java/xyz/ineanto/nicko/i18n/Locale.java rename to src/main/java/xyz/ineanto/nicko/language/Language.java index e548692..a13b78d 100644 --- a/src/main/java/xyz/ineanto/nicko/i18n/Locale.java +++ b/src/main/java/xyz/ineanto/nicko/language/Language.java @@ -1,26 +1,26 @@ -package xyz.ineanto.nicko.i18n; +package xyz.ineanto.nicko.language; import xyz.ineanto.nicko.version.Version; import java.io.Serializable; -public enum Locale implements Serializable { +public enum Language implements Serializable { ENGLISH("en", "English"), FRENCH("fr", "Français"), CUSTOM("cm", "Server Custom"); - public static final Version VERSION = new Version(1, 1, 3); + public static final Version VERSION = new Version(1, 1, 4); private final String code; private transient final String name; - Locale(String code, String name) { + Language(String code, String name) { this.code = code; this.name = name; } - public static Locale fromCode(String code) { - for (Locale value : values()) { + public static Language fromCode(String code) { + for (Language value : values()) { if (code.equals(value.code)) return value; } return ENGLISH; diff --git a/src/main/java/xyz/ineanto/nicko/i18n/I18NDict.java b/src/main/java/xyz/ineanto/nicko/language/LanguageKey.java similarity index 96% rename from src/main/java/xyz/ineanto/nicko/i18n/I18NDict.java rename to src/main/java/xyz/ineanto/nicko/language/LanguageKey.java index 674fe7c..0dea8af 100644 --- a/src/main/java/xyz/ineanto/nicko/i18n/I18NDict.java +++ b/src/main/java/xyz/ineanto/nicko/language/LanguageKey.java @@ -1,6 +1,10 @@ -package xyz.ineanto.nicko.i18n; +package xyz.ineanto.nicko.language; + +public class LanguageKey { + public static final String PREFIX = "prefix"; + public static final String WHOOSH = "whoosh"; + public static final String OOPS = "oops"; -public class I18NDict { public static class Error { public static final String ERROR_KEY = "error."; diff --git a/src/main/java/xyz/ineanto/nicko/i18n/I18N.java b/src/main/java/xyz/ineanto/nicko/language/PlayerLanguage.java similarity index 69% rename from src/main/java/xyz/ineanto/nicko/i18n/I18N.java rename to src/main/java/xyz/ineanto/nicko/language/PlayerLanguage.java index df2f440..94e1785 100644 --- a/src/main/java/xyz/ineanto/nicko/i18n/I18N.java +++ b/src/main/java/xyz/ineanto/nicko/language/PlayerLanguage.java @@ -1,11 +1,11 @@ -package xyz.ineanto.nicko.i18n; +package xyz.ineanto.nicko.language; import com.github.jsixface.YamlConfig; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.bukkit.entity.Player; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.profile.NickoProfile; import xyz.xenondevs.invui.item.builder.AbstractItemBuilder; @@ -16,22 +16,22 @@ import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; -public class I18N { +public class PlayerLanguage { private final MessageFormat formatter = new MessageFormat(""); private final Logger logger = Logger.getLogger("I18N"); - private final NickoBukkit instance = NickoBukkit.getInstance(); + private final Nicko instance = Nicko.getInstance(); private final Pattern replacementPattern = Pattern.compile("(?ms)\\{\\d+}"); private final YamlConfig yamlConfig; - private final Locale playerLocale; + private final Language playerLanguage; - public I18N(Player player) { + public PlayerLanguage(Player player) { final Optional optionalProfile = NickoProfile.get(player); - this.playerLocale = optionalProfile.map(NickoProfile::getLocale).orElse(Locale.ENGLISH); + this.playerLanguage = optionalProfile.map(NickoProfile::getLocale).orElse(Language.ENGLISH); this.yamlConfig = getYamlConfig(); } - public I18N(Locale locale) { - this.playerLocale = locale; + public PlayerLanguage(Language language) { + this.playerLanguage = language; this.yamlConfig = getYamlConfig(); } @@ -60,7 +60,7 @@ public class I18N { final ArrayList lore = readList(loreKey); if (name == null && lore == null) { - logger.warning(nameKey + " doesn't exists! Is your language file outdated?"); + Nicko.getInstance().getLogger().warning(nameKey + " doesn't exists! Is your language file outdated?"); return new Translation(nameKey, new ArrayList<>(List.of(loreKey))); } @@ -92,7 +92,7 @@ public class I18N { // If it does, replace the content with the args at position replacementIndex if (replacementIndex < args.length && args[replacementIndex] != null) { - // Replace with the corresponding varargs index + // Replace it with the corresponding varargs index toTranslate.set(lineIndex, currentLine.replace("{" + replacementIndex + "}", args[replacementIndex].toString())); replacementIndex++; } @@ -115,11 +115,34 @@ public class I18N { public String translate(String key, boolean prefix, Object... arguments) { final String translation = readString(key); + try { formatter.applyPattern(translation); - return (prefix ? instance.getNickoConfig().getPrefix() : "") + formatter.format(arguments); + return (prefix ? getPrefix() + " " : "") + formatter.format(arguments); } catch (Exception e) { - return (prefix ? instance.getNickoConfig().getPrefix() : "") + key; + return (prefix ? getPrefix() + " " : "") + key; + } + } + + public String translateWithWhoosh(String key, Object... arguments) { + final String translation = readStringWithMiniMessage(key); + + try { + formatter.applyPattern(translation); + return getWhoosh() + " " + formatter.format(arguments); + } catch (Exception e) { + return getWhoosh() + " " + key; + } + } + + public String translateWithOops(String key, Object... arguments) { + final String translation = readStringWithMiniMessage(key); + + try { + formatter.applyPattern(translation); + return getOops() + " " + formatter.format(arguments); + } catch (Exception e) { + return getOops() + " " + key; } } @@ -127,15 +150,31 @@ public class I18N { return yamlConfig.getString(key); } + private String readStringWithMiniMessage(String key) { + return LegacyComponentSerializer.legacySection().serialize(MiniMessage.miniMessage().deserialize(readString(key))); + } + private ArrayList readList(String key) { return yamlConfig.getStringList(key); } + private String getPrefix() { + return readStringWithMiniMessage(LanguageKey.PREFIX); + } + + private String getWhoosh() { + return readStringWithMiniMessage(LanguageKey.WHOOSH); + } + + private String getOops() { + return readStringWithMiniMessage(LanguageKey.OOPS); + } + private YamlConfig getYamlConfig() { - if (playerLocale == Locale.CUSTOM) { + if (playerLanguage == Language.CUSTOM) { return instance.getCustomLocale().getYamlFile(); } else { - final InputStream resource = instance.getResource(playerLocale.getCode() + ".yml"); + final InputStream resource = instance.getResource(playerLanguage.getCode() + ".yml"); return new YamlConfig(resource); } } diff --git a/src/main/java/xyz/ineanto/nicko/i18n/Translation.java b/src/main/java/xyz/ineanto/nicko/language/Translation.java similarity index 72% rename from src/main/java/xyz/ineanto/nicko/i18n/Translation.java rename to src/main/java/xyz/ineanto/nicko/language/Translation.java index 2d610f6..13d295b 100644 --- a/src/main/java/xyz/ineanto/nicko/i18n/Translation.java +++ b/src/main/java/xyz/ineanto/nicko/language/Translation.java @@ -1,4 +1,4 @@ -package xyz.ineanto.nicko.i18n; +package xyz.ineanto.nicko.language; import java.util.ArrayList; diff --git a/src/main/java/xyz/ineanto/nicko/migration/ConfigurationMigrator.java b/src/main/java/xyz/ineanto/nicko/migration/ConfigurationMigrator.java index 465392f..9a47db5 100644 --- a/src/main/java/xyz/ineanto/nicko/migration/ConfigurationMigrator.java +++ b/src/main/java/xyz/ineanto/nicko/migration/ConfigurationMigrator.java @@ -1,6 +1,6 @@ package xyz.ineanto.nicko.migration; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.config.Configuration; import xyz.ineanto.nicko.config.ConfigurationManager; @@ -9,9 +9,9 @@ import java.nio.file.Files; import java.nio.file.StandardCopyOption; public class ConfigurationMigrator implements Migrator { - private final NickoBukkit instance; + private final Nicko instance; - public ConfigurationMigrator(NickoBukkit instance) { + public ConfigurationMigrator(Nicko instance) { this.instance = instance; } @@ -27,7 +27,12 @@ public class ConfigurationMigrator implements Migrator { instance.getLogger().info("Migrating configuration file to match the current version..."); try { Files.copy(configurationManager.getFile().toPath(), configurationManager.getBackupFile().toPath(), StandardCopyOption.REPLACE_EXISTING); - configurationManager.saveDefaultConfig(); + if (configurationManager.getFile().delete()) { + configurationManager.saveDefaultConfig(); + instance.getLogger().info("Successfully migrated your configuration file!"); + } else { + instance.getLogger().severe("Failed to migrate your configuration!"); + } } catch (IOException e) { instance.getLogger().severe("Failed to migrate your configuration!"); } diff --git a/src/main/java/xyz/ineanto/nicko/migration/CustomLocaleMigrator.java b/src/main/java/xyz/ineanto/nicko/migration/CustomLocaleMigrator.java index 35f12ee..073df5f 100644 --- a/src/main/java/xyz/ineanto/nicko/migration/CustomLocaleMigrator.java +++ b/src/main/java/xyz/ineanto/nicko/migration/CustomLocaleMigrator.java @@ -1,8 +1,8 @@ package xyz.ineanto.nicko.migration; -import xyz.ineanto.nicko.NickoBukkit; -import xyz.ineanto.nicko.i18n.CustomLocale; -import xyz.ineanto.nicko.i18n.Locale; +import xyz.ineanto.nicko.Nicko; +import xyz.ineanto.nicko.language.CustomLanguage; +import xyz.ineanto.nicko.language.Language; import java.io.File; import java.io.IOException; @@ -12,31 +12,33 @@ import java.time.ZoneId; import java.time.format.DateTimeFormatter; public class CustomLocaleMigrator implements Migrator { - private final NickoBukkit instance; - private final CustomLocale customLocale; + private final Nicko instance; + private final CustomLanguage customLanguage; - public CustomLocaleMigrator(NickoBukkit instance, CustomLocale customLocale) { + public CustomLocaleMigrator(Nicko instance, CustomLanguage customLanguage) { this.instance = instance; - this.customLocale = customLocale; + this.customLanguage = customLanguage; } @Override public void migrate() { // Migrate custom locale (1.1.0-RC1) - if (customLocale.getVersionObject() == null - || customLocale.getVersion().isEmpty() - || customLocale.getVersionObject().compareTo(Locale.VERSION) != 0) { - instance.getLogger().info("Migrating the custom locale (" + customLocale.getVersion() + ") to match the current version (" + Locale.VERSION + ")..."); + if (customLanguage.getVersionObject() == null + || customLanguage.getVersion().isEmpty() + || customLanguage.getVersionObject().compareTo(Language.VERSION) != 0) { + instance.getLogger().info("Migrating the custom locale (" + customLanguage.getVersion() + ") to match the current version (" + Language.VERSION + ")..."); final String date = Instant.now().atZone(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("dd-MM-yyyy")); - final File backupFile = new File(customLocale.getDirectory(), "locale-" + date + ".yml"); + final File backupFile = new File(customLanguage.getDirectory(), "locale-" + date + ".yml"); try { - Files.copy(customLocale.getFile().toPath(), backupFile.toPath()); - if (customLocale.getFile().delete()) { - CustomLocale.dumpIntoFile(Locale.ENGLISH); + Files.copy(customLanguage.getFile().toPath(), backupFile.toPath()); + if (customLanguage.getFile().delete()) { + CustomLanguage.dumpIntoFile(Language.ENGLISH); + instance.getLogger().info("Successfully migrated the custom locale."); + } else { + instance.getLogger().severe("Failed to migrate the custom locale!"); } - instance.getLogger().info("Successfully migrated the custom locale."); } catch (IOException e) { instance.getLogger().severe("Failed to migrate the custom locale!"); } diff --git a/src/main/java/xyz/ineanto/nicko/placeholder/NickoExpansion.java b/src/main/java/xyz/ineanto/nicko/placeholder/NickoExpansion.java index f2e9303..a592b8d 100644 --- a/src/main/java/xyz/ineanto/nicko/placeholder/NickoExpansion.java +++ b/src/main/java/xyz/ineanto/nicko/placeholder/NickoExpansion.java @@ -4,16 +4,16 @@ import me.clip.placeholderapi.expansion.PlaceholderExpansion; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.profile.NickoProfile; import java.util.Optional; public class NickoExpansion extends PlaceholderExpansion { - private final NickoBukkit instance; + private final Nicko instance; - public NickoExpansion(NickoBukkit instance) { + public NickoExpansion(Nicko instance) { this.instance = instance; } diff --git a/src/main/java/xyz/ineanto/nicko/profile/NickoProfile.java b/src/main/java/xyz/ineanto/nicko/profile/NickoProfile.java index d70f7ff..27c5c3c 100644 --- a/src/main/java/xyz/ineanto/nicko/profile/NickoProfile.java +++ b/src/main/java/xyz/ineanto/nicko/profile/NickoProfile.java @@ -1,26 +1,26 @@ package xyz.ineanto.nicko.profile; import org.bukkit.entity.Player; -import xyz.ineanto.nicko.NickoBukkit; -import xyz.ineanto.nicko.i18n.Locale; +import xyz.ineanto.nicko.Nicko; +import xyz.ineanto.nicko.language.Language; import xyz.ineanto.nicko.storage.PlayerDataStore; import java.util.Optional; import java.util.UUID; public class NickoProfile implements Cloneable { - public static final PlayerDataStore dataStore = NickoBukkit.getInstance().getDataStore(); - public static final NickoProfile EMPTY_PROFILE = new NickoProfile(null, null, Locale.ENGLISH, true); + public static final PlayerDataStore dataStore = Nicko.getInstance().getDataStore(); + public static final NickoProfile EMPTY_PROFILE = new NickoProfile(null, null, Language.ENGLISH, true); private String name; private String skin; - private Locale locale; + private Language language; private boolean randomSkin; - public NickoProfile(String name, String skin, Locale locale, boolean randomSkin) { + public NickoProfile(String name, String skin, Language language, boolean randomSkin) { this.name = name; this.skin = skin; - this.locale = locale; + this.language = language; this.randomSkin = randomSkin; } @@ -52,12 +52,12 @@ public class NickoProfile implements Cloneable { this.skin = skin; } - public Locale getLocale() { - return locale; + public Language getLocale() { + return language; } - public void setLocale(Locale locale) { - this.locale = locale; + public void setLocale(Language language) { + this.language = language; } public boolean isRandomSkin() { @@ -73,7 +73,7 @@ public class NickoProfile implements Cloneable { return "NickoProfile{" + "name='" + name + '\'' + ", skin='" + skin + '\'' + - ", locale=" + locale + + ", locale=" + language + ", randomSkin=" + randomSkin + '}'; } diff --git a/src/main/java/xyz/ineanto/nicko/storage/PlayerDataStore.java b/src/main/java/xyz/ineanto/nicko/storage/PlayerDataStore.java index 94fca27..2ba648f 100644 --- a/src/main/java/xyz/ineanto/nicko/storage/PlayerDataStore.java +++ b/src/main/java/xyz/ineanto/nicko/storage/PlayerDataStore.java @@ -3,7 +3,7 @@ package xyz.ineanto.nicko.storage; import org.bukkit.entity.Player; import xyz.ineanto.nicko.appearance.ActionResult; import xyz.ineanto.nicko.config.Configuration; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.ineanto.nicko.mojang.MojangAPI; import xyz.ineanto.nicko.mojang.MojangUtils; import xyz.ineanto.nicko.profile.NickoProfile; @@ -34,7 +34,7 @@ public class PlayerDataStore { public ActionResult updateCache(UUID uuid, NickoProfile profile) { if (storage.isError() || cache.isError()) { - return ActionResult.error(I18NDict.Error.CACHE); + return ActionResult.error(LanguageKey.Error.CACHE); } getCache().cache(uuid, profile); diff --git a/src/main/java/xyz/ineanto/nicko/storage/json/JSONStorage.java b/src/main/java/xyz/ineanto/nicko/storage/json/JSONStorage.java index b34a2e9..7e804be 100644 --- a/src/main/java/xyz/ineanto/nicko/storage/json/JSONStorage.java +++ b/src/main/java/xyz/ineanto/nicko/storage/json/JSONStorage.java @@ -2,7 +2,7 @@ package xyz.ineanto.nicko.storage.json; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.appearance.ActionResult; import xyz.ineanto.nicko.profile.NickoProfile; import xyz.ineanto.nicko.storage.Storage; @@ -16,7 +16,7 @@ import java.util.logging.Logger; public class JSONStorage extends Storage { private final Logger logger = Logger.getLogger("JSONStorage"); private final Gson gson = new GsonBuilder().serializeNulls().setPrettyPrinting().create(); - private final File directory = new File(NickoBukkit.getInstance().getDataFolder() + "/players/"); + private final File directory = new File(Nicko.getInstance().getDataFolder() + "/players/"); private JSONStorageProvider provider; @@ -54,14 +54,14 @@ public class JSONStorage extends Storage { @Override public boolean isStored(UUID uuid) { - final File directory = new File(NickoBukkit.getInstance().getDataFolder() + "/players/"); + final File directory = new File(Nicko.getInstance().getDataFolder() + "/players/"); final File file = new File(directory, uuid.toString() + ".json"); return file.exists(); } @Override public Optional retrieve(UUID uuid) { - final File directory = new File(NickoBukkit.getInstance().getDataFolder() + "/players/"); + final File directory = new File(Nicko.getInstance().getDataFolder() + "/players/"); final File file = new File(directory, uuid.toString() + ".json"); try (FileReader fileReader = new FileReader(file)) { try (BufferedReader reader = new BufferedReader(fileReader)) { @@ -75,7 +75,7 @@ public class JSONStorage extends Storage { @Override public ActionResult delete(UUID uuid) { - final File directory = new File(NickoBukkit.getInstance().getDataFolder() + "/players/"); + final File directory = new File(Nicko.getInstance().getDataFolder() + "/players/"); final File file = new File(directory, uuid.toString() + ".json"); if (file.delete() || !file.exists()) { return ActionResult.ok(); diff --git a/src/main/java/xyz/ineanto/nicko/storage/mariadb/MariaDBStorage.java b/src/main/java/xyz/ineanto/nicko/storage/mariadb/MariaDBStorage.java index ae33a46..f2590a1 100644 --- a/src/main/java/xyz/ineanto/nicko/storage/mariadb/MariaDBStorage.java +++ b/src/main/java/xyz/ineanto/nicko/storage/mariadb/MariaDBStorage.java @@ -2,7 +2,7 @@ package xyz.ineanto.nicko.storage.mariadb; import xyz.ineanto.nicko.appearance.ActionResult; import xyz.ineanto.nicko.config.Configuration; -import xyz.ineanto.nicko.i18n.Locale; +import xyz.ineanto.nicko.language.Language; import xyz.ineanto.nicko.profile.NickoProfile; import xyz.ineanto.nicko.storage.Storage; @@ -91,7 +91,7 @@ public class MariaDBStorage extends Storage { bungeecord = resultSet.getBoolean("bungeecord"); } - final NickoProfile profile = new NickoProfile(name, skin, Locale.fromCode(locale), bungeecord); + final NickoProfile profile = new NickoProfile(name, skin, Language.fromCode(locale), bungeecord); return Optional.of(profile); } catch (SQLException e) { logger.warning("Couldn't fetch profile: " + e.getMessage()); diff --git a/src/main/java/xyz/ineanto/nicko/storage/mysql/MySQLStorage.java b/src/main/java/xyz/ineanto/nicko/storage/mysql/MySQLStorage.java index 830b430..bd3d22a 100644 --- a/src/main/java/xyz/ineanto/nicko/storage/mysql/MySQLStorage.java +++ b/src/main/java/xyz/ineanto/nicko/storage/mysql/MySQLStorage.java @@ -2,7 +2,7 @@ package xyz.ineanto.nicko.storage.mysql; import xyz.ineanto.nicko.appearance.ActionResult; import xyz.ineanto.nicko.config.Configuration; -import xyz.ineanto.nicko.i18n.Locale; +import xyz.ineanto.nicko.language.Language; import xyz.ineanto.nicko.profile.NickoProfile; import xyz.ineanto.nicko.storage.Storage; @@ -91,7 +91,7 @@ public class MySQLStorage extends Storage { bungeecord = resultSet.getBoolean("bungeecord"); } - final NickoProfile profile = new NickoProfile(name, skin, Locale.fromCode(locale), bungeecord); + final NickoProfile profile = new NickoProfile(name, skin, Language.fromCode(locale), bungeecord); return Optional.of(profile); } catch (SQLException e) { logger.warning("Couldn't fetch profile: " + e.getMessage()); diff --git a/src/main/java/xyz/ineanto/nicko/storage/redis/RedisCache.java b/src/main/java/xyz/ineanto/nicko/storage/redis/RedisCache.java index a3c0525..7cdfa35 100644 --- a/src/main/java/xyz/ineanto/nicko/storage/redis/RedisCache.java +++ b/src/main/java/xyz/ineanto/nicko/storage/redis/RedisCache.java @@ -6,7 +6,7 @@ import redis.clients.jedis.Jedis; import redis.clients.jedis.exceptions.JedisException; import xyz.ineanto.nicko.appearance.ActionResult; import xyz.ineanto.nicko.config.Configuration; -import xyz.ineanto.nicko.i18n.I18NDict; +import xyz.ineanto.nicko.language.LanguageKey; import xyz.ineanto.nicko.profile.NickoProfile; import xyz.ineanto.nicko.storage.Cache; import xyz.ineanto.nicko.storage.CacheProvider; @@ -40,7 +40,7 @@ public class RedisCache extends Cache { jedis.set("nicko:" + uuid.toString(), gson.toJson(profile)); return ActionResult.ok(); } catch (JedisException exception) { - return ActionResult.error(I18NDict.Error.CACHE); + return ActionResult.error(LanguageKey.Error.CACHE); } } @@ -72,7 +72,7 @@ public class RedisCache extends Cache { jedis.del("nicko:" + uuid.toString()); return ActionResult.ok(); } catch (JedisException exception) { - return ActionResult.error(I18NDict.Error.CACHE); + return ActionResult.error(LanguageKey.Error.CACHE); } } } diff --git a/src/main/java/xyz/ineanto/nicko/wrapper/WrapperPlayServerRespawn.java b/src/main/java/xyz/ineanto/nicko/wrapper/WrapperPlayServerRespawn.java index 9b66380..02a8d06 100644 --- a/src/main/java/xyz/ineanto/nicko/wrapper/WrapperPlayServerRespawn.java +++ b/src/main/java/xyz/ineanto/nicko/wrapper/WrapperPlayServerRespawn.java @@ -4,8 +4,6 @@ import com.comphenix.protocol.PacketType; import com.comphenix.protocol.events.InternalStructure; import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.reflect.StructureModifier; -import com.comphenix.protocol.reflect.accessors.Accessors; -import com.comphenix.protocol.utility.MinecraftReflection; import com.comphenix.protocol.utility.MinecraftVersion; import com.comphenix.protocol.wrappers.EnumWrappers; import com.comphenix.protocol.wrappers.MinecraftKey; @@ -54,24 +52,23 @@ public class WrapperPlayServerRespawn extends AbstractPacket { // 1.20.5 to 1.21.1 // why is life so hard? - // Get the key from that class - final MinecraftKey key = MinecraftKey.fromHandle( - Accessors.getFieldAccessor( - TYPE.getPacketClass(), - MinecraftReflection.getResourceKey(), - true - ) - .get(spawnInfoStructure)); + /**final Class commonPlayerInfoClazz = MinecraftReflection.getMinecraftClass("network.protocol.game.CommonPlayerSpawnInfo"); + Object commonSpawnData = Accessors.getFieldAccessor(TYPE.getPacketClass(), commonPlayerInfoClazz, true).getField().get(TYPE.getPacketClass()); + final MinecraftKey key = MinecraftKey.fromHandle( + Accessors.getFieldAccessor( + commonPlayerInfoClazz, + MinecraftReflection.getResourceKey(), + true + ) + .get(spawnInfoStructure)); - // Set the key - Accessors.getFieldAccessor( - spawnInfoStructure.getClass(), - MinecraftReflection.getResourceKey(), - true - ) - .set(spawnInfoStructure, key); - - handle.getStructures().writeSafely(0, spawnInfoStructure); + // Set the key + Accessors.getFieldAccessor( + commonPlayerInfoClazz, + MinecraftReflection.getResourceKey(), + true + ) + .set(commonSpawnData, key);*/ } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index e554244..5f56371 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,15 +1,11 @@ # Nicko ${version} - Config: # Specifies the configuration version, don't change. -version: "1.0.8" +version: "1.0.9" -############ -# LANGUAGE # -############ - -# Nicko's messages prefix. -# Accepted values: any string -prefix: "§6Nicko §8§l| §r" +# +# Language +# # Nicko will copy the English locale as "lang.yml" # and will use the translations in that file when "Server Custom" @@ -17,11 +13,10 @@ prefix: "§6Nicko §8§l| §r" # Accepted values: false (Disabled), true (Enabled) customLocale: false -########### -# STORAGE # -########### +# +# Storage +# -# This configuration section manages SQL. sql: # Indicates wherever the data will be stored locally # inside a .json file or in an SQL database. @@ -44,7 +39,7 @@ sql: # Accepted values: any string password: "password" -# This configuration section manages Redis (BungeeCord support). +# This configuration section manages Redis (enabled BungeeCord support). # It is used to transfer data between multiple servers. redis: # Indicates wherever the data will be stored through diff --git a/src/main/resources/en.yml b/src/main/resources/en.yml index a32d1df..1a6027e 100644 --- a/src/main/resources/en.yml +++ b/src/main/resources/en.yml @@ -3,43 +3,47 @@ # Specifies the configuration version, don't change. version: "1.1.4" +prefix: "NICKO" +whoosh: "WHOOSH!" +oops: "OOPS!" + error: - permission: "§cYou do not have the required permission." - invalid_username: "§cThis is not a valid Minecraft username." - mojang_name: "There is no Minecraft account with this name." - mojang_skin: "This Minecraft account has no skin." - cache: "Unable to get skin from the cache." + permission: "You're missing the permission to do that." + invalid_username: "This is an invalid Minecraft username." + mojang_name: "There's is not Minecraft account with this username." + mojang_skin: "This Minecraft account has no skin." + cache: "Unable to get data from the cache." event: settings: - error: "§cUnable to update your settings. §7§o({0})" + error: "Wasn't able to update your settings! ({0})" appearance: set: - error: "§cUnable to apply your disguise. §7§o({0})" - ok: "§fDisguise applied." + error: "Wasn't able to apply your disguise! ({0})" + ok: "You're now disguised." restore: - error: "§cUnable to apply your previous disguise back. §7§o({0})" - ok: "§aYour previous active disguise has been applied." + error: "Wasn't able to apply the previous disguise! ({0})" + ok: "Disguise restored from last time." remove: - error: "§cUnable to remove your disguise. It will be reset on your next login." - missing: "§cYou are not under a disguise." - ok: "§fDisguise removed." + error: "Wasn't able to remove your disguise!." + missing: "You're not currently disguised." + ok: "Undisguised successfully." admin: cache: - invalidate_cache: "§fComplete cache invalidated." - invalidate_entry: "§6{0} §fhas been invalidated." + invalidate_cache: "Cache purged." + invalidate_entry: "{0} was purged." check: - remove_skin: "§fSkin removed from player." + remove_skin: "Skin removed from player." gui: title: home: "Nicko - Home" - settings: "Nicko > Settings" - admin: "Nicko > Administration" - check: "Nicko > Admin... > Check" - confirm: "... > Confirm action" - cache: "Nicko > Admin... > Cache" - invalidate_skin: "... > Cache > Invalidate" + settings: "Settings" + admin: "Administration" + check: "Player Management" + confirm: "Are you sure?" + cache: "Cache Management" + invalidate_skin: "Purge cache..." exit: name: "Exit" @@ -52,7 +56,7 @@ gui: error: name: "Error!" lore: - - "The item texture failed to load, but it might still work." + - "The item failed to load, but it might still work." loading: name: "Loading..." choice: diff --git a/src/main/resources/fr.yml b/src/main/resources/fr.yml index dd9a400..9f9419f 100644 --- a/src/main/resources/fr.yml +++ b/src/main/resources/fr.yml @@ -3,43 +3,47 @@ # Précise la version de la configuration, ne pas changer. version: "1.1.4" +prefix: "NICKO" +whoosh: "WHOOSH!" +oops: "OOPS!" + error: - permission: "§cVous ne possédez pas la permission." - invalid_username: "§cLe pseudo n'est pas un pseudo Minecraft valide." - mojang_name: "Compte Minecraft inexistant" - mojang_skin: "Skin Minecraft invalide" - cache: "Erreur du cache" + permission: "Vous n'avez pas la permission de faire cela." + invalid_username: "Nom d'utilisateur Minecraft invalide." + mojang_name: "Aucun compte Minecraft associé à ce nom d'utilisateur." + mojang_skin: "Ce compte Minecraft n'a pas de skin." + cache: "Impossible de récupérer les données depuis le cache." event: settings: - error: "§cImpossible de mettre à jour vos paramètres. §7§o({0})" + error: "Impossible de mettre à jour vos paramètres ! ({0})" appearance: set: - error: "§cImpossible d''appliquer votre déguisement. §7§o({0})" - ok: "§fDéguisement appliqué." + error: "Impossible d''appliquer votre déguisement ! ({0})" + ok: "Déguisement appliqué avec succès." restore: - error: "§cImpossible d''appliquer votre précédent déguisement. §7§o({0})" - ok: "§aVotre précédent déguisement a été appliqué." + error: "Impossible d''appliquer le précédent déguisement ! ({0})" + ok: "Votre précédent déguisement a été appliqué." remove: - error: "§cImpossible de retirer votre déguisement. Il sera réinitialisé à votre prochaine reconnexion." - missing: "§cVous n''avez pas de déguisement." - ok: "§fDéguisement retiré." + error: "Impossible de retirer votre déguisement." + missing: "Vous n''avez pas de déguisement." + ok: "Déguisement retiré." admin: cache: - invalidate_cache: "§fCache complet invalidé." - invalidate_entry: "§6{0} §fa été invalidé." + invalidate_cache: "Cache complet invalidé." + invalidate_entry: "{0} a été invalidé." check: - remove_skin: "§fSkin retiré du joueur." + remove_skin: "Déguisement retiré au joueur." gui: title: home: "Nicko - Accueil" - settings: "Nicko > Paramètres" - admin: "Nicko > Administration" - check: "Nicko > Admin... > Vérification" - confirm: "... > Confirmer l''action" - cache: "Nicko > Admin... > Cache" - invalidate_skin: "... > Cache > Invalider" + settings: "Paramètres" + admin: "Administration" + check: "Gestion des Joueurs" + confirm: "Êtes-vous sûr ?" + cache: "Gestion du Cache" + invalidate_skin: "Purge du cache..." exit: name: "Quitter" @@ -50,7 +54,7 @@ gui: lore: - "Ce boutton est désactivé." error: - name: "Erreur!" + name: "Erreur !" lore: - "La texture de l'objet n'a pas chargé" - "correctement mais il fonctionne encore." @@ -121,10 +125,10 @@ gui: - "Nb. de skin dans le cache: {1}" - "Le cache est vidé toutes les 24 heures." invalidate_cache: - name: "Invalider le cache" + name: "Purger le cache" lore: - "DÉCONSEILLÉ" - - "Invalide l'entièreté du cache des skin." + - "Purge l'entièreté du cache des skin." - "Ne retire pas les déguisements des joueurs." invalidate_skin: name: "Invalider un skin..." diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 7adaa7e..6f525c4 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: Nicko -main: xyz.ineanto.nicko.NickoBukkit +main: xyz.ineanto.nicko.Nicko version: ${version} author: Ineanto description: "The feature packed, next generation disguise plugin for Minecraft." diff --git a/src/test/java/xyz/ineanto/nicko/test/NickoPluginTest.java b/src/test/java/xyz/ineanto/nicko/test/NickoPluginTest.java index 8b848dd..5ce3aea 100644 --- a/src/test/java/xyz/ineanto/nicko/test/NickoPluginTest.java +++ b/src/test/java/xyz/ineanto/nicko/test/NickoPluginTest.java @@ -5,19 +5,19 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.config.Configuration; import static org.junit.jupiter.api.Assertions.assertNotNull; public class NickoPluginTest { - private static NickoBukkit plugin; + private static Nicko plugin; @BeforeAll public static void setup() { final Configuration config = Configuration.DEFAULT; MockBukkit.mock(); - plugin = MockBukkit.load(NickoBukkit.class, config); + plugin = MockBukkit.load(Nicko.class, config); } @Test diff --git a/src/test/java/xyz/ineanto/nicko/test/appearance/RandomNameTest.java b/src/test/java/xyz/ineanto/nicko/test/appearance/RandomNameTest.java index 008dcca..057c076 100644 --- a/src/test/java/xyz/ineanto/nicko/test/appearance/RandomNameTest.java +++ b/src/test/java/xyz/ineanto/nicko/test/appearance/RandomNameTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.appearance.random.RandomNameFetcher; import xyz.ineanto.nicko.config.Configuration; import xyz.ineanto.nicko.mojang.MojangUtils; @@ -13,13 +13,13 @@ import xyz.ineanto.nicko.mojang.MojangUtils; import static org.junit.jupiter.api.Assertions.*; public class RandomNameTest { - private static NickoBukkit plugin; + private static Nicko plugin; @BeforeAll public static void setup() { final Configuration config = Configuration.DEFAULT; MockBukkit.mock(); - plugin = MockBukkit.load(NickoBukkit.class, config); + plugin = MockBukkit.load(Nicko.class, config); } @Test diff --git a/src/test/java/xyz/ineanto/nicko/test/config/ConfigurationTest.java b/src/test/java/xyz/ineanto/nicko/test/config/ConfigurationTest.java index cd78d77..4a371fa 100644 --- a/src/test/java/xyz/ineanto/nicko/test/config/ConfigurationTest.java +++ b/src/test/java/xyz/ineanto/nicko/test/config/ConfigurationTest.java @@ -5,19 +5,19 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.config.Configuration; import static org.junit.jupiter.api.Assertions.assertFalse; public class ConfigurationTest { - private static NickoBukkit plugin; + private static Nicko plugin; @BeforeAll public static void setup() { MockBukkit.mock(); final Configuration config = Configuration.DEFAULT; - plugin = MockBukkit.load(NickoBukkit.class, config); + plugin = MockBukkit.load(Nicko.class, config); } @Test diff --git a/src/test/java/xyz/ineanto/nicko/test/config/ConfigurationVersionTest.java b/src/test/java/xyz/ineanto/nicko/test/config/ConfigurationVersionTest.java index 3535d7d..d13fa80 100644 --- a/src/test/java/xyz/ineanto/nicko/test/config/ConfigurationVersionTest.java +++ b/src/test/java/xyz/ineanto/nicko/test/config/ConfigurationVersionTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.config.Configuration; import xyz.ineanto.nicko.config.DefaultDataSources; @@ -16,17 +16,13 @@ public class ConfigurationVersionTest { public static void setup() { MockBukkit.mock(); final Configuration configuration = Configuration.DEFAULT; - MockBukkit.load(NickoBukkit.class, configuration); + MockBukkit.load(Nicko.class, configuration); } @Test @DisplayName("Compare configuration version") public void compareConfigurationVersion() { - final Configuration configuration = new Configuration(Configuration.VERSION.toString(), - DefaultDataSources.SQL_EMPTY, - DefaultDataSources.REDIS_EMPTY, - "", - false); + final Configuration configuration = Configuration.DEFAULT; assertEquals(configuration.getVersionObject().compareTo(Configuration.VERSION), 0); } @@ -36,7 +32,6 @@ public class ConfigurationVersionTest { final Configuration configuration = new Configuration("24.1.0", DefaultDataSources.SQL_EMPTY, DefaultDataSources.REDIS_EMPTY, - "", false); assertEquals(configuration.getVersionObject().compareTo(Configuration.VERSION), 1); } @@ -47,7 +42,6 @@ public class ConfigurationVersionTest { final Configuration configuration = new Configuration("0.23.3", DefaultDataSources.SQL_EMPTY, DefaultDataSources.REDIS_EMPTY, - "", false); assertEquals(configuration.getVersionObject().compareTo(Configuration.VERSION), -1); } @@ -58,7 +52,6 @@ public class ConfigurationVersionTest { final Configuration configuration = new Configuration(null, DefaultDataSources.SQL_EMPTY, DefaultDataSources.REDIS_EMPTY, - "", false); assertEquals(configuration.getVersionObject().compareTo(Configuration.VERSION), -1); } diff --git a/src/test/java/xyz/ineanto/nicko/test/i18n/ItemTranslationTest.java b/src/test/java/xyz/ineanto/nicko/test/i18n/ItemTranslationTest.java index 5ea2322..3c17c5d 100644 --- a/src/test/java/xyz/ineanto/nicko/test/i18n/ItemTranslationTest.java +++ b/src/test/java/xyz/ineanto/nicko/test/i18n/ItemTranslationTest.java @@ -6,12 +6,12 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.config.Configuration; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; -import xyz.ineanto.nicko.i18n.Translation; -import xyz.ineanto.nicko.i18n.Locale; +import xyz.ineanto.nicko.language.Language; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; +import xyz.ineanto.nicko.language.Translation; import static org.junit.jupiter.api.Assertions.*; @@ -22,14 +22,14 @@ public class ItemTranslationTest { public static void setup() { final Configuration config = Configuration.DEFAULT; MockBukkit.mock(); - MockBukkit.load(NickoBukkit.class, config); + MockBukkit.load(Nicko.class, config); } @Test @DisplayName("Translate Item Without Lore") public void translateItemTranslationWithoutLore() { - final I18N i18n = new I18N(Locale.FRENCH); - final Translation translation = i18n.translateAndReplace(I18NDict.GUI.GO_BACK); + final PlayerLanguage playerLanguage = new PlayerLanguage(Language.FRENCH); + final Translation translation = playerLanguage.translateAndReplace(LanguageKey.GUI.GO_BACK); assertTrue(translation.lore().isEmpty()); assertEquals(translation.name(), "Retour"); } @@ -37,12 +37,12 @@ public class ItemTranslationTest { @Test @DisplayName("Translate Item") public void translateItemLore() { - final I18N i18n = new I18N(Locale.FRENCH); + final PlayerLanguage playerLanguage = new PlayerLanguage(Language.FRENCH); - final Translation test = i18n.translateAndReplace(I18NDict.GUI.Settings.TOGGLEABLE_BUTTON, "EST", "EST"); + final Translation test = playerLanguage.translateAndReplace(LanguageKey.GUI.Settings.TOGGLEABLE_BUTTON, "EST", "EST"); test.lore().forEach(System.out::println); - final Translation translation = i18n.translateAndReplace(I18NDict.GUI.Admin.Cache.STATISTICS, "1", "1"); + final Translation translation = playerLanguage.translateAndReplace(LanguageKey.GUI.Admin.Cache.STATISTICS, "1", "1"); assertFalse(translation.lore().isEmpty()); assertEquals("Nombre de requêtes: 1", translation.lore().get(0)); assertEquals("Nb. de skin dans le cache: 1", translation.lore().get(1)); diff --git a/src/test/java/xyz/ineanto/nicko/test/i18n/TranslationTest.java b/src/test/java/xyz/ineanto/nicko/test/i18n/TranslationTest.java index 6ed49c6..bac0c45 100644 --- a/src/test/java/xyz/ineanto/nicko/test/i18n/TranslationTest.java +++ b/src/test/java/xyz/ineanto/nicko/test/i18n/TranslationTest.java @@ -5,11 +5,11 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.config.Configuration; -import xyz.ineanto.nicko.i18n.I18N; -import xyz.ineanto.nicko.i18n.I18NDict; -import xyz.ineanto.nicko.i18n.Locale; +import xyz.ineanto.nicko.language.Language; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.language.LanguageKey; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -18,14 +18,14 @@ public class TranslationTest { public static void setup() { final Configuration config = Configuration.DEFAULT; MockBukkit.mock(); - MockBukkit.load(NickoBukkit.class, config); + MockBukkit.load(Nicko.class, config); } @Test @DisplayName("Translate Line With Replacement") public void translateItemTranslationWithoutLore() { - final I18N i18n = new I18N(Locale.FRENCH); - final String translation = i18n.translate(I18NDict.Event.Settings.ERROR, false, "Test"); + final PlayerLanguage playerLanguage = new PlayerLanguage(Language.FRENCH); + final String translation = playerLanguage.translate(LanguageKey.Event.Settings.ERROR, false, "Test"); assertEquals("§cImpossible de mettre à jour vos paramètres. §7§o(Test)", translation); } diff --git a/src/test/java/xyz/ineanto/nicko/test/migration/MigrationTest.java b/src/test/java/xyz/ineanto/nicko/test/migration/MigrationTest.java index cdc12b0..170f367 100644 --- a/src/test/java/xyz/ineanto/nicko/test/migration/MigrationTest.java +++ b/src/test/java/xyz/ineanto/nicko/test/migration/MigrationTest.java @@ -4,19 +4,22 @@ import be.seeseemelk.mockbukkit.MockBukkit; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.config.Configuration; import xyz.ineanto.nicko.config.DefaultDataSources; -import xyz.ineanto.nicko.i18n.CustomLocale; +import xyz.ineanto.nicko.language.CustomLanguage; import xyz.ineanto.nicko.migration.CustomLocaleMigrator; -import java.io.*; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; import java.nio.charset.StandardCharsets; import static org.junit.jupiter.api.Assertions.assertEquals; public class MigrationTest { - private static NickoBukkit plugin; + private static Nicko plugin; private static File folder; private static File localeFile; @@ -27,9 +30,8 @@ public class MigrationTest { final Configuration configuration = new Configuration(Configuration.VERSION.toString(), DefaultDataSources.SQL_EMPTY, DefaultDataSources.REDIS_EMPTY, - "§6Nicko §8§l| §r", true); - plugin = MockBukkit.load(NickoBukkit.class, configuration); + plugin = MockBukkit.load(Nicko.class, configuration); folder = new File(plugin.getDataFolder(), "/locale/"); localeFile = new File(folder, "locale.yml"); folder.mkdirs(); @@ -40,26 +42,26 @@ public class MigrationTest { public void testLanguageFileMigration() throws IOException { final String content = """ # Nicko - Language File: - + # hello I'm the invalid version version: "1.0.0" - """; + """; BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(localeFile)); outputStream.write(content.getBytes(StandardCharsets.UTF_8)); outputStream.flush(); // Get wrong locale - final CustomLocale customLocaleBeforeMigration = new CustomLocale(); - assertEquals(customLocaleBeforeMigration.getVersion(), "1.0.0"); + final CustomLanguage customLanguageBeforeMigration = new CustomLanguage(); + assertEquals(customLanguageBeforeMigration.getVersion(), "1.0.0"); // Migrate the wrong locale to the correct one - final CustomLocaleMigrator localeMigrator = new CustomLocaleMigrator(plugin, customLocaleBeforeMigration); + final CustomLocaleMigrator localeMigrator = new CustomLocaleMigrator(plugin, customLanguageBeforeMigration); localeMigrator.migrate(); // Get the migrated locale - final CustomLocale customLocaleMigrated = new CustomLocale(); - assertEquals(customLocaleMigrated.getVersion(), "1.1.0"); + final CustomLanguage customLanguageMigrated = new CustomLanguage(); + assertEquals(customLanguageMigrated.getVersion(), "1.1.0"); } @AfterAll diff --git a/src/test/java/xyz/ineanto/nicko/test/storage/MapCacheTest.java b/src/test/java/xyz/ineanto/nicko/test/storage/MapCacheTest.java index d1dc888..2cc8ca7 100644 --- a/src/test/java/xyz/ineanto/nicko/test/storage/MapCacheTest.java +++ b/src/test/java/xyz/ineanto/nicko/test/storage/MapCacheTest.java @@ -7,7 +7,7 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.config.Configuration; import xyz.ineanto.nicko.profile.NickoProfile; @@ -16,14 +16,14 @@ import java.util.Optional; import static org.junit.jupiter.api.Assertions.assertTrue; public class MapCacheTest { - private static NickoBukkit plugin; + private static Nicko plugin; private static PlayerMock player; @BeforeAll public static void setup() { final Configuration config = Configuration.DEFAULT; final ServerMock server = MockBukkit.mock(); - plugin = MockBukkit.load(NickoBukkit.class, config); + plugin = MockBukkit.load(Nicko.class, config); player = server.addPlayer(); } diff --git a/src/test/java/xyz/ineanto/nicko/test/storage/RedisCacheTest.java b/src/test/java/xyz/ineanto/nicko/test/storage/RedisCacheTest.java index f6b1f2c..a5ce971 100644 --- a/src/test/java/xyz/ineanto/nicko/test/storage/RedisCacheTest.java +++ b/src/test/java/xyz/ineanto/nicko/test/storage/RedisCacheTest.java @@ -4,7 +4,7 @@ import be.seeseemelk.mockbukkit.MockBukkit; import be.seeseemelk.mockbukkit.ServerMock; import be.seeseemelk.mockbukkit.entity.PlayerMock; import org.junit.jupiter.api.*; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.appearance.ActionResult; import xyz.ineanto.nicko.config.Configuration; import xyz.ineanto.nicko.config.DataSourceConfiguration; @@ -19,7 +19,7 @@ import static org.junit.jupiter.api.Assertions.*; @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class RedisCacheTest { - private static NickoBukkit plugin; + private static Nicko plugin; private static PlayerMock player; @BeforeAll @@ -28,10 +28,9 @@ public class RedisCacheTest { "", DefaultDataSources.SQL_EMPTY, new DataSourceConfiguration(true, "127.0.0.1", 6379, "", ""), - "", false); final ServerMock server = MockBukkit.mock(); - plugin = MockBukkit.load(NickoBukkit.class, config); + plugin = MockBukkit.load(Nicko.class, config); player = server.addPlayer(); assertInstanceOf(RedisCacheProvider.class, plugin.getDataStore().getCache().getProvider()); } diff --git a/src/test/java/xyz/ineanto/nicko/test/storage/SQLStorageTest.java b/src/test/java/xyz/ineanto/nicko/test/storage/SQLStorageTest.java index f7a0dc0..0bd04ba 100644 --- a/src/test/java/xyz/ineanto/nicko/test/storage/SQLStorageTest.java +++ b/src/test/java/xyz/ineanto/nicko/test/storage/SQLStorageTest.java @@ -2,12 +2,12 @@ package xyz.ineanto.nicko.test.storage; import be.seeseemelk.mockbukkit.MockBukkit; import org.junit.jupiter.api.*; -import xyz.ineanto.nicko.NickoBukkit; +import xyz.ineanto.nicko.Nicko; import xyz.ineanto.nicko.appearance.ActionResult; import xyz.ineanto.nicko.config.Configuration; import xyz.ineanto.nicko.config.DefaultDataSources; import xyz.ineanto.nicko.config.SQLDataSourceConfiguration; -import xyz.ineanto.nicko.i18n.Locale; +import xyz.ineanto.nicko.language.Language; import xyz.ineanto.nicko.profile.NickoProfile; import xyz.ineanto.nicko.storage.PlayerDataStore; import xyz.ineanto.nicko.storage.mariadb.MariaDBStorageProvider; @@ -28,12 +28,11 @@ public class SQLStorageTest { "", new SQLDataSourceConfiguration(true, "127.0.0.1", 3306, "root", "12345", true), DefaultDataSources.REDIS_EMPTY, - "", false); MockBukkit.mock(); - final NickoBukkit plugin = MockBukkit.load(NickoBukkit.class, config); + final Nicko plugin = MockBukkit.load(Nicko.class, config); dataStore = plugin.getDataStore(); uuid = UUID.randomUUID(); assertInstanceOf(MariaDBStorageProvider.class, dataStore.getStorage().getProvider()); @@ -64,12 +63,12 @@ public class SQLStorageTest { final NickoProfile profile = optionalProfile.get(); assertNull(profile.getName()); assertNull(profile.getSkin()); - assertEquals(profile.getLocale(), Locale.ENGLISH); + assertEquals(profile.getLocale(), Language.ENGLISH); assertTrue(profile.isRandomSkin()); profile.setName("Notch"); profile.setSkin("Notch"); - profile.setLocale(Locale.FRENCH); + profile.setLocale(Language.FRENCH); profile.setRandomSkin(false); final ActionResult result = dataStore.getStorage().store(uuid, profile); @@ -86,7 +85,7 @@ public class SQLStorageTest { final NickoProfile updatedProfile = optionalProfile.get(); assertEquals(updatedProfile.getName(), "Notch"); assertEquals(updatedProfile.getSkin(), "Notch"); - assertEquals(updatedProfile.getLocale(), Locale.FRENCH); + assertEquals(updatedProfile.getLocale(), Language.FRENCH); assertFalse(updatedProfile.isRandomSkin()); }