From 583189b541e2f66f8cba8c8bdaad093018c5af37 Mon Sep 17 00:00:00 2001 From: HHuang19 Date: Sat, 22 Aug 2026 11:08:11 -0500 Subject: [PATCH 1/2] =?UTF-8?q?fix(client):=20=E4=BF=AE=E5=A4=8D=E5=A4=9A?= =?UTF-8?q?=E7=9B=B8=E5=B7=A5=E5=85=B7=E5=9C=A8=E7=95=8C=E9=9D=A2=E4=B8=AD?= =?UTF-8?q?=E6=8C=89=E9=94=AE=E8=AF=AF=E8=A7=A6=E7=9B=B8=E4=BD=8D=E5=88=87?= =?UTF-8?q?=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增按键接受状态,仅在游戏内按下时响应释放事件 - 阻止背包、聊天栏和暂停界面的释放事件发送切换数据包 --- .../client/event/WheelLifecycleEventListener.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/dev/dubhe/anvilcraft/client/event/WheelLifecycleEventListener.java b/src/main/java/dev/dubhe/anvilcraft/client/event/WheelLifecycleEventListener.java index 0335e9fae8..9fa0139fe9 100644 --- a/src/main/java/dev/dubhe/anvilcraft/client/event/WheelLifecycleEventListener.java +++ b/src/main/java/dev/dubhe/anvilcraft/client/event/WheelLifecycleEventListener.java @@ -49,6 +49,7 @@ public class WheelLifecycleEventListener { private static long multiphaseKeyTime = -1L; private static boolean multiphaseKeyWasDown = false; + private static boolean multiphaseKeyPressAccepted = false; private static @Nullable Optional multiphaseWheelCache = null; private static long resonatorKeyTime = -1L; @@ -620,6 +621,10 @@ public static void onKeyInput(InputEvent.MouseButton.Post event) { private static void processMultiphasePress(Minecraft client, int action) { if (client.level == null) return; if (action == GLFW.GLFW_RELEASE) { + if (!WheelLifecycleEventListener.multiphaseKeyPressAccepted) { + return; + } + WheelLifecycleEventListener.multiphaseKeyPressAccepted = false; if (WheelLifecycleEventListener.multiphaseKeyWasDown) { CONTROLLER.onHoldKeyReleased(); } else { @@ -632,6 +637,7 @@ private static void processMultiphasePress(Minecraft client, int action) { } if (Minecraft.getInstance().screen != null) return; if (action == GLFW.GLFW_PRESS) { + WheelLifecycleEventListener.multiphaseKeyPressAccepted = true; if (!WheelLifecycleEventListener.multiphaseKeyWasDown) { WheelLifecycleEventListener.multiphaseKeyTime = client.level.getGameTime(); } From 144232493be51dffb6f3763cb5a04432a7196bcb Mon Sep 17 00:00:00 2001 From: HHuang19 Date: Sat, 22 Aug 2026 13:19:30 -0500 Subject: [PATCH 2/2] =?UTF-8?q?feat(block):=20=E4=BC=98=E5=8C=96=E9=87=8D?= =?UTF-8?q?=E5=9E=8B=E9=93=81=E6=A2=81=E4=BA=A4=E4=BA=92=E4=B8=8E=E5=8F=AF?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为重型铁梁添加锤击旋转轴向能力 - 将唱片机加入锤击可移除方块标签 - 更新对应生成数据 --- .../tags/block/hammer_removable.json | 1 + .../anvilcraft/block/HeavyIronBeamBlock.java | 19 +++++++++++++++++-- .../anvilcraft/data/tags/BlockTagLoader.java | 1 + 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/generated/resources/data/anvilcraft/tags/block/hammer_removable.json b/src/generated/resources/data/anvilcraft/tags/block/hammer_removable.json index 2ff1566cc4..21c4b1f39e 100644 --- a/src/generated/resources/data/anvilcraft/tags/block/hammer_removable.json +++ b/src/generated/resources/data/anvilcraft/tags/block/hammer_removable.json @@ -18,6 +18,7 @@ "minecraft:detector_rail", "minecraft:powered_rail", "minecraft:note_block", + "minecraft:jukebox", "minecraft:observer", "minecraft:hopper", "minecraft:dropper", diff --git a/src/main/java/dev/dubhe/anvilcraft/block/HeavyIronBeamBlock.java b/src/main/java/dev/dubhe/anvilcraft/block/HeavyIronBeamBlock.java index 602794a0a1..1638faece0 100644 --- a/src/main/java/dev/dubhe/anvilcraft/block/HeavyIronBeamBlock.java +++ b/src/main/java/dev/dubhe/anvilcraft/block/HeavyIronBeamBlock.java @@ -4,20 +4,23 @@ import dev.dubhe.anvilcraft.api.hammer.IHammerRemovable; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.shapes.BooleanOp; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import org.jetbrains.annotations.Nullable; public class HeavyIronBeamBlock extends Block implements IHammerRemovable, HammerRotateBehavior { @@ -33,7 +36,6 @@ public HeavyIronBeamBlock(Properties properties) { registerDefaultState(getStateDefinition().any().setValue(AXIS, Direction.Axis.X)); } - @Nullable @Override public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState() @@ -61,6 +63,19 @@ public VoxelShape getShape( }; } + @Override + public boolean change(Player player, BlockPos blockPos, Level level, ItemStack anvilHammer) { + BlockState state = level.getBlockState(blockPos); + Direction.Axis newAxis = state.getValue(AXIS) == Direction.Axis.X ? Direction.Axis.Z : Direction.Axis.X; + level.setBlockAndUpdate(blockPos, state.setValue(AXIS, newAxis)); + return true; + } + + @Override + public Property getChangeableProperty(BlockState blockState) { + return AXIS; + } + @Override protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; diff --git a/src/main/java/dev/dubhe/anvilcraft/data/tags/BlockTagLoader.java b/src/main/java/dev/dubhe/anvilcraft/data/tags/BlockTagLoader.java index 646e0dbee1..45dc38020f 100644 --- a/src/main/java/dev/dubhe/anvilcraft/data/tags/BlockTagLoader.java +++ b/src/main/java/dev/dubhe/anvilcraft/data/tags/BlockTagLoader.java @@ -53,6 +53,7 @@ public static void init(RegistrumTagsProvider provider) { .add(findResourceKey(Blocks.DETECTOR_RAIL)) .add(findResourceKey(Blocks.POWERED_RAIL)) .add(findResourceKey(Blocks.NOTE_BLOCK)) + .add(findResourceKey(Blocks.JUKEBOX)) .add(findResourceKey(Blocks.OBSERVER)) .add(findResourceKey(Blocks.HOPPER)) .add(findResourceKey(Blocks.DROPPER))