From 9da730c8e1b33b242a02e631d6433bca3d2fb8e7 Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Sat, 14 Jan 2012 12:56:54 +0000 Subject: [PATCH] Made Mycel blocks throw BlockFade and BlockSpread events. This fixes BUKKIT-488. Thanks to tips48 for the pull request. --- .../java/net/minecraft/server/BlockMycel.java | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/BlockMycel.java b/src/main/java/net/minecraft/server/BlockMycel.java index f107db77b9..dd7acbbdde 100644 --- a/src/main/java/net/minecraft/server/BlockMycel.java +++ b/src/main/java/net/minecraft/server/BlockMycel.java @@ -1,6 +1,8 @@ package net.minecraft.server; import java.util.Random; +import org.bukkit.event.block.BlockFadeEvent; // CraftBukkit +import org.bukkit.event.block.BlockSpreadEvent; // CraftBukkit public class BlockMycel extends Block { @@ -17,7 +19,18 @@ public class BlockMycel extends Block { public void a(World world, int i, int j, int k, Random random) { if (!world.isStatic) { if (world.getLightLevel(i, j + 1, k) < 4 && Block.q[world.getTypeId(i, j + 1, k)] > 2) { - world.setTypeId(i, j, k, Block.DIRT.id); + // CraftBukkit start + org.bukkit.World bworld = world.getWorld(); + org.bukkit.block.BlockState blockState = bworld.getBlockAt(i, j, k).getState(); + blockState.setTypeId(Block.DIRT.id); + + BlockFadeEvent event = new BlockFadeEvent(blockState.getBlock(), blockState); + world.getServer().getPluginManager().callEvent(event); + + if (!event.isCancelled()) { + blockState.update(true); + } + // CraftBukkit end } else if (world.getLightLevel(i, j + 1, k) >= 9) { for (int l = 0; l < 4; ++l) { int i1 = i + random.nextInt(3) - 1; @@ -26,7 +39,18 @@ public class BlockMycel extends Block { int l1 = world.getTypeId(i1, j1 + 1, k1); if (world.getTypeId(i1, j1, k1) == Block.DIRT.id && world.getLightLevel(i1, j1 + 1, k1) >= 4 && Block.q[l1] <= 2) { - world.setTypeId(i1, j1, k1, this.id); + // CraftBukkit start + org.bukkit.World bworld = world.getWorld(); + org.bukkit.block.BlockState blockState = bworld.getBlockAt(i1, j1, k1).getState(); + blockState.setTypeId(this.id); + + BlockSpreadEvent event = new BlockSpreadEvent(blockState.getBlock(), bworld.getBlockAt(i, j, k), blockState); + world.getServer().getPluginManager().callEvent(event); + + if (!event.isCancelled()) { + blockState.update(true); + } + // CraftBukkit end } } }