From 78eee265eaba587545e9c39e3f775ad843625098 Mon Sep 17 00:00:00 2001 From: Lukichov Date: Wed, 27 May 2026 13:09:16 +0400 Subject: [PATCH] Fix open_commands state updates racing menu item rendering --- .../deluxemenus/config/DeluxeMenusConfig.java | 6 +++++ .../extendedclip/deluxemenus/menu/Menu.java | 22 +++++++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java b/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java index 0baa68f5..30d9dcd8 100644 --- a/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java +++ b/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java @@ -35,6 +35,7 @@ import com.extendedclip.deluxemenus.utils.VersionHelper; import com.google.common.base.Enums; import com.google.common.primitives.Ints; +import org.bukkit.Bukkit; import org.bukkit.DyeColor; import org.bukkit.Location; import org.bukkit.Material; @@ -1238,6 +1239,11 @@ public void onClick(@NotNull final MenuHolder holder) { continue; } + if (Bukkit.isPrimaryThread()) { + actionTask.run(); + continue; + } + actionTask.runTask(plugin); } } diff --git a/src/main/java/com/extendedclip/deluxemenus/menu/Menu.java b/src/main/java/com/extendedclip/deluxemenus/menu/Menu.java index 5056aecc..872a7eb1 100644 --- a/src/main/java/com/extendedclip/deluxemenus/menu/Menu.java +++ b/src/main/java/com/extendedclip/deluxemenus/menu/Menu.java @@ -300,11 +300,13 @@ public void openMenu(final @NotNull Player viewer, final @Nullable Map { + if (!this.handleOpenRequirements(holder)) { + return; + } + + this.options.openHandler().ifPresent(h -> h.onClick(holder)); + + scheduler.runTaskAsynchronously(() -> { Set activeItems = new HashSet<>(); @@ -343,12 +345,10 @@ public void openMenu(final @NotNull Player viewer, final @Nullable Map h.onClick(holder)); - - String title = StringUtils.color(holder.setPlaceholdersAndArguments(this.options.title())); + holder.setMenuName(this.options.name()); + holder.setActiveItems(activeItems); + + String title = StringUtils.color(holder.setPlaceholdersAndArguments(this.options.title())); Inventory inventory;