From cf1e30ff83288e316937f03f9a7f12058b496688 Mon Sep 17 00:00:00 2001 From: nivcoo Date: Sun, 11 Oct 2026 10:53:27 +0200 Subject: [PATCH 1/2] feat. add entity break event handling and update Paper API version to 26.3 --- gradle/libs.versions.toml | 2 +- .../listener/EventAbstractionListener.java | 21 +++++++++++++++++++ .../src/main/resources/plugin.yml | 2 +- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index db5579ebf..77b242f09 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -27,7 +27,7 @@ autoService = "com.google.auto.service:auto-service:1.1.1" jsr305 = "com.google.code.findbugs:jsr305:3.0.2" jetbrains-annotations = "org.jetbrains:annotations:24.1.0" -paperApi = "io.papermc.paper:paper-api:26.2.build.+" +paperApi = "io.papermc.paper:paper-api:26.3.build.+" paperLib = "io.papermc:paperlib:1.0.8" dummypermscompat = "com.sk89q:dummypermscompat:1.10" diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java index 7bc7957e8..809d95e91 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java @@ -48,6 +48,8 @@ import com.sk89q.worldguard.config.WorldConfiguration; import com.sk89q.worldguard.protection.flags.Flags; import io.papermc.lib.PaperLib; +import io.papermc.paper.event.entity.EntityBreakByEntityEvent; +import io.papermc.paper.event.entity.EntityBreakEvent; import io.papermc.paper.event.entity.EntityPushedByEntityAttackEvent; import io.papermc.paper.event.player.PlayerOpenSignEvent; import org.bukkit.Bukkit; @@ -77,6 +79,7 @@ import org.bukkit.entity.FallingBlock; import org.bukkit.entity.Firework; import org.bukkit.entity.FishHook; +import org.bukkit.entity.Hanging; import org.bukkit.entity.Item; import org.bukkit.entity.ItemFrame; import org.bukkit.entity.LivingEntity; @@ -1380,6 +1383,24 @@ public void onSignOpen(PlayerOpenSignEvent event) { public void onEntityKnockbackByEntity(EntityPushedByEntityAttackEvent event) { handleKnockback(event, event.getPushedBy()); } + + @EventHandler(ignoreCancelled = true) + public void onEntityBreak(EntityBreakEvent event) { + if (event.getEntity() instanceof Hanging) return; + + if (event instanceof EntityBreakByEntityEvent entityEvent) { + Entity remover = entityEvent.getRemover(); + Events.fireToCancel(event, new DestroyEntityEvent(event, create(remover), event.getEntity())); + + if (event.isCancelled() && remover instanceof Player player) { + playDenyEffect(player, event.getEntity().getLocation()); + } + } else if (event.getCause() == EntityBreakEvent.RemoveCause.EXPLOSION) { + DestroyEntityEvent destroyEntityEvent = new DestroyEntityEvent(event, Cause.unknown(), event.getEntity()); + destroyEntityEvent.getRelevantFlags().add(Flags.OTHER_EXPLOSION); + Events.fireToCancel(event, destroyEntityEvent); + } + } } @SuppressWarnings("removal") diff --git a/worldguard-bukkit/src/main/resources/plugin.yml b/worldguard-bukkit/src/main/resources/plugin.yml index f248570a2..9fe4e7d91 100644 --- a/worldguard-bukkit/src/main/resources/plugin.yml +++ b/worldguard-bukkit/src/main/resources/plugin.yml @@ -2,5 +2,5 @@ name: WorldGuard main: com.sk89q.worldguard.bukkit.WorldGuardPlugin version: "${internalVersion}" depend: [WorldEdit] -api-version: "26.2" +api-version: "26.3" folia-supported: true From 1bdf2b7ec4487bc5e388f6b132aba3622a10e3ae Mon Sep 17 00:00:00 2001 From: nivcoo Date: Sun, 11 Oct 2026 11:46:22 +0200 Subject: [PATCH 2/2] improv. add braces to handle Hanging entities --- .../worldguard/bukkit/listener/EventAbstractionListener.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java index 809d95e91..ae1c4e3aa 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java @@ -1386,7 +1386,9 @@ public void onEntityKnockbackByEntity(EntityPushedByEntityAttackEvent event) { @EventHandler(ignoreCancelled = true) public void onEntityBreak(EntityBreakEvent event) { - if (event.getEntity() instanceof Hanging) return; + if (event.getEntity() instanceof Hanging) { + return; + } if (event instanceof EntityBreakByEntityEvent entityEvent) { Entity remover = entityEvent.getRemover();