From 623a66776a9458b9c51abfb5fb0cefe6bc86cb79 Mon Sep 17 00:00:00 2001 From: Fff <141797114+WhereisFff@users.noreply.github.com> Date: Thu, 1 Oct 2026 18:54:34 -0700 Subject: [PATCH] =?UTF-8?q?fix(client):=20=E4=BF=AE=E5=A4=8D=E6=BA=9C?= =?UTF-8?q?=E6=A7=BD=E5=AF=B9=E5=87=86=E5=AE=B9=E5=99=A8=E6=97=B6=E7=9A=84?= =?UTF-8?q?=E6=94=BE=E7=BD=AE=E9=A2=84=E8=A7=88=20(#5120)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 按溜槽首轮交互规则检查原始点击位置和方向的物品容器,恢复主手放置预览 - 保留创造板条箱及仓储端口的中心交互,以及副手、潜行和其他方块的既有交互优先级 --- .../dev/dubhe/anvilcraft/util/PlacementInteractions.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/dev/dubhe/anvilcraft/util/PlacementInteractions.java b/src/main/java/dev/dubhe/anvilcraft/util/PlacementInteractions.java index 4c962780c1..59c14e10eb 100644 --- a/src/main/java/dev/dubhe/anvilcraft/util/PlacementInteractions.java +++ b/src/main/java/dev/dubhe/anvilcraft/util/PlacementInteractions.java @@ -1,5 +1,6 @@ package dev.dubhe.anvilcraft.util; +import dev.dubhe.anvilcraft.api.itemhandler.IItemHandlerHolder; import dev.dubhe.anvilcraft.block.entity.StoragePortBlockEntity; import dev.dubhe.anvilcraft.block.entity.StoragePortConsolidatorBlockEntity; import dev.dubhe.anvilcraft.block.entity.storage.StorageBlockEntity; @@ -22,6 +23,7 @@ import net.minecraft.world.level.block.LeverBlock; import net.minecraft.world.level.block.NoteBlock; import net.minecraft.world.level.block.RepeaterBlock; +import net.neoforged.neoforge.capabilities.Capabilities; /** 只读判断交互优先级,预览阶段不能调用 use 方法打开界面或改变世界。 */ public final class PlacementInteractions { @@ -35,6 +37,13 @@ public static boolean allowsPlacement(UseOnContext context) { if (context.getHand() == InteractionHand.OFF_HAND && player.getMainHandItem().getUseAnimation() != UseAnim.NONE) return false; if (context.getItemInHand().getItem() instanceof ChuteBlockItem && ChuteBlockItem.isStorageInteraction(context)) return false; if (player.isSecondaryUseActive()) return true; + if (context.getHand() == InteractionHand.MAIN_HAND && context.getItemInHand().getItem() instanceof ChuteBlockItem + && (context.getLevel().getBlockEntity(context.getClickedPos()) instanceof IItemHandlerHolder + || context.getLevel().getCapability( + Capabilities.ItemHandler.BLOCK, context.getClickedPos(), context.getClickedFace() + ) != null)) { + return true; + } var state = context.getLevel().getBlockState(context.getClickedPos()); var block = state.getBlock(); BlockPos menuPos = block instanceof AbstractMultiPartBlock multipart