From a762368bb03c62c6fe8cf870fc00f020a09a74e4 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Wed, 26 Mar 2025 00:25:56 +0800 Subject: [PATCH] =?UTF-8?q?fix(bukkit):=20=E4=BB=96=E5=96=B5=E7=9A=84?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E7=BB=99=E4=BD=A0=E9=98=B2=E5=BE=A1=E6=8B=89?= =?UTF-8?q?=E6=BB=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../craftengine/bukkit/plugin/network/PacketConsumers.java | 4 ++-- .../craftengine/bukkit/plugin/user/BukkitServerPlayer.java | 7 +++++++ .../momirealms/craftengine/core/entity/player/Player.java | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java index 652232ecf..1ff40f0f5 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java @@ -314,7 +314,7 @@ public class PacketConsumers { && !(boolean) Reflections.method$ItemStack$canBreakBlockInAdventureMode.invoke( itemStack, blockInWorld )) { - player.abortMiningBlock(); + player.preventMiningBlock(); return; } } else { @@ -322,7 +322,7 @@ public class PacketConsumers { && !(boolean) Reflections.method$ItemStack$canDestroy.invoke( itemStack, Reflections.instance$BuiltInRegistries$BLOCK, blockInWorld )) { - player.abortMiningBlock(); + player.preventMiningBlock(); return; } } 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 84698bc75..7828f7562 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 @@ -365,6 +365,13 @@ public class BukkitServerPlayer extends Player { setIsDestroyingBlock(false, false); } + @Override + public void preventMiningBlock() { + setCanBreakBlock(false); + setIsDestroyingBlock(false, false); + abortMiningBlock(); + } + private void resetEffect(Object mobEffect) throws ReflectiveOperationException { Object effectInstance = Reflections.method$ServerPlayer$getEffect.invoke(serverPlayer(), mobEffect); Object packet; diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/player/Player.java b/core/src/main/java/net/momirealms/craftengine/core/entity/player/Player.java index 7465a7fbd..0c79bebf1 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/player/Player.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/player/Player.java @@ -27,6 +27,8 @@ public abstract class Player extends Entity implements NetWorkUser { public abstract void stopMiningBlock(); + public abstract void preventMiningBlock(); + public abstract void abortMiningBlock(); public abstract double getInteractionRange();