1
mirror of https://github.com/CarmJos/EasyPlugin.git synced 2026-06-05 00:58:17 +08:00

修复在GUI中打开另一个GUI时监听器失效问题

This commit is contained in:
LSeng
2022-05-22 22:26:12 +08:00
parent 12ff00e1d9
commit 892371f702
2 changed files with 13 additions and 22 deletions
@@ -132,31 +132,23 @@ public class GUI {
} }
public void addFlag(String flag, Object obj) { public void addFlag(String flag, Object obj) {
if (this.flags == null) { if (this.flags == null) this.flags = new HashMap<>();
this.flags = new HashMap<>();
}
this.flags.put(flag, obj); this.flags.put(flag, obj);
} }
public Object getFlag(String flag) { public Object getFlag(String flag) {
if (this.flags == null) { if (this.flags == null) return null;
return null; else
} else {
return this.flags.get(flag); return this.flags.get(flag);
} }
}
public void setFlag(String flag, Object obj) { public void setFlag(String flag, Object obj) {
if (this.flags == null) { if (this.flags == null) this.flags = new HashMap<>();
this.flags = new HashMap<>();
}
this.flags.replace(flag, obj); this.flags.replace(flag, obj);
} }
public void removeFlag(String flag) { public void removeFlag(String flag) {
if (this.flags == null) { if (this.flags == null) this.flags = new HashMap<>();
this.flags = new HashMap<>();
}
this.flags.remove(flag); this.flags.remove(flag);
} }
@@ -1,6 +1,5 @@
package cc.carm.lib.easyplugin.gui; package cc.carm.lib.easyplugin.gui;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
@@ -24,10 +23,10 @@ public class GUIListener implements Listener {
@EventHandler @EventHandler
public void onInventoryClickEvent(InventoryClickEvent event) { public void onInventoryClickEvent(InventoryClickEvent event) {
if (!(event.getWhoClicked() instanceof Player)) { return; } if (!(event.getWhoClicked() instanceof Player)) return;
Player player = (Player) event.getWhoClicked(); Player player = (Player) event.getWhoClicked();
if (!GUI.hasOpenedGUI(player)) { return;} if (!GUI.hasOpenedGUI(player)) return;
if (GUI.getOpenedGUI(player) != getCurrentGUI()) { return; } if (GUI.getOpenedGUI(player) != getCurrentGUI()) return;
getCurrentGUI().rawClickListener(event); getCurrentGUI().rawClickListener(event);
@@ -36,11 +35,11 @@ public class GUIListener implements Listener {
return; return;
} }
if (event.getClickedInventory() == null) { return; } if (event.getClickedInventory() == null) return;
if (event.getClickedInventory().equals(getCurrentGUI().inv)) { if (event.getClickedInventory().equals(getCurrentGUI().inv)) {
if (getCurrentGUI().cancelOnTarget) { event.setCancelled(true); } if (getCurrentGUI().cancelOnTarget) event.setCancelled(true);
if (event.getSlot() != -999) { if (event.getSlot() != -999) {
GUIItem clickedItem = getCurrentGUI().getItem(event.getSlot()); GUIItem clickedItem = getCurrentGUI().getItem(event.getSlot());
@@ -62,7 +61,7 @@ public class GUIListener implements Listener {
@EventHandler @EventHandler
public void onDrag(InventoryDragEvent e) { public void onDrag(InventoryDragEvent e) {
if (!(e.getWhoClicked() instanceof Player)) { return; } if (!(e.getWhoClicked() instanceof Player)) return;
if (e.getInventory().equals(getCurrentGUI().inv) if (e.getInventory().equals(getCurrentGUI().inv)
|| e.getInventory().equals(e.getWhoClicked().getInventory())) { || e.getInventory().equals(e.getWhoClicked().getInventory())) {
getCurrentGUI().onDrag(e); getCurrentGUI().onDrag(e);
@@ -71,8 +70,8 @@ public class GUIListener implements Listener {
@EventHandler @EventHandler
public void onInventoryCloseEvent(InventoryCloseEvent event) { public void onInventoryCloseEvent(InventoryCloseEvent event) {
if (!(event.getPlayer() instanceof Player)) { return; } if (!(event.getPlayer() instanceof Player)) return;
if (!event.getInventory().equals(getCurrentGUI().inv)) { return; } if (!event.getInventory().equals(getCurrentGUI().inv)) return;
close((Player) event.getPlayer()); close((Player) event.getPlayer());