From 79c80b8f6fb5ca3f666f60f3e8f12445f43da238 Mon Sep 17 00:00:00 2001 From: okx-code Date: Wed, 4 Feb 2026 23:30:32 +0000 Subject: [PATCH] handle wind charges properly --- .../bastion/listeners/BastionBreakListener.java | 6 +++++- .../engine/bridge/BridgeEventHandler.java | 4 ++++ .../castlegates/listener/EntityListener.java | 3 +-- .../mc/citadel/listener/EntityListener.java | 15 +++++++++------ .../FactoryMod/listeners/FactoryModListener.java | 4 ++++ .../realisticbiomes/listener/PlantListener.java | 4 ++++ 6 files changed, 27 insertions(+), 9 deletions(-) diff --git a/plugins/bastion-paper/src/main/java/isaac/bastion/listeners/BastionBreakListener.java b/plugins/bastion-paper/src/main/java/isaac/bastion/listeners/BastionBreakListener.java index 2af0080a9..4f589408a 100644 --- a/plugins/bastion-paper/src/main/java/isaac/bastion/listeners/BastionBreakListener.java +++ b/plugins/bastion-paper/src/main/java/isaac/bastion/listeners/BastionBreakListener.java @@ -9,6 +9,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.logging.Level; import net.md_5.bungee.api.chat.TextComponent; +import org.bukkit.ExplosionResult; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; @@ -79,8 +80,11 @@ public class BastionBreakListener implements Listener { } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onEntityExplode(EntityExplodeEvent event) { + if (event.getExplosionResult() == ExplosionResult.TRIGGER_BLOCK || event.getExplosionResult() == ExplosionResult.KEEP) { + return; + } Iterator iterator = event.blockList().iterator(); HashSet blocks = new HashSet<>(); while (iterator.hasNext()) { diff --git a/plugins/castlegates-paper/src/main/java/com/aleksey/castlegates/engine/bridge/BridgeEventHandler.java b/plugins/castlegates-paper/src/main/java/com/aleksey/castlegates/engine/bridge/BridgeEventHandler.java index 0f4fd64fe..9883229aa 100644 --- a/plugins/castlegates-paper/src/main/java/com/aleksey/castlegates/engine/bridge/BridgeEventHandler.java +++ b/plugins/castlegates-paper/src/main/java/com/aleksey/castlegates/engine/bridge/BridgeEventHandler.java @@ -13,6 +13,7 @@ import com.aleksey.castlegates.utils.Helper; import com.aleksey.castlegates.utils.ParticleHelper; import com.aleksey.castlegates.utils.PowerResultHelper; import org.bukkit.ChatColor; +import org.bukkit.ExplosionResult; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; @@ -117,6 +118,9 @@ public class BridgeEventHandler { } public void handleEntityExplode(EntityExplodeEvent event) { + if (event.getExplosionResult() == ExplosionResult.KEEP || event.getExplosionResult() == ExplosionResult.TRIGGER_BLOCK) { + return; + } for (Block block : event.blockList()) { _bridgeManager.removeGear(new BlockCoord(block)); } diff --git a/plugins/castlegates-paper/src/main/java/com/aleksey/castlegates/listener/EntityListener.java b/plugins/castlegates-paper/src/main/java/com/aleksey/castlegates/listener/EntityListener.java index b41832d88..077788712 100644 --- a/plugins/castlegates-paper/src/main/java/com/aleksey/castlegates/listener/EntityListener.java +++ b/plugins/castlegates-paper/src/main/java/com/aleksey/castlegates/listener/EntityListener.java @@ -4,6 +4,7 @@ package com.aleksey.castlegates.listener; +import com.aleksey.castlegates.CastleGates; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -13,8 +14,6 @@ import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; -import com.aleksey.castlegates.CastleGates; - public class EntityListener implements Listener { @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) diff --git a/plugins/citadel-paper/src/main/java/vg/civcraft/mc/citadel/listener/EntityListener.java b/plugins/citadel-paper/src/main/java/vg/civcraft/mc/citadel/listener/EntityListener.java index facdb5cbc..ce0a95197 100644 --- a/plugins/citadel-paper/src/main/java/vg/civcraft/mc/citadel/listener/EntityListener.java +++ b/plugins/citadel-paper/src/main/java/vg/civcraft/mc/citadel/listener/EntityListener.java @@ -1,12 +1,10 @@ package vg.civcraft.mc.citadel.listener; +import io.papermc.paper.event.player.PlayerOpenSignEvent; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.UUID; - - -import io.papermc.paper.event.player.PlayerOpenSignEvent; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; @@ -149,9 +147,14 @@ public class EntityListener implements Listener { if (rein == null) { continue; } - ReinforcementLogic.damageReinforcement(rein, ReinforcementLogic.getDamageApplied(rein, null, null), eee.getEntity()); - if (!rein.isBroken()) { - iterator.remove(); + switch (eee.getExplosionResult()) { + case TRIGGER_BLOCK -> iterator.remove(); + case DESTROY, DESTROY_WITH_DECAY -> { + ReinforcementLogic.damageReinforcement(rein, ReinforcementLogic.getDamageApplied(rein, null, null), eee.getEntity()); + if (!rein.isBroken()) { + iterator.remove(); + } + } } } } diff --git a/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/listeners/FactoryModListener.java b/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/listeners/FactoryModListener.java index 68555f5fc..44e815191 100644 --- a/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/listeners/FactoryModListener.java +++ b/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/listeners/FactoryModListener.java @@ -5,6 +5,7 @@ import com.github.igotyou.FactoryMod.factories.Factory; import com.github.igotyou.FactoryMod.powerManager.FurnacePowerManager; import com.github.igotyou.FactoryMod.structures.MultiBlockStructure; import java.util.List; +import org.bukkit.ExplosionResult; import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.block.Block; @@ -94,6 +95,9 @@ public class FactoryModListener implements Listener { */ @EventHandler(priority = EventPriority.HIGHEST) public void explosionListener(EntityExplodeEvent e) { + if (e.getExplosionResult() == ExplosionResult.KEEP || e.getExplosionResult() == ExplosionResult.TRIGGER_BLOCK) { + return; + } List blocks = e.blockList(); for (Block block : blocks) { if (manager.isPossibleInteractionBlock(block.getType())) { diff --git a/plugins/realisticbiomes2-paper/src/main/java/com/untamedears/realisticbiomes/listener/PlantListener.java b/plugins/realisticbiomes2-paper/src/main/java/com/untamedears/realisticbiomes/listener/PlantListener.java index a5292fef5..227e9722f 100644 --- a/plugins/realisticbiomes2-paper/src/main/java/com/untamedears/realisticbiomes/listener/PlantListener.java +++ b/plugins/realisticbiomes2-paper/src/main/java/com/untamedears/realisticbiomes/listener/PlantListener.java @@ -7,6 +7,7 @@ import com.untamedears.realisticbiomes.growthconfig.PlantGrowthConfig; import com.untamedears.realisticbiomes.model.Plant; import com.untamedears.realisticbiomes.model.PlantLoadState; import com.untamedears.realisticbiomes.utils.RBUtils; +import org.bukkit.ExplosionResult; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.event.Cancellable; @@ -55,6 +56,9 @@ public class PlantListener implements Listener { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onExplosion(EntityExplodeEvent event) { + if (event.getExplosionResult() == ExplosionResult.KEEP || event.getExplosionResult() == ExplosionResult.TRIGGER_BLOCK) { + return; + } for (Block block : event.blockList()) { plugin.getPlantLogicManager().handleBlockDestruction(block); }