From f5e81446a640af3a292e383289934622b5c9a6ab Mon Sep 17 00:00:00 2001 From: Catnies Date: Tue, 5 Aug 2025 14:34:07 +0800 Subject: [PATCH] fix PlayerMenuOpenEvent can't cancel --- .../com/hibiscusmc/hmccosmetics/gui/Menu.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java index d2f6f5d3..f8e64dba 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java @@ -182,18 +182,25 @@ public class Menu { if (taskid.get() != -1) Bukkit.getScheduler().cancelTask(taskid.get()); }); + Runnable openGuiTask = () -> { + gui.open(viewer); + updateMenu(viewer, cosmeticHolder, gui); // fixes shading? I know I do this twice but it's easier than writing a whole new class to deal with this shit + }; + // API if (cosmeticHolder instanceof CosmeticUser user) { PlayerMenuOpenEvent event = new PlayerMenuOpenEvent(user, this); - Bukkit.getScheduler().runTask(HMCCosmeticsPlugin.getInstance(), () -> Bukkit.getPluginManager().callEvent(event)); - if (event.isCancelled()) return; + Bukkit.getScheduler().runTask(HMCCosmeticsPlugin.getInstance(), () -> { + Bukkit.getPluginManager().callEvent(event); + if (!event.isCancelled()) { + openGuiTask.run(); + } + }); } // Internal - - Bukkit.getScheduler().runTask(HMCCosmeticsPlugin.getInstance(), () -> { - gui.open(viewer); - updateMenu(viewer, cosmeticHolder, gui); // fixes shading? I know I do this twice but it's easier than writing a whole new class to deal with this shit - }); + else { + Bukkit.getScheduler().runTask(HMCCosmeticsPlugin.getInstance(), openGuiTask); + } } private void updateMenu(Player viewer, CosmeticHolder cosmeticHolder, Gui gui) {