From 1890471609a79f15b844dca8a592f59a03c6f441 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Tue, 28 Feb 2023 12:55:00 +0100 Subject: [PATCH] Fix Items bugs Signed-off-by: Lixfel --- .../de/steamwar/fightsystem/fight/FreezeWorld.java | 5 +++++ .../fightsystem/listener/DenyWorldInteraction.java | 9 +++++++++ .../steamwar/fightsystem/listener/Permanent.java | 14 +++++++++----- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FreezeWorld.java b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FreezeWorld.java index b94fc72..7b58543 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FreezeWorld.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FreezeWorld.java @@ -27,6 +27,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.block.*; +import org.bukkit.event.entity.ItemSpawnEvent; import org.bukkit.event.inventory.InventoryMoveItemEvent; import org.bukkit.event.player.PlayerInteractEvent; @@ -83,6 +84,10 @@ public class FreezeWorld implements Listener { public void onBlockExplosion(BlockExplodeEvent e){ e.setCancelled(true); } + @EventHandler + public void onBlockExplosion(ItemSpawnEvent e){ + e.setCancelled(true); + } @EventHandler(priority = EventPriority.LOW) public void handlePlayerInteract(PlayerInteractEvent event) { diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/DenyWorldInteraction.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/DenyWorldInteraction.java index 4ad97c9..f494d0b 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/DenyWorldInteraction.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/DenyWorldInteraction.java @@ -35,6 +35,7 @@ import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.event.hanging.HangingBreakEvent; +import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerKickEvent; public class DenyWorldInteraction implements Listener { @@ -53,6 +54,14 @@ public class DenyWorldInteraction implements Listener { } } + @EventHandler + public void handleItemDrop(PlayerDropItemEvent event) { + Player player = event.getPlayer(); + if(Fight.fighting(player)) { + event.setCancelled(true); + } + } + @EventHandler public void handleHangingBreak(HangingBreakEvent event) { if(Config.ArenaRegion.inRegion(event.getEntity().getLocation())) { diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/Permanent.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/Permanent.java index 877e3e5..2cccdf9 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/Permanent.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/Permanent.java @@ -137,7 +137,7 @@ public class Permanent implements Listener { @EventHandler public void onDropPickup(EntityPickupItemEvent e) { - if(!(e.getEntity() instanceof Player || Config.ArenaRegion.inRegion(e.getItem().getLocation()))) + if(!(e.getEntity() instanceof Player) || !(Config.ArenaRegion.inRegion(e.getItem().getLocation()))) return; Player player = (Player) e.getEntity(); @@ -159,10 +159,14 @@ public class Permanent implements Listener { @EventHandler(priority = EventPriority.MONITOR) public void onExplosion(EntityExplodeEvent e) { - for(Block block : e.blockList()) { - block.setType(Material.AIR); - } - e.blockList().clear(); + e.blockList().removeIf(block -> { + if(block.getType() == Material.TNT) { + return false; + } else { + block.setType(Material.AIR); + return true; + } + }); } @EventHandler