From bf1d360bd50bbb9409d4913302c44093e3dd0474 Mon Sep 17 00:00:00 2001 From: ineanto Date: Thu, 12 Jun 2025 12:47:52 +0200 Subject: [PATCH] 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; }