From 2ce14a4e684ff7a64be666a6e4935c21317b0275 Mon Sep 17 00:00:00 2001 From: XiaoMoMi <972454774@qq.com> Date: Sat, 11 Oct 2025 01:49:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E6=96=B9=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/block/BlockEventListener.java | 11 +++++++++ .../item/listener/ItemEventListener.java | 23 ++++++++++--------- .../bukkit/util/InteractUtils.java | 1 + 3 files changed, 24 insertions(+), 11 deletions(-) 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 0a6cf5176..94aee84db 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 @@ -95,6 +95,17 @@ public final class BlockEventListener implements Listener { Object soundId = FastNMS.INSTANCE.field$SoundEvent$location(soundEvent); player.playSound(block.getLocation().add(0.5, 0.5, 0.5), soundId.toString(), SoundCategory.BLOCKS, 1f, 0.8f); } + + ItemStack itemInHand = event.getItemInHand(); + Item wrap = this.plugin.itemManager().wrap(itemInHand); + Optional> optionalCustomItem = wrap.getCustomItem(); + if (optionalCustomItem.isPresent()) { + CustomItem customItem = optionalCustomItem.get(); + // 阻止放置方块 + if (customItem.settings().disableVanillaBehavior()) { + event.setCancelled(true); + } + } } @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/ItemEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/ItemEventListener.java index 1554918eb..b5e0ee327 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/ItemEventListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/ItemEventListener.java @@ -283,17 +283,18 @@ public class ItemEventListener implements Listener { } } } - // custom item - else { - if (optionalCustomItem.get().settings().disableVanillaBehavior()) { - // 允许尝试放置方块 - if (serverPlayer.isSecondaryUseActive() || !InteractUtils.isInteractable(player, blockData, hitResult, itemInHand)) { - if (InteractUtils.canPlaceBlock(new BlockPlaceContext(new UseOnContext(serverPlayer, hand, itemInHand, hitResult)))) { - event.setCancelled(true); - } - } - } - } + // 迁移到了BlockPlaceEvent里 +// // custom item +// else { +// if (optionalCustomItem.get().settings().disableVanillaBehavior()) { +// // 允许尝试放置方块 +// if (serverPlayer.isSecondaryUseActive() || !InteractUtils.isInteractable(player, blockData, hitResult, itemInHand)) { +// if (InteractUtils.canPlaceBlock(new BlockPlaceContext(new UseOnContext(serverPlayer, hand, itemInHand, hitResult)))) { +// event.setCancelled(true); +// } +// } +// } +// } } // 优先检查物品行为,再执行自定义事件 diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java index 069deb791..e4efdb704 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java @@ -38,6 +38,7 @@ import org.bukkit.block.data.Levelled; import org.bukkit.block.data.Lightable; import org.bukkit.block.data.type.*; import org.bukkit.entity.*; +import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.Nullable;