From 8cdef228e38f60dcf39fd03f6aaf7ddefcf4ef10 Mon Sep 17 00:00:00 2001 From: LoJoSho Date: Sat, 25 Feb 2023 10:27:31 -0600 Subject: [PATCH] Add HMCColor to the internal hook system --- .../hmccosmetics/gui/special/DyeMenu.java | 28 +++++++++++++------ .../gui/type/types/TypeCosmetic.java | 6 ++-- .../hibiscusmc/hmccosmetics/hooks/Hooks.java | 2 ++ .../hmccosmetics/hooks/misc/HookHMCColor.java | 11 ++++++++ 4 files changed, 36 insertions(+), 11 deletions(-) create mode 100644 common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/misc/HookHMCColor.java diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/special/DyeMenu.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/special/DyeMenu.java index f141e433..db49212f 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/special/DyeMenu.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/special/DyeMenu.java @@ -6,7 +6,9 @@ import com.hibiscusmc.hmccolor.gui.guis.GuiItem; import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; import com.hibiscusmc.hmccosmetics.config.Settings; import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic; +import com.hibiscusmc.hmccosmetics.hooks.Hooks; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; +import com.hibiscusmc.hmccosmetics.util.MessagesUtil; import com.hibiscusmc.hmccosmetics.util.misc.Placeholder; import org.bukkit.Bukkit; import org.bukkit.Color; @@ -21,12 +23,16 @@ import org.jetbrains.annotations.NotNull; public class DyeMenu { - // Yes, I do know how tacted on this feels. public static void openMenu(@NotNull CosmeticUser user, Cosmetic cosmetic) { + Player player = user.getPlayer(); + if (player == null) return; + if (!Hooks.isActiveHook("HMCColor")) { + addCosmetic(user, cosmetic, null); + return; + } ItemStack originalItem = user.getUserCosmeticItem(cosmetic); if (originalItem == null || !cosmetic.isDyable()) return; - Player player = user.getPlayer(); Gui gui = HMCColorApi.INSTANCE.colorMenu(); gui.updateTitle(Placeholder.applyPapiPlaceholders(player, Settings.getDyeMenuName())); gui.setItem(Settings.getDyeMenuInputSlot(), new GuiItem(originalItem)); @@ -42,13 +48,7 @@ public class DyeMenu { meta instanceof MapMeta mapMeta ? mapMeta.getColor() : null; if (color == null) return; - //user.removeCosmeticSlot(cosmetic); - user.addPlayerCosmetic(cosmetic, color); - player.setItemOnCursor(new ItemStack(Material.AIR)); - Bukkit.getScheduler().runTaskLater(HMCCosmeticsPlugin.getInstance(), () -> { - player.closeInventory(); - user.updateCosmetic(cosmetic.getSlot()); - }, 2); + addCosmetic(user, cosmetic, color); } else event.setCancelled(true); }); @@ -56,4 +56,14 @@ public class DyeMenu { gui.setCloseGuiAction(event -> {}); gui.open(player); } + + private static void addCosmetic(CosmeticUser user, Cosmetic cosmetic, Color color) { + Player player = user.getPlayer(); + user.addPlayerCosmetic(cosmetic, color); + player.setItemOnCursor(new ItemStack(Material.AIR)); + Bukkit.getScheduler().runTaskLater(HMCCosmeticsPlugin.getInstance(), () -> { + player.closeInventory(); + user.updateCosmetic(cosmetic.getSlot()); + }, 2); + } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java index bbb386b6..dc77607e 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java @@ -14,6 +14,7 @@ import com.hibiscusmc.hmccosmetics.util.misc.StringUtils; import com.hibiscusmc.hmccosmetics.util.misc.Utils; import me.clip.placeholderapi.PlaceholderAPI; import org.bukkit.Bukkit; +import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.meta.ItemMeta; @@ -37,13 +38,14 @@ public class TypeCosmetic extends Type { if (config.node("cosmetic").virtual()) return; String cosmeticName = config.node("cosmetic").getString(); Cosmetic cosmetic = Cosmetics.getCosmetic(cosmeticName); + Player player = user.getPlayer(); if (cosmetic == null) { - MessagesUtil.sendMessage(user.getPlayer(), "invalid-cosmetic"); + MessagesUtil.sendMessage(player, "invalid-cosmetic"); return; } if (!user.canEquipCosmetic(cosmetic)) { - MessagesUtil.sendMessage(user.getPlayer(), "no-cosmetic-permission"); + MessagesUtil.sendMessage(player, "no-cosmetic-permission"); return; } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/Hooks.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/Hooks.java index 59a7401a..a291af4d 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/Hooks.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/Hooks.java @@ -2,6 +2,7 @@ package com.hibiscusmc.hmccosmetics.hooks; import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; import com.hibiscusmc.hmccosmetics.hooks.items.*; +import com.hibiscusmc.hmccosmetics.hooks.misc.HookHMCColor; import com.hibiscusmc.hmccosmetics.hooks.misc.HookPremiumVanish; import com.hibiscusmc.hmccosmetics.hooks.misc.HookSuperVanish; import com.hibiscusmc.hmccosmetics.hooks.placeholders.HookPlaceholderAPI; @@ -24,6 +25,7 @@ public class Hooks { private static HookPlaceholderAPI PAPI_HOOK = new HookPlaceholderAPI(); private static HookPremiumVanish PREMIUM_VANISH_HOOK = new HookPremiumVanish(); private static HookSuperVanish SUPER_VANISH_HOOK = new HookSuperVanish(); + private static HookHMCColor HMC_COLOR_HOOK = new HookHMCColor(); public static Hook getHook(@NotNull String id) { return hooks.get(id.toLowerCase()); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/misc/HookHMCColor.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/misc/HookHMCColor.java new file mode 100644 index 00000000..10c83ffb --- /dev/null +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/misc/HookHMCColor.java @@ -0,0 +1,11 @@ +package com.hibiscusmc.hmccosmetics.hooks.misc; + +import com.hibiscusmc.hmccosmetics.hooks.Hook; +import org.bukkit.event.Listener; + +public class HookHMCColor extends Hook implements Listener { + + public HookHMCColor() { + super("HMCColor"); + } +}