From af1124aa19dd672ee378ba1160fd1c7ad57f056a Mon Sep 17 00:00:00 2001 From: ArikSquad <75741608+ArikSquad@users.noreply.github.com> Date: Sun, 18 Jan 2026 12:05:36 +0200 Subject: [PATCH] fix: register View events properly Also cleans up logging and makes ActionInventoryOpen work with order of execution --- .../net/swofty/type/generic/HypixelGenericLoader.java | 1 + .../generic/gui/v2/event/ActionInventoryOpen.java | 8 ++++++-- .../gui/inventories/sbmenu/GUICrafting.java | 11 +++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/type.generic/src/main/java/net/swofty/type/generic/HypixelGenericLoader.java b/type.generic/src/main/java/net/swofty/type/generic/HypixelGenericLoader.java index ecaf22577..191df7ec2 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/HypixelGenericLoader.java +++ b/type.generic/src/main/java/net/swofty/type/generic/HypixelGenericLoader.java @@ -108,6 +108,7 @@ public void initialize(MinecraftServer server) { loader.getTraditionalEvents().forEach(HypixelEventHandler::registerEventMethods); loader.getCustomEvents().forEach(HypixelEventHandler::registerEventMethods); loopThroughPackage("net.swofty.type.generic.event.actions", HypixelEventClass.class).forEach(HypixelEventHandler::registerEventMethods); + loopThroughPackage("net.swofty.type.generic.gui.v2.event", HypixelEventClass.class).forEach(HypixelEventHandler::registerEventMethods); // SkyBlockGenericLoader always runs after the generic loader, so if we are a SkyBlock server, // we will let that loader register the events if (!loader.getType().isSkyBlock()) { diff --git a/type.generic/src/main/java/net/swofty/type/generic/gui/v2/event/ActionInventoryOpen.java b/type.generic/src/main/java/net/swofty/type/generic/gui/v2/event/ActionInventoryOpen.java index dccc78d1d..075f5285d 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/gui/v2/event/ActionInventoryOpen.java +++ b/type.generic/src/main/java/net/swofty/type/generic/gui/v2/event/ActionInventoryOpen.java @@ -1,5 +1,6 @@ package net.swofty.type.generic.gui.v2.event; +import net.minestom.server.MinecraftServer; import net.minestom.server.event.inventory.InventoryOpenEvent; import net.swofty.type.generic.event.EventNodes; import net.swofty.type.generic.event.HypixelEvent; @@ -11,8 +12,11 @@ public class ActionInventoryOpen implements HypixelEventClass { @HypixelEvent(node = EventNodes.INVENTORY, requireDataLoaded = false) public void onPlayerInventoryOpen(InventoryOpenEvent event) { - HypixelPlayer player = (HypixelPlayer) event.getPlayer(); - ViewNavigator.find(player).ifPresent(navigator -> navigator.getCurrentSession().onOpenEvent(event)); + MinecraftServer.getSchedulerManager().scheduleNextTick(() -> { + HypixelPlayer player = (HypixelPlayer) event.getPlayer(); + ViewNavigator.find(player).ifPresent(navigator -> navigator.getCurrentSession().onOpenEvent(event)); + }); + } } diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUICrafting.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUICrafting.java index e917e26bd..056f9f4a9 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUICrafting.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUICrafting.java @@ -62,10 +62,7 @@ public void layout(ViewLayout layout, CraftingState state, ViewCo Components.containerGrid( layout, 10, - 30, (slot, oldItem, newItem, state1) -> { - Logger.info("Container grid changed at slot " + slot); - Logger.info("Old Item: " + oldItem); - Logger.info("New Item: " + newItem); + 30, (_, _, _, state1) -> { int newHash = computeGridHash(ctx); SkyBlockRecipe newRecipe = SkyBlockRecipe.parseRecipe(getCurrentRecipeStacks(ctx)); if (state1.lastGridHash() == newHash && Objects.equals(state1.lastParsedRecipe(), newRecipe)) { @@ -83,11 +80,9 @@ public void layout(ViewLayout layout, CraftingState state, ViewCo Arrays.copyOfRange(result.errorMessage(), 1, result.errorMessage().length))); } else { int amount = recipe.getAmount(); - SkyBlockRecipe finalRecipe = recipe; - layout.slot(RESULT_SLOT, (s, c) -> { SkyBlockPlayer p = (SkyBlockPlayer) c.player(); - ItemStack.Builder builder = PlayerItemUpdater.playerUpdate(p, finalRecipe.getResult().getItemStack()).amount(amount); + ItemStack.Builder builder = PlayerItemUpdater.playerUpdate(p, recipe.getResult().getItemStack()).amount(amount); ArrayList lore = new ArrayList<>(); var existingLore = builder.build().get(DataComponents.LORE); @@ -100,7 +95,7 @@ public void layout(ViewLayout layout, CraftingState state, ViewCo .collect(Collectors.toList())); return builder; - }, (click, c) -> handleCraft(click, c, finalRecipe, amount)); + }, (click, c) -> handleCraft(click, c, recipe, amount)); } }