From e1a4273957b3d4d8ff40c529f84d881927b9dd89 Mon Sep 17 00:00:00 2001 From: Travis Watkins Date: Sun, 5 Aug 2012 22:52:25 -0500 Subject: Fire events for tripwire and hooks. --- .../java/net/minecraft/server/BlockTripwire.java | 38 ++++++++++++++++++++++ .../net/minecraft/server/BlockTripwireHook.java | 13 ++++++++ 2 files changed, 51 insertions(+) (limited to 'src') diff --git a/src/main/java/net/minecraft/server/BlockTripwire.java b/src/main/java/net/minecraft/server/BlockTripwire.java index c741a684..1385732a 100644 --- a/src/main/java/net/minecraft/server/BlockTripwire.java +++ b/src/main/java/net/minecraft/server/BlockTripwire.java @@ -3,6 +3,11 @@ package net.minecraft.server; import java.util.List; import java.util.Random; +// CraftBukkit start +import org.bukkit.event.block.BlockRedstoneEvent; +import org.bukkit.event.entity.EntityInteractEvent; +// CraftBukkit end + public class BlockTripwire extends Block { public BlockTripwire(int i) { @@ -135,6 +140,39 @@ public class BlockTripwire extends Block { flag1 = true; } + // CraftBukkit start + org.bukkit.World bworld = world.getWorld(); + org.bukkit.plugin.PluginManager manager = world.getServer().getPluginManager(); + + if (flag != flag1) { + if (flag1) { + for (Object object : list) { + if (object != null) { + org.bukkit.event.Cancellable cancellable; + + if (object instanceof EntityHuman) { + cancellable = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent((EntityHuman) object, org.bukkit.event.block.Action.PHYSICAL, i, j, k, -1, null); + } else if (object instanceof Entity) { + cancellable = new EntityInteractEvent(((Entity) object).getBukkitEntity(), bworld.getBlockAt(i, j, k)); + manager.callEvent((EntityInteractEvent) cancellable); + } else { + continue; + } + + if (cancellable.isCancelled()) { + return; + } + } + } + } + + BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(bworld.getBlockAt(i, j, k), flag ? 1 : 0, flag1 ? 1 : 0); + manager.callEvent(eventRedstone); + + flag1 = eventRedstone.getNewCurrent() > 0; + } + // CraftBukkit end + if (flag1 && !flag) { l |= 1; } diff --git a/src/main/java/net/minecraft/server/BlockTripwireHook.java b/src/main/java/net/minecraft/server/BlockTripwireHook.java index 1f0b10b0..6025e8fd 100644 --- a/src/main/java/net/minecraft/server/BlockTripwireHook.java +++ b/src/main/java/net/minecraft/server/BlockTripwireHook.java @@ -2,6 +2,8 @@ package net.minecraft.server; import java.util.Random; +import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit + public class BlockTripwireHook extends Block { public BlockTripwireHook(int i) { @@ -153,6 +155,17 @@ public class BlockTripwireHook extends Block { this.a(world, l2, j, k3, flag3, flag4, flag1, flag2); } + // CraftBukkit start + org.bukkit.block.Block block = world.getWorld().getBlockAt(i, j, k); + + BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, 1, 0); + world.getServer().getPluginManager().callEvent(eventRedstone); + + if (eventRedstone.getNewCurrent() > 0) { + return; + } + // CraftBukkit end + this.a(world, i, j, k, flag3, flag4, flag1, flag2); if (l > 0) { world.setData(i, j, k, i1); -- cgit v1.2.3