From 02fd88d9c94977399438900b1cb9ec7fa568f382 Mon Sep 17 00:00:00 2001 From: ineanto Date: Wed, 11 Jun 2025 18:28:50 +0200 Subject: [PATCH 1/3] chore/fix: update adventure/i18n --- build.gradle.kts | 2 +- src/main/resources/en.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index cd3a7b4..c16aecc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -33,7 +33,7 @@ dependencies { paperweight.paperDevBundle("1.21.5-R0.1-SNAPSHOT") compileOnly("me.clip:placeholderapi:2.11.5") - compileOnly("net.kyori:adventure-api:4.17.0") + compileOnly("net.kyori:adventure-api:4.21.0") compileOnly("xyz.xenondevs.invui:invui-core:$invuiVersion") compileOnly("net.wesjd:anvilgui:1.10.4-SNAPSHOT") compileOnly("com.comphenix.protocol:ProtocolLib:5.4.0-SNAPSHOT") diff --git a/src/main/resources/en.yml b/src/main/resources/en.yml index 02e2ccf..c67d534 100644 --- a/src/main/resources/en.yml +++ b/src/main/resources/en.yml @@ -162,7 +162,7 @@ gui: name: "Add a favorite" lore: - "Add a new favorite appearance to the list." - - "Hold SHIFT to add your current disguise!" + - "Hold SHIFT to add your current disguise!" remove: name: "Toggle deletion mode" lore: From bf1d360bd50bbb9409d4913302c44093e3dd0474 Mon Sep 17 00:00:00 2001 From: ineanto Date: Thu, 12 Jun 2025 12:47:52 +0200 Subject: [PATCH 2/3] feat: add apparence to gui --- .../nicko/appearance/AppearanceManager.java | 8 +---- .../xyz/ineanto/nicko/gui/FavoritesGUI.java | 2 +- .../gui/items/favorites/FavoriteAddItem.java | 35 +++++++++++++++---- .../nicko/gui/items/home/RandomSkinItem.java | 2 +- .../ineanto/nicko/profile/NickoProfile.java | 4 +++ 5 files changed, 36 insertions(+), 15 deletions(-) diff --git a/src/main/java/xyz/ineanto/nicko/appearance/AppearanceManager.java b/src/main/java/xyz/ineanto/nicko/appearance/AppearanceManager.java index b0b3d24..7de7d31 100644 --- a/src/main/java/xyz/ineanto/nicko/appearance/AppearanceManager.java +++ b/src/main/java/xyz/ineanto/nicko/appearance/AppearanceManager.java @@ -28,22 +28,16 @@ public class AppearanceManager { public ActionResult reset() { final NickoProfile profile = getNickoProfile(); - final String defaultName = nameStore.getStoredName(player); // Call the event. final PlayerResetDisguiseEvent event = new PlayerResetDisguiseEvent(player); Bukkit.getPluginManager().callEvent(event); - profile.setName(defaultName); - profile.setSkin(defaultName); - - final ActionResult result = update(true); - profile.setName(null); profile.setSkin(null); dataStore.getCache().cache(player.getUniqueId(), profile); - return result; + return ActionResult.error(); } public ActionResult update(boolean skinChange) { diff --git a/src/main/java/xyz/ineanto/nicko/gui/FavoritesGUI.java b/src/main/java/xyz/ineanto/nicko/gui/FavoritesGUI.java index 94363a5..913da81 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/FavoritesGUI.java +++ b/src/main/java/xyz/ineanto/nicko/gui/FavoritesGUI.java @@ -36,7 +36,7 @@ public class FavoritesGUI { final ScrollUpItem scrollUpItem = new ScrollUpItem(playerLanguage); final ScrollDownItem scrollDownItem = new ScrollDownItem(playerLanguage); - final FavoriteAddItem favoriteAddItem = new FavoriteAddItem(playerLanguage); + final FavoriteAddItem favoriteAddItem = new FavoriteAddItem(player); final FavoriteRemoveItem favoriteRemoveItem = new FavoriteRemoveItem(playerLanguage); final NickoProfile profile = Nicko.getInstance().getDataStore().getData(player.getUniqueId()).orElse(NickoProfile.EMPTY_PROFILE); diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/favorites/FavoriteAddItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/favorites/FavoriteAddItem.java index be784cb..1665066 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/items/favorites/FavoriteAddItem.java +++ b/src/main/java/xyz/ineanto/nicko/gui/items/favorites/FavoriteAddItem.java @@ -6,20 +6,34 @@ import org.bukkit.DyeColor; import org.bukkit.Material; import org.bukkit.block.banner.Pattern; import org.bukkit.block.banner.PatternType; +import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BannerMeta; +import xyz.ineanto.nicko.Nicko; +import xyz.ineanto.nicko.appearance.Appearance; +import xyz.ineanto.nicko.gui.FavoritesGUI; import xyz.ineanto.nicko.language.LanguageKey; import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.ineanto.nicko.profile.NickoProfile; +import xyz.ineanto.nicko.storage.PlayerDataStore; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; -public class FavoriteAddItem { - private final PlayerLanguage playerLanguage; +import java.util.List; - public FavoriteAddItem(PlayerLanguage playerLanguage) { - this.playerLanguage = playerLanguage; +public class FavoriteAddItem { + private final PlayerDataStore dataStore = Nicko.getInstance().getDataStore(); + + private final Player player; + private final PlayerLanguage playerLanguage; + private final NickoProfile profile; + + public FavoriteAddItem(Player player) { + this.player = player; + this.playerLanguage = new PlayerLanguage(player); + this.profile = dataStore.getData(player.getUniqueId()).orElse(NickoProfile.EMPTY_PROFILE); } public SuppliedItem get() { @@ -50,8 +64,17 @@ public class FavoriteAddItem { return playerLanguage.translateItem(builder, LanguageKey.GUI.Favorites.ADD); }, click -> { final ClickType clickType = click.getClickType(); - if (clickType.isLeftClick() || clickType.isRightClick()) { - click.getEvent().getView().close(); + if (clickType.isShiftClick() && clickType.isLeftClick()) { + if (!profile.hasData()) { + click.getEvent().getView().close(); + return false; + } + + final List favorites = profile.getFavorites(); + favorites.add(profile.getAppearance()); + profile.setFavorites(favorites); + dataStore.updateCache(player.getUniqueId(), profile); + new FavoritesGUI(player).open(); return true; } return false; 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 8f88b7c..1bb0e40 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 @@ -46,7 +46,7 @@ public class RandomSkinItem { } else { player.sendMessage(playerLanguage.translateWithOops( LanguageKey.Event.Appearance.Set.ERROR, - playerLanguage.translate(result.getErrorKey(), false) + result.getErrorKey() ) ); appearanceManager.reset(); diff --git a/src/main/java/xyz/ineanto/nicko/profile/NickoProfile.java b/src/main/java/xyz/ineanto/nicko/profile/NickoProfile.java index 78945cf..b1a78bb 100644 --- a/src/main/java/xyz/ineanto/nicko/profile/NickoProfile.java +++ b/src/main/java/xyz/ineanto/nicko/profile/NickoProfile.java @@ -42,6 +42,10 @@ public class NickoProfile implements Cloneable { return dataStore.getData(uuid); } + public Appearance getAppearance() { + return appearance; + } + public boolean hasData() { return appearance.name() != null || appearance.skin() != null; } From 7fe598539118a0d21290781c413a17f7d434c186 Mon Sep 17 00:00:00 2001 From: ineanto Date: Thu, 12 Jun 2025 12:49:20 +0200 Subject: [PATCH 3/3] feat: display error on 403 --- src/main/java/xyz/ineanto/nicko/mojang/MojangAPI.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/xyz/ineanto/nicko/mojang/MojangAPI.java b/src/main/java/xyz/ineanto/nicko/mojang/MojangAPI.java index 0f6ac9a..6a38bbe 100644 --- a/src/main/java/xyz/ineanto/nicko/mojang/MojangAPI.java +++ b/src/main/java/xyz/ineanto/nicko/mojang/MojangAPI.java @@ -110,6 +110,9 @@ public class MojangAPI { con.setRequestMethod("GET"); switch (con.getResponseCode()) { + case 403: + logger.warning("Failed to parse request: forbidden?"); + return getErrorObject(); case 404: case 400: logger.warning("Failed to parse request: Invalid Name");