9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2025-12-21 07:49:35 +00:00
Files
LeavesMC/patches/server/0059-Fix-trapdoor-feature.patch
2023-09-11 12:06:30 +08:00

39 lines
2.6 KiB
Diff

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);
}