From f02871871cb6bad483cac1e90f28552a6962f956 Mon Sep 17 00:00:00 2001 From: HeroBrineGoat <76707404+MasterOfTheFish@users.noreply.github.com> Date: Fri, 21 Jan 2022 13:39:26 -0500 Subject: [PATCH] Fixed more gui stuff --- .../hmccosmetics/gui/CosmeticGui.java | 147 ++++++++---------- .../hmccosmetics/gui/DyeSelectorGui.java | 2 +- 2 files changed, 69 insertions(+), 80 deletions(-) diff --git a/src/main/java/io/github/fisher2911/hmccosmetics/gui/CosmeticGui.java b/src/main/java/io/github/fisher2911/hmccosmetics/gui/CosmeticGui.java index 140373a7..4361d329 100644 --- a/src/main/java/io/github/fisher2911/hmccosmetics/gui/CosmeticGui.java +++ b/src/main/java/io/github/fisher2911/hmccosmetics/gui/CosmeticGui.java @@ -10,7 +10,6 @@ import io.github.fisher2911.hmccosmetics.message.MessageHandler; import io.github.fisher2911.hmccosmetics.message.Messages; import io.github.fisher2911.hmccosmetics.message.Placeholder; import io.github.fisher2911.hmccosmetics.user.User; -import io.github.fisher2911.hmccosmetics.user.UserManager; import io.github.fisher2911.hmccosmetics.util.StringUtils; import io.github.fisher2911.hmccosmetics.util.builder.ItemBuilder; import org.bukkit.Bukkit; @@ -18,6 +17,7 @@ import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.Nullable; import java.util.HashMap; import java.util.Locale; @@ -27,7 +27,6 @@ import java.util.Optional; public class CosmeticGui { protected final HMCCosmetics plugin; - protected final UserManager userManager; protected final MessageHandler messageHandler; protected final String title; protected final int rows; @@ -41,7 +40,6 @@ public class CosmeticGui { final int rows, final Map guiItemMap) { this.plugin = plugin; - this.userManager = this.plugin.getUserManager(); this.messageHandler = this.plugin.getMessageHandler(); this.title = title; this.rows = rows; @@ -50,7 +48,7 @@ public class CosmeticGui { this.guiItemMap.forEach((key, value) -> itemStackMap.put(key, value.getItemStack())); } - protected void setItems(final User user) { + private void setItems(final User user) { final Player player = user.getPlayer(); @@ -61,72 +59,8 @@ public class CosmeticGui { for (final var entry : guiItemMap.entrySet()) { final int slot = entry.getKey(); - final GuiItem guiItem = entry.getValue(); - - final ItemStack itemStack = this.itemStackMap.get(slot); - - if (itemStack == null) continue; - - guiItem.setItemStack( - ItemBuilder.from(itemStack.clone()).papiPlaceholders(player).build() - ); - - if (guiItem instanceof final ArmorItem armorItem) { - - final Map placeholders = new HashMap<>(); - - final PlayerArmor playerArmor = user.getPlayerArmor(); - - final ArmorItem hat = playerArmor.getHat(); - final ArmorItem backpack = playerArmor.getBackpack(); - final ArmorItem offHand = playerArmor.getOffHand(); - - final ArmorItem.Type type = armorItem.getType(); - - final String id = switch (type) { - case HAT -> hat.getId(); - case BACKPACK -> backpack.getId(); - case OFF_HAND -> offHand.getId(); - }; - - placeholders.put( - Placeholder.ENABLED, - String.valueOf(id.equals(armorItem.getId())). - toLowerCase(Locale.ROOT)); - - final String permission = armorItem.getPermission() == null ? "" : armorItem.getPermission(); - - final boolean hasPermission = permission.isBlank() || player.hasPermission(permission); - - placeholders.put( - Placeholder.ALLOWED, - String.valueOf(hasPermission). - toLowerCase(Locale.ROOT)); - - this.gui.setItem(slot, - new GuiItem( - ItemBuilder.from( - armorItem.getItemStack(hasPermission) - ).namePlaceholders(placeholders). - lorePlaceholders(placeholders). - papiPlaceholders(player). - build(), - event -> { - if (!hasPermission) { - this.messageHandler.sendMessage( - player, - Messages.NO_COSMETIC_PERMISSION - ); - return; - } - - this.setUserArmor(player, user, armorItem, event, armorItem.getAction()); - } - ) - ); - - continue; - } + final GuiItem guiItem = this.getGuiItem(user, player, slot); + if (guiItem == null) continue; this.gui.setItem(slot, guiItem); } @@ -145,7 +79,7 @@ public class CosmeticGui { final ArmorItem.Type type = armorItem.getType(); - final ArmorItem setTo = this.userManager.setOrUnset( + final ArmorItem setTo = this.plugin.getUserManager().setOrUnset( user, armorItem, Messages.getSetMessage(type), @@ -170,17 +104,72 @@ public class CosmeticGui { this.gui.setDefaultClickAction(event -> { event.setCancelled(true); - Bukkit.getScheduler().runTaskLater( - this.plugin, - () -> { - this.setItems(user); - this.gui.update(); - }, - 1); }); this.setItems(user); this.gui.open(humanEntity); } -} + + @Nullable + private GuiItem getGuiItem(final User user, final Player player, final int slot) { + final GuiItem guiItem = this.guiItemMap.get(slot); + + if (guiItem == null) return null; + + final ItemStack itemStack = this.itemStackMap.get(slot); + + if (itemStack == null) return null; + + guiItem.setItemStack( + ItemBuilder.from(itemStack.clone()).papiPlaceholders(player).build() + ); + + if (guiItem instanceof final ArmorItem armorItem) { + + final Map placeholders = new HashMap<>(); + + final PlayerArmor playerArmor = user.getPlayerArmor(); + + final ArmorItem.Type type = armorItem.getType(); + + final String id = playerArmor.getItem(type).getId(); + + placeholders.put( + Placeholder.ENABLED, + String.valueOf(id.equals(armorItem.getId())). + toLowerCase(Locale.ROOT)); + + final String permission = armorItem.getPermission() == null ? "" : armorItem.getPermission(); + + final boolean hasPermission = permission.isBlank() || player.hasPermission(permission); + + placeholders.put( + Placeholder.ALLOWED, + String.valueOf(hasPermission). + toLowerCase(Locale.ROOT)); + + return new GuiItem( + ItemBuilder.from( + armorItem.getItemStack(hasPermission) + ).namePlaceholders(placeholders). + lorePlaceholders(placeholders). + papiPlaceholders(player). + build(), + event -> { + if (!hasPermission) { + this.messageHandler.sendMessage( + player, + Messages.NO_COSMETIC_PERMISSION + ); + return; + } + + this.setUserArmor(player, user, armorItem, event, armorItem.getAction()); + } + ); + } + + return guiItem; + } +} \ No newline at end of file diff --git a/src/main/java/io/github/fisher2911/hmccosmetics/gui/DyeSelectorGui.java b/src/main/java/io/github/fisher2911/hmccosmetics/gui/DyeSelectorGui.java index 543803d0..b99ff709 100644 --- a/src/main/java/io/github/fisher2911/hmccosmetics/gui/DyeSelectorGui.java +++ b/src/main/java/io/github/fisher2911/hmccosmetics/gui/DyeSelectorGui.java @@ -115,7 +115,7 @@ public class DyeSelectorGui extends CosmeticGui { armorItem.setDye(colorItem.getColor().asRGB()); - this.userManager.setItem(user, armorItem); + this.plugin.getUserManager().setItem(user, armorItem); }); return gui;