2
0
Эх сурвалжийг харах

Fixing inventory interaction as spectator

RedstoneFuture 1 жил өмнө
parent
commit
b8c5c8367a

+ 13 - 0
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/game/EndListener.java

@@ -77,6 +77,19 @@ public class EndListener extends GameBoundListener {
         
         
         if (player.getGameMode() != GameMode.CREATIVE) event.setCancelled(true);
         if (player.getGameMode() != GameMode.CREATIVE) event.setCancelled(true);
     }
     }
+    
+    @EventHandler(priority = EventPriority.LOWEST)
+    public void onInventoryClickAsSpectator(InventoryClickEvent event) {
+        
+        if (!(event.getWhoClicked() instanceof Player)) return;
+
+        Player player = (Player) event.getWhoClicked();
+        if (player.getGameMode() != GameMode.SPECTATOR) return;
+        
+        // In Vanilla, the click actions are completely ignored. However, CraftBukkit 
+        // will continue to call the events, but it will be canceled by default.
+        event.setCancelled(false);
+    }
 
 
     @EventHandler
     @EventHandler
     public void onInventoryClick(InventoryClickEvent event) {
     public void onInventoryClick(InventoryClickEvent event) {

+ 13 - 0
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/game/GameListener.java

@@ -244,6 +244,19 @@ public class GameListener extends GameBoundListener {
         Inventory clickedInventory = event.getInventory();
         Inventory clickedInventory = event.getInventory();
         if (clickedInventory.getType() != InventoryType.PLAYER) event.setCancelled(true);
         if (clickedInventory.getType() != InventoryType.PLAYER) event.setCancelled(true);
     }
     }
+    
+    @EventHandler(priority = EventPriority.LOWEST)
+    public void onInventoryClickAsSpectator(InventoryClickEvent event) {
+        
+        if (!(event.getWhoClicked() instanceof Player)) return;
+
+        Player player = (Player) event.getWhoClicked();
+        if (player.getGameMode() != GameMode.SPECTATOR) return;
+        
+        // In Vanilla, the click actions are completely ignored. However, CraftBukkit 
+        // will continue to call the events, but it will be canceled by default.
+        event.setCancelled(false);
+    }
 
 
     @EventHandler
     @EventHandler
     public void onInventoryClick(InventoryClickEvent event) {
     public void onInventoryClick(InventoryClickEvent event) {

+ 13 - 0
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/game/LobbyListener.java

@@ -116,6 +116,19 @@ public class LobbyListener extends GameBoundListener {
         
         
         if (player.getGameMode() != GameMode.CREATIVE) event.setCancelled(true);
         if (player.getGameMode() != GameMode.CREATIVE) event.setCancelled(true);
     }
     }
+    
+    @EventHandler(priority = EventPriority.LOWEST)
+    public void onInventoryClickAsSpectator(InventoryClickEvent event) {
+        
+        if (!(event.getWhoClicked() instanceof Player)) return;
+
+        Player player = (Player) event.getWhoClicked();
+        if (player.getGameMode() != GameMode.SPECTATOR) return;
+        
+        // In Vanilla, the click actions are completely ignored. However, CraftBukkit 
+        // will continue to call the events, but it will be canceled by default.
+        event.setCancelled(false);
+    }
 
 
     @EventHandler
     @EventHandler
     public void onInventoryClick(InventoryClickEvent event) {
     public void onInventoryClick(InventoryClickEvent event) {