Skip to content

Commit cd820ac

Browse files
committed
handle if creeper explode hanging entity (item frame, painting, ..)
1 parent 53688e6 commit cd820ac

1 file changed

Lines changed: 13 additions & 2 deletions

File tree

src/main/java/fr/openmc/core/features/city/listeners/protections/HangingProtection.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.bukkit.event.EventHandler;
88
import org.bukkit.event.Listener;
99
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
10+
import org.bukkit.event.hanging.HangingBreakEvent;
1011
import org.bukkit.event.player.PlayerInteractEntityEvent;
1112

1213
public class HangingProtection implements Listener {
@@ -22,8 +23,18 @@ public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
2223

2324
@EventHandler(ignoreCancelled = true)
2425
public void onHangingBreakByEntity(HangingBreakByEntityEvent event) {
25-
if (event.getRemover() instanceof Player player) {
26-
ProtectionsManager.verify(player, event, event.getEntity().getLocation());
26+
Entity remover = event.getRemover();
27+
if (remover != null) {
28+
ProtectionsManager.verify(remover, event, event.getEntity().getLocation());
29+
}
30+
}
31+
32+
@EventHandler(ignoreCancelled = true)
33+
public void onHangingBreak(HangingBreakEvent event) {
34+
if (event.getCause() == HangingBreakEvent.RemoveCause.EXPLOSION) {
35+
if (!ProtectionsManager.canExplodeNaturally(event.getEntity().getLocation())) {
36+
event.setCancelled(true);
37+
}
2738
}
2839
}
2940
}

0 commit comments

Comments
 (0)