From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: violetc <58360096+s-yh-china@users.noreply.github.com> Date: Sat, 20 May 2023 21:46:13 +0800 Subject: [PATCH] Fix trapdoor feature diff --git a/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java b/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java index b9e3c9cd709d42bced85436720ccc7b9c7e49552..90f193caf333d39e9494f1596d49b4a592e56e4c 100644 --- a/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java @@ -124,26 +124,7 @@ public class TrapDoorBlock extends HorizontalDirectionalBlock implements SimpleW flag1 = eventRedstone.getNewCurrent() > 0; } // CraftBukkit end - boolean open = (Boolean) state.getValue(TrapDoorBlock.OPEN) != flag1; // Paper - break redstone on trapdoors early - // Paper start - break redstone on trapdoors early - // note: this must run before any state for this block/its neighborus are written to the world - // we allow the redstone event to fire so that plugins can block - if (flag1 && open) { // if we are now powered and it caused the trap door to open - // in this case, first check for the redstone on top first - BlockPos abovePos = pos.above(); - BlockState above = world.getBlockState(abovePos); - if (above.getBlock() instanceof RedStoneWireBlock) { - world.setBlock(abovePos, Blocks.AIR.defaultBlockState(), Block.UPDATE_CLIENTS | Block.UPDATE_NEIGHBORS); - Block.popResource(world, abovePos, new net.minecraft.world.item.ItemStack(net.minecraft.world.item.Items.REDSTONE)); - // now check that this didn't change our state - if (world.getBlockState(pos) != state) { - // our state was changed, so we cannot propagate this update - return; - } - } - } - // Paper end - break redstone on trapdoors early - if (open) { // Paper - break redstone on trapdoors early + if ((Boolean) state.getValue(TrapDoorBlock.OPEN) != flag1) { // Leaves - it is feature, not bug! state = (BlockState) state.setValue(TrapDoorBlock.OPEN, flag1); this.playSound((Player) null, world, pos, flag1); }