diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java index 79f277bc3..3d61ad586 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java @@ -16,14 +16,17 @@ import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; +import org.bukkit.entity.FallingBlock; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockPistonExtendEvent; import org.bukkit.event.block.BlockPistonRetractEvent; +import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; public class BlockListener implements Listener { @@ -31,6 +34,19 @@ public class BlockListener implements Listener { plugin.getServer().getPluginManager().registerEvents(this, plugin); } + @EventHandler + public void onBlockFall(EntityChangeBlockEvent event) { + if (event.getEntity() instanceof FallingBlock) { + if (BlockStorage.hasBlockInfo(event.getBlock())) { + event.setCancelled(true); + FallingBlock fb = (FallingBlock) event.getEntity(); + if (fb.getDropItem()) { + fb.getWorld().dropItemNaturally(fb.getLocation(), new ItemStack(fb.getMaterial(), 1, fb.getBlockData())); + } + } + } + } + @EventHandler public void onPistonExtend(BlockPistonExtendEvent e) { for (Block b : e.getBlocks()) { @@ -38,6 +54,10 @@ public class BlockListener implements Listener { e.setCancelled(true); return; } + else if(b.getRelative(e.getDirection()) == null && BlockStorage.hasBlockInfo(b.getRelative(e.getDirection()))) { + e.setCancelled(true); + return; + } } } @@ -49,6 +69,10 @@ public class BlockListener implements Listener { e.setCancelled(true); return; } + else if(b.getRelative(e.getDirection()) == null && BlockStorage.hasBlockInfo(b.getRelative(e.getDirection()))) { + e.setCancelled(true); + return; + } } } }