From b0d30e2d6960cf53b47dbfa7612a93b9b0160848 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Mon, 7 Jul 2025 00:49:16 +0800 Subject: [PATCH] =?UTF-8?q?refactor(bukkit):=20=E4=BC=98=E5=8C=96=E9=97=A8?= =?UTF-8?q?=E6=96=B9=E5=9D=97=E8=A1=8C=E4=B8=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/block/behavior/DoorBlockBehavior.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java index 6c5dd7a4e..b63a7511c 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java @@ -37,6 +37,7 @@ import org.bukkit.block.data.Bisected; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.type.Door; import org.bukkit.event.block.BlockRedstoneEvent; +import org.bukkit.inventory.ItemStack; import org.bukkit.util.Vector; import javax.annotation.Nullable; @@ -133,8 +134,8 @@ public class DoorBlockBehavior extends AbstractCanSurviveBlockBehavior { if (blockState == null || blockState.isEmpty()) return superMethod.call(); org.bukkit.entity.Player bukkitPlayer = FastNMS.INSTANCE.method$ServerPlayer$getBukkitEntity(player); BukkitServerPlayer cePlayer = BukkitCraftEngine.instance().adapt(bukkitPlayer); - Item item = cePlayer.getItemInHand(InteractionHand.MAIN_HAND); - if (preventsBlockDrops(cePlayer) || !hasCorrectToolForDrops(blockState, item)) { + Item item = cePlayer.getItemInHand(InteractionHand.MAIN_HAND); + if (preventsBlockDrops(cePlayer) || !BlockStateUtils.isCorrectTool(blockState, item)) { preventDropFromBottomPart(level, pos, blockState, player); } return superMethod.call(); @@ -154,13 +155,6 @@ public class DoorBlockBehavior extends AbstractCanSurviveBlockBehavior { } } - private boolean hasCorrectToolForDrops(ImmutableBlockState state, @Nullable Item item) { - if (item == null) return !state.settings().requireCorrectTool(); - return !state.settings().requireCorrectTool() - || state.settings().isCorrectTool(item.id()) - || (state.settings().respectToolComponent() && FastNMS.INSTANCE.method$ItemStack$isCorrectToolForDrops(item.getLiteralObject(), state)); - } - private boolean preventsBlockDrops(BukkitServerPlayer cePlayer) { return VersionHelper.isOrAbove1_21_5() ? cePlayer.canInstabuild() : cePlayer.isCreativeMode(); }