mirror of
https://github.com/rockyhawk64/CommandPanels.git
synced 2025-11-18 07:14:17 +01:00
Merge branch 'rockyhawk64:main' into clean
This commit is contained in:
commit
de90b4f94f
@ -48,7 +48,7 @@ public class Context {
|
||||
// Register proxy channels
|
||||
Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "BungeeCord");
|
||||
|
||||
// Register PlaceholderAPI
|
||||
// Register PlaceholderAPI (delayed by a tick by being in scheduler)
|
||||
Bukkit.getGlobalRegionScheduler().run(plugin, task -> {
|
||||
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
|
||||
new Placeholders(this).register();
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
package me.rockyhawk.commandpanels.session.inventory.listeners;
|
||||
|
||||
import me.rockyhawk.commandpanels.Context;
|
||||
import me.rockyhawk.commandpanels.formatter.Placeholders;
|
||||
import me.rockyhawk.commandpanels.interaction.commands.CommandRunner;
|
||||
import me.rockyhawk.commandpanels.interaction.commands.RequirementRunner;
|
||||
import me.rockyhawk.commandpanels.session.CommandActions;
|
||||
import me.rockyhawk.commandpanels.session.inventory.InventoryPanel;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -35,8 +37,19 @@ public class InventoryEvents implements Listener {
|
||||
public void onCloseEvent(InventoryCloseEvent event) {
|
||||
if (!(event.getPlayer() instanceof Player player)) return;
|
||||
|
||||
// Only remove the session if the player has one
|
||||
// Run in scheduler which delays by one tick
|
||||
// This ensures inventory was actually closed and not refreshed
|
||||
Bukkit.getGlobalRegionScheduler().run(ctx.plugin, task -> {
|
||||
|
||||
// If inventory event was for a panel
|
||||
if (event.getInventory().getHolder() instanceof InventoryPanel panel) {
|
||||
|
||||
// Panel was just refreshed, not closed
|
||||
if(player.getOpenInventory().getTopInventory().getHolder() instanceof InventoryPanel currentPanel
|
||||
&& currentPanel == panel){
|
||||
return;
|
||||
}
|
||||
|
||||
itemSanitiser(player.getInventory());
|
||||
itemDropper(player, event.getInventory());
|
||||
|
||||
@ -44,12 +57,14 @@ public class InventoryEvents implements Listener {
|
||||
RequirementRunner requirements = new RequirementRunner(ctx);
|
||||
CommandRunner commands = new CommandRunner(ctx);
|
||||
CommandActions actions = panel.getCloseCommands();
|
||||
if(!requirements.processRequirements(panel, player, actions.requirements())){
|
||||
if (!requirements.processRequirements(panel, player, actions.requirements())) {
|
||||
commands.runCommands(panel, player, actions.fail());
|
||||
return;
|
||||
}
|
||||
commands.runCommands(panel, player, actions.commands());
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
||||
Loading…
Reference in New Issue
Block a user