9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-30 12:29:15 +00:00

修复风弹

This commit is contained in:
XiaoMoMi
2025-04-12 16:22:02 +08:00
parent a991b22735
commit 16822314fb
3 changed files with 24 additions and 1 deletions

View File

@@ -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());
}

View File

@@ -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;
}
}