geforkt von Mirrors/Paper
dc684c60d1
The new behavior of disconnect to block the current thread until the disconnect succeeded is better than throwing it off to happen at some point
33 Zeilen
2.1 KiB
Diff
33 Zeilen
2.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
|
|
Date: Sun, 7 Aug 2022 22:16:36 +0200
|
|
Subject: [PATCH] Call BlockPhysicsEvent more often
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/redstone/CollectingNeighborUpdater.java b/src/main/java/net/minecraft/world/level/redstone/CollectingNeighborUpdater.java
|
|
index 457a963ee6ebd3cf5c3831f6660e3850335af49f..106af2b2c7ff72c7549975aef75cdcff8d9a7d97 100644
|
|
--- a/src/main/java/net/minecraft/world/level/redstone/CollectingNeighborUpdater.java
|
|
+++ b/src/main/java/net/minecraft/world/level/redstone/CollectingNeighborUpdater.java
|
|
@@ -119,7 +119,20 @@ public class CollectingNeighborUpdater implements NeighborUpdater {
|
|
public boolean runNext(Level world) {
|
|
BlockPos blockPos = this.sourcePos.relative(NeighborUpdater.UPDATE_ORDER[this.idx++]);
|
|
BlockState blockState = world.getBlockState(blockPos);
|
|
- NeighborUpdater.executeUpdate(world, blockState, blockPos, this.sourceBlock, this.sourcePos, false);
|
|
+ // Paper start - Call BlockPhysicsEvent
|
|
+ try {
|
|
+ org.bukkit.event.block.BlockPhysicsEvent event = new org.bukkit.event.block.BlockPhysicsEvent(
|
|
+ org.bukkit.craftbukkit.block.CraftBlock.at(world, blockPos),
|
|
+ org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(blockState),
|
|
+ org.bukkit.craftbukkit.block.CraftBlock.at(world, this.sourcePos));
|
|
+
|
|
+ if (event.callEvent()) { // continue to check for adjacent block (increase idx)
|
|
+ NeighborUpdater.executeUpdate(world, blockState, blockPos, this.sourceBlock, this.sourcePos, false);
|
|
+ }
|
|
+ } catch (StackOverflowError ex) {
|
|
+ world.lastPhysicsProblem = blockPos;
|
|
+ }
|
|
+ // Paper end - Call BlockPhysicsEvent
|
|
if (this.idx < NeighborUpdater.UPDATE_ORDER.length && NeighborUpdater.UPDATE_ORDER[this.idx] == this.skipDirection) {
|
|
this.idx++;
|
|
}
|