SPIGOT-4064: Fix BlockPistonRetractEvent for regular pistons

This commit is contained in:
md_5 2018-07-20 10:59:23 +10:00
parent 66b62a63b5
commit fa6e97a8f8

View File

@ -19,25 +19,25 @@
public class BlockPiston extends BlockDirectional { public class BlockPiston extends BlockDirectional {
public static final BlockStateBoolean EXTENDED = BlockProperties.f; public static final BlockStateBoolean EXTENDED = BlockProperties.f;
@@ -109,6 +121,18 @@ @@ -111,6 +123,18 @@
b0 = 2;
}
} }
+ // CraftBukkit start
+ if (!this.sticky) {
+ org.bukkit.block.Block block = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
+ BlockPistonRetractEvent event = new BlockPistonRetractEvent(block, ImmutableList.<org.bukkit.block.Block>of(), CraftBlock.notchToBlockFace(enumdirection));
+ world.getServer().getPluginManager().callEvent(event);
+
+ if (event.isCancelled()) {
+ return;
+ }
+ }
+ // PAIL: checkME - what happened to setTypeAndData?
+ // CraftBukkit end
} }
+ // CraftBukkit start
+ if (!this.sticky) {
+ org.bukkit.block.Block block = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
+ BlockPistonRetractEvent event = new BlockPistonRetractEvent(block, ImmutableList.<org.bukkit.block.Block>of(), CraftBlock.notchToBlockFace(enumdirection));
+ world.getServer().getPluginManager().callEvent(event);
+
+ if (event.isCancelled()) {
+ return;
+ }
+ }
+ // PAIL: checkME - what happened to setTypeAndData?
+ // CraftBukkit end
world.playBlockAction(blockposition, this, b0, enumdirection.a()); world.playBlockAction(blockposition, this, b0, enumdirection.a());
}
@@ -271,6 +295,48 @@ @@ -271,6 +295,48 @@
IBlockData[] aiblockdata = new IBlockData[j]; IBlockData[] aiblockdata = new IBlockData[j];
EnumDirection enumdirection1 = flag ? enumdirection : enumdirection.opposite(); EnumDirection enumdirection1 = flag ? enumdirection : enumdirection.opposite();