Merge branch 'rockyhawk64:main' into clean

This commit is contained in:
Halogly 2025-10-29 10:17:27 +08:00 committed by GitHub
commit de90b4f94f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 29 additions and 14 deletions

View File

@ -48,7 +48,7 @@ public class Context {
// Register proxy channels // Register proxy channels
Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "BungeeCord"); Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "BungeeCord");
// Register PlaceholderAPI // Register PlaceholderAPI (delayed by a tick by being in scheduler)
Bukkit.getGlobalRegionScheduler().run(plugin, task -> { Bukkit.getGlobalRegionScheduler().run(plugin, task -> {
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
new Placeholders(this).register(); new Placeholders(this).register();

View File

@ -1,10 +1,12 @@
package me.rockyhawk.commandpanels.session.inventory.listeners; package me.rockyhawk.commandpanels.session.inventory.listeners;
import me.rockyhawk.commandpanels.Context; import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.formatter.Placeholders;
import me.rockyhawk.commandpanels.interaction.commands.CommandRunner; import me.rockyhawk.commandpanels.interaction.commands.CommandRunner;
import me.rockyhawk.commandpanels.interaction.commands.RequirementRunner; import me.rockyhawk.commandpanels.interaction.commands.RequirementRunner;
import me.rockyhawk.commandpanels.session.CommandActions; import me.rockyhawk.commandpanels.session.CommandActions;
import me.rockyhawk.commandpanels.session.inventory.InventoryPanel; import me.rockyhawk.commandpanels.session.inventory.InventoryPanel;
import org.bukkit.Bukkit;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -35,21 +37,34 @@ public class InventoryEvents implements Listener {
public void onCloseEvent(InventoryCloseEvent event) { public void onCloseEvent(InventoryCloseEvent event) {
if (!(event.getPlayer() instanceof Player player)) return; if (!(event.getPlayer() instanceof Player player)) return;
// Only remove the session if the player has one // Run in scheduler which delays by one tick
if (event.getInventory().getHolder() instanceof InventoryPanel panel) { // This ensures inventory was actually closed and not refreshed
itemSanitiser(player.getInventory()); Bukkit.getGlobalRegionScheduler().run(ctx.plugin, task -> {
itemDropper(player, event.getInventory());
// Run close commands // If inventory event was for a panel
RequirementRunner requirements = new RequirementRunner(ctx); if (event.getInventory().getHolder() instanceof InventoryPanel panel) {
CommandRunner commands = new CommandRunner(ctx);
CommandActions actions = panel.getCloseCommands(); // Panel was just refreshed, not closed
if(!requirements.processRequirements(panel, player, actions.requirements())){ if(player.getOpenInventory().getTopInventory().getHolder() instanceof InventoryPanel currentPanel
commands.runCommands(panel, player, actions.fail()); && currentPanel == panel){
return; return;
}
itemSanitiser(player.getInventory());
itemDropper(player, event.getInventory());
// Run close commands
RequirementRunner requirements = new RequirementRunner(ctx);
CommandRunner commands = new CommandRunner(ctx);
CommandActions actions = panel.getCloseCommands();
if (!requirements.processRequirements(panel, player, actions.requirements())) {
commands.runCommands(panel, player, actions.fail());
return;
}
commands.runCommands(panel, player, actions.commands());
} }
commands.runCommands(panel, player, actions.commands());
} });
} }
@EventHandler @EventHandler