From 16822314fb9c784735aa7a52d01719d1e7592cbf Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sat, 12 Apr 2025 16:22:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A3=8E=E5=BC=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/block/BlockEventListener.java | 7 +++++++ .../craftengine/bukkit/util/ExplosionUtils.java | 16 ++++++++++++++++ gradle.properties | 2 +- 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ExplosionUtils.java diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BlockEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BlockEventListener.java index f8879f586..fda52637e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BlockEventListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BlockEventListener.java @@ -16,6 +16,7 @@ import net.momirealms.craftengine.core.loot.LootTable; import net.momirealms.craftengine.core.loot.parameter.LootParameters; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.craftengine.core.util.context.ContextHolder; import net.momirealms.craftengine.core.world.BlockPos; import net.momirealms.craftengine.core.world.Vec3d; @@ -294,11 +295,17 @@ public class BlockEventListener implements Listener { @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) public void onEntityExplode(EntityExplodeEvent event) { + if (VersionHelper.isVersionNewerThan1_21()) { + if (!ExplosionUtils.isDroppingItems(event)) return; + } handleExplodeEvent(event.blockList(), new BukkitWorld(event.getEntity().getWorld()), event.getYield()); } @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) public void onBlockExplode(BlockExplodeEvent event) { + if (VersionHelper.isVersionNewerThan1_21()) { + if (!ExplosionUtils.isDroppingItems(event)) return; + } handleExplodeEvent(event.blockList(), new BukkitWorld(event.getBlock().getWorld()), event.getYield()); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ExplosionUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ExplosionUtils.java new file mode 100644 index 000000000..e3de0e969 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ExplosionUtils.java @@ -0,0 +1,16 @@ +package net.momirealms.craftengine.bukkit.util; + +import org.bukkit.ExplosionResult; +import org.bukkit.event.block.BlockExplodeEvent; +import org.bukkit.event.entity.EntityExplodeEvent; + +public class ExplosionUtils { + + public static boolean isDroppingItems(BlockExplodeEvent event) { + return event.getExplosionResult() != ExplosionResult.KEEP && event.getExplosionResult() != ExplosionResult.TRIGGER_BLOCK; + } + + public static boolean isDroppingItems(EntityExplodeEvent event) { + return event.getExplosionResult() != ExplosionResult.KEEP && event.getExplosionResult() != ExplosionResult.TRIGGER_BLOCK; + } +} diff --git a/gradle.properties b/gradle.properties index 617b4f248..dc9fb4f15 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx1G # Project settings # Rule: [major update].[feature update].[bug fix] -project_version=0.0.46.3 +project_version=0.0.47 config_version=24 lang_version=4 project_group=net.momirealms