From 0000000000000000000000000000000000000000 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 constructor and getChangedBlockData() 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 e3a5f5824ed882058f5bac5003f66ce79733a868..b23686d2e452dc0b8bde453b4a375f424cb7504a 100644
--- a/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java
+++ b/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java
@@ -32,6 +32,13 @@ public class BlockPhysicsEvent extends BlockEvent implements Cancellable {
     private final Block sourceBlock;
     private boolean cancel = false;
 
+    // Paper start - Legacy constructor, use #BlockPhysicsEvent(Block, BlockData, Block)
+    @Deprecated
+    public BlockPhysicsEvent(final Block block, final BlockData changed, final int sourceX, final int sourceY, final int sourceZ) {
+        this(block, changed, block.getWorld().getBlockAt(sourceX, sourceY, sourceZ));
+    }
+    // Paper end
+
     public BlockPhysicsEvent(@NotNull final Block block, @NotNull final BlockData changed) {
         this(block, changed, block);
     }
@@ -55,7 +62,8 @@ public class BlockPhysicsEvent extends BlockEvent implements Cancellable {
     }
 
     /**
-     * Gets the type of block that changed, causing this event
+     * Gets the type of block that changed, causing this event.
+     * This is the type of {@link #getBlock()} at the time of the event.
      *
      * @return Changed block's type
      */
@@ -64,6 +72,19 @@ public class BlockPhysicsEvent extends BlockEvent implements Cancellable {
         return changed.getMaterial();
     }
 
+    // Paper start - Getter for the BlockData
+    /**
+     * Gets the BlockData of the block that changed, causing this event.
+     * This is the BlockData of {@link #getBlock()} at the time of the event.
+     *
+     * @return Changed block's BlockData
+     */
+    @NotNull
+    public BlockData getChangedBlockData() {
+        return changed.clone();
+    }
+    // Paper end
+
     @Override
     public boolean isCancelled() {
         return cancel;
