e90c758a01
Add Lophine-specific configuration support (global and carpet configs) and a temporary config transform step during init. Introduce config-controlled command registrations (function, scoreboard, trigger, tick) and enable tick-rate/command tweaks and an entity raytracing tracker flag. Fix datapack command save/listing behavior. Integrate Leaves update-suppression handling broadly: catch and convert update-suppression exceptions across packet handling, ticking, neighbor updates, block state updates and more; add configurable shulker CCE behavior and redstone upward-update compatibility. Provide an option to reintroduce an InstantNeighborUpdater (instant block updater) and other small compatibility/rebrand adjustments.
44 lines
2.7 KiB
Diff
44 lines
2.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Helvetica Volubi <suisuroru@blue-millennium.fun>
|
|
Date: Tue, 18 Nov 2025 00:24:32 +0800
|
|
Subject: [PATCH] Revert TrapDoorBlock changes form Paper
|
|
|
|
|
|
diff --git a/net/minecraft/world/level/block/TrapDoorBlock.java b/net/minecraft/world/level/block/TrapDoorBlock.java
|
|
index cfc8b668980e0cba74b3f0d42c4902eb6aa8b01e..f01894c230b1ae4add3e20329e8dc87571d2c793 100644
|
|
--- a/net/minecraft/world/level/block/TrapDoorBlock.java
|
|
+++ b/net/minecraft/world/level/block/TrapDoorBlock.java
|
|
@@ -133,31 +133,7 @@ public class TrapDoorBlock extends HorizontalDirectionalBlock implements SimpleW
|
|
if (!level.isClientSide()) {
|
|
boolean signal = level.hasNeighborSignal(pos);
|
|
if (signal != state.getValue(POWERED)) {
|
|
- // Paper start - Call BlockRedstoneEvent
|
|
- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callBinaryRedstoneChange(level, pos, signal)) {
|
|
- return;
|
|
- }
|
|
- // Paper end - Call BlockRedstoneEvent
|
|
- // Paper start - break redstone on trapdoors early
|
|
- boolean open = state.getValue(TrapDoorBlock.OPEN) != signal;
|
|
- // note: this must run before any state for this block/its neighbours are written to the world
|
|
- // we allow the redstone event to fire so that plugins can block
|
|
- if (signal && 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 = level.getBlockState(abovePos);
|
|
- if (above.getBlock() instanceof RedStoneWireBlock) {
|
|
- level.setBlock(abovePos, Blocks.AIR.defaultBlockState(), Block.UPDATE_CLIENTS | Block.UPDATE_NEIGHBORS);
|
|
- Block.popResource(level, abovePos, new ItemStack(net.minecraft.world.item.Items.REDSTONE));
|
|
- // now check that this didn't change our state
|
|
- if (level.getBlockState(pos) != state) {
|
|
- // our state was changed, so we cannot propagate this update
|
|
- return;
|
|
- }
|
|
- }
|
|
- }
|
|
- if (open) {
|
|
- // Paper end - break redstone on trapdoors early
|
|
+ if (state.getValue(OPEN) != signal) { // Lophine - revert Paper trapdoor redstone handling
|
|
state = state.setValue(OPEN, signal);
|
|
this.playSound(null, level, pos, signal);
|
|
}
|