From a802db6737065697d3668b53a32d9eb5265fdab5 Mon Sep 17 00:00:00 2001
From: Sotr <i@omc.hk>
Date: Thu, 23 Aug 2018 16:14:25 +0800
Subject: [PATCH] Add source block to BlockPhysicsEvent


diff --git a/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java b/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java
index 01a545b4..d17e05ac 100644
--- a/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java
+++ b/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java
@@ -12,6 +12,39 @@ public class BlockPhysicsEvent extends BlockEvent implements Cancellable {
     private static final HandlerList handlers = new HandlerList();
     private final int changed;
     private boolean cancel = false;
+    // Paper start - add source block
+    private int sourceX;
+    private int sourceY;
+    private int sourceZ;
+    private Block sourceBlock;
+
+    /**
+     *
+     * @deprecated Magic value
+     * @param block the block involved in this event
+     * @param changed the changed block's type id
+     * @param sourceX the x of the source block
+     * @param sourceY the y of the source block
+     * @param sourceZ the z of the source block
+     */
+    @Deprecated
+    public BlockPhysicsEvent(final Block block, final int changed, final int sourceX, final int sourceY, final int sourceZ) {
+        this(block, changed);
+        this.sourceX = sourceX;
+        this.sourceY = sourceY;
+        this.sourceZ = sourceZ;
+        this.sourceBlock = null;
+    }
+
+    /**
+     * Gets the source block, causing this event
+     *
+     * @return Source block
+     */
+    public Block getSourceBlock() {
+        return sourceBlock == null ? (sourceBlock = block.getWorld().getBlockAt(sourceX, sourceY, sourceZ)) : sourceBlock;
+    }
+    // Paper end
 
     /**
      *
@@ -23,6 +56,7 @@ public class BlockPhysicsEvent extends BlockEvent implements Cancellable {
     public BlockPhysicsEvent(final Block block, final int changed) {
         super(block);
         this.changed = changed;
+        this.sourceBlock = block; // Paper - add source block
     }
 
     /**
-- 
2.18.0.windows.1