--- ../src-base/minecraft/net/minecraft/block/BlockPressurePlate.java +++ ../src-work/minecraft/net/minecraft/block/BlockPressurePlate.java @@ -8,6 +8,8 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; +import org.bukkit.event.entity.EntityInteractEvent; // CraftBukkit + public class BlockPressurePlate extends BlockBasePressurePlate { private BlockPressurePlate.Sensitivity field_150069_a; @@ -54,8 +56,34 @@ while (iterator.hasNext()) { - Entity entity = (Entity)iterator.next(); + Entity entity = (Entity) iterator.next(); + // CraftBukkit start - Call interact event when turning on a pressure plate + if (this.func_150060_c(p_150065_1_.getBlockMetadata(p_150065_2_, p_150065_3_, p_150065_4_)) == 0) + { + org.bukkit.World bworld = p_150065_1_.getWorld(); + org.bukkit.plugin.PluginManager manager = p_150065_1_.getServer().getPluginManager(); + org.bukkit.event.Cancellable cancellable; + + if (entity instanceof EntityPlayer) + { + cancellable = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent((EntityPlayer) entity, org.bukkit.event.block.Action.PHYSICAL, p_150065_2_, p_150065_3_, p_150065_4_, -1, null); + } + else + { + cancellable = new EntityInteractEvent(entity.getBukkitEntity(), bworld.getBlockAt(p_150065_2_, p_150065_3_, p_150065_4_)); + manager.callEvent((EntityInteractEvent) cancellable); + } + + // We only want to block turning the plate on if all events are cancelled + if (cancellable.isCancelled()) + { + continue; + } + } + + // CraftBukkit end + if (!entity.doesEntityNotTriggerPressurePlate()) { return 15;