From 0129af4eadcdf5178aa727a331556334f04279aa Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Tue, 15 Apr 2025 04:29:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=BD=9C=E5=9C=A8NPE?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E7=A7=92=E7=A0=B4=E7=B2=92=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../craftengine/bukkit/plugin/user/BukkitServerPlayer.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java index d5ac29a36..c5028a66f 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java @@ -371,11 +371,16 @@ public class BukkitServerPlayer extends Player { // if it's not an instant break on client side, we should resend level event if (vanillaBlockState != null && getDestroyProgress(vanillaBlockState.handle(), pos) < 1f) { Object levelEventPacket = FastNMS.INSTANCE.constructor$ClientboundLevelEventPacket( - WorldEvents.BLOCK_BREAK_EFFECT, LocationUtils.toBlockPos(pos), BlockStateUtils.blockStateToId(this.destroyedState), false); + WorldEvents.BLOCK_BREAK_EFFECT, LocationUtils.toBlockPos(pos), BlockStateUtils.blockStateToId(state), false); sendPacket(levelEventPacket, false); } return; } + if (!custom && !this.clientSideCanBreak && getDestroyProgress(state, pos) >= 1f) { + Object levelEventPacket = FastNMS.INSTANCE.constructor$ClientboundLevelEventPacket( + WorldEvents.BLOCK_BREAK_EFFECT, LocationUtils.toBlockPos(pos), BlockStateUtils.blockStateToId(state), false); + sendPacket(levelEventPacket, false); + } // if it's a custom one, we prevent it, otherwise we allow it setClientSideCanBreakBlock(!custom); // set some base info