[ci skip] Cleanup events (#10202)

This commit is contained in:
Lulu13022002 2024-02-01 10:15:57 +01:00 committed by GitHub
parent b3c81089ae
commit 294347bee2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
295 changed files with 3245 additions and 3088 deletions

View file

@ -5,33 +5,26 @@ 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 7d54abc2553f4b319df4d533a0b689c1807b6102..395bb163fb1d62dd2e6949e1146c337c0bbc626f 100644
index 7d54abc2553f4b319df4d533a0b689c1807b6102..87db9febbbf53702be0e1e89a95db99e823713e5 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,27 @@ public class CollectingNeighborUpdater implements NeighborUpdater {
@@ -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 {
+ boolean cancelled = false;
+ org.bukkit.craftbukkit.CraftWorld cworld = world.getWorld();
+ if (cworld != null) {
+ 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, sourcePos));
+ 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()) {
+ cancelled = true;
+ }
+ }
+ if (!cancelled) { // continue to check for adjacent block (increase idx)
+ 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 = new BlockPos(blockPos);
+ world.lastPhysicsProblem = blockPos;
+ }
+ // Paper end - Call BlockPhysicsEvent
if (this.idx < NeighborUpdater.UPDATE_ORDER.length && NeighborUpdater.UPDATE_ORDER[this.idx] == this.skipDirection) {