From a924b59822d15436017aaa9ab10288a06f7e5263 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 5e47eabe8..9d9e4712b 100644
--- a/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java
+++ b/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java
@@ -29,10 +29,34 @@ public class BlockPhysicsEvent extends BlockEvent implements Cancellable {
     private static final HandlerList handlers = new HandlerList();
     private final BlockData changed;
     private boolean cancel = false;
+    // Paper start - add source block
+    private int sourceX;
+    private int sourceY;
+    private int sourceZ;
+    private Block sourceBlock;
+
+    public BlockPhysicsEvent(final Block block, final BlockData 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
 
     public BlockPhysicsEvent(final Block block, final BlockData changed) {
         super(block);
         this.changed = changed;
+        this.sourceBlock = block; // Paper - add source block
     }
 
     /**
-- 
2.18.0