summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorfeildmaster <admin@feildmaster.com>2012-04-28 12:26:07 -0500
committerfeildmaster <admin@feildmaster.com>2012-06-23 06:42:08 -0500
commit568fae2e863a41f168f10c77090d16fe67e293bb (patch)
tree70a0d08b93974edc521ee96c91ca9c37cc44d86f /src
parent23d5922bbf581ce77d05710f1ef83c67ee5dbda7 (diff)
downloadcraftbukkit-568fae2e863a41f168f10c77090d16fe67e293bb.tar
craftbukkit-568fae2e863a41f168f10c77090d16fe67e293bb.tar.gz
craftbukkit-568fae2e863a41f168f10c77090d16fe67e293bb.tar.lz
craftbukkit-568fae2e863a41f168f10c77090d16fe67e293bb.tar.xz
craftbukkit-568fae2e863a41f168f10c77090d16fe67e293bb.zip
Trigger EntityBlockChangeEvent for Silverfish. Adds BUKKIT-1560 and BUKKIT-1593
Diffstat (limited to 'src')
-rw-r--r--src/main/java/net/minecraft/server/EntitySilverfish.java12
-rw-r--r--src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java7
2 files changed, 19 insertions, 0 deletions
diff --git a/src/main/java/net/minecraft/server/EntitySilverfish.java b/src/main/java/net/minecraft/server/EntitySilverfish.java
index d41b68df..88a80d73 100644
--- a/src/main/java/net/minecraft/server/EntitySilverfish.java
+++ b/src/main/java/net/minecraft/server/EntitySilverfish.java
@@ -1,5 +1,7 @@
package net.minecraft.server;
+import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
+
public class EntitySilverfish extends EntityMonster {
private int a;
@@ -96,6 +98,11 @@ public class EntitySilverfish extends EntityMonster {
int k1 = this.world.getTypeId(i + i1, j + l, k + j1);
if (k1 == Block.MONSTER_EGGS.id) {
+ // CraftBukkit start
+ if (CraftEventFactory.callEntityChangeBlockEvent(this, i + i1, j + l, k + j1, 0).isCancelled()) {
+ continue;
+ }
+ // CraftBukkit end
this.world.triggerEffect(2001, i + i1, j + l, k + j1, Block.MONSTER_EGGS.id + (this.world.getData(i + i1, j + l, k + j1) << 12));
this.world.setTypeId(i + i1, j + l, k + j1, 0);
Block.MONSTER_EGGS.postBreak(this.world, i + i1, j + l, k + j1, 0);
@@ -118,6 +125,11 @@ public class EntitySilverfish extends EntityMonster {
l = this.world.getTypeId(i + Facing.b[l1], j + Facing.c[l1], k + Facing.d[l1]);
if (BlockMonsterEggs.d(l)) {
+ // CraftBukkit start
+ if (CraftEventFactory.callEntityChangeBlockEvent(this, i + Facing.b[l1], j + Facing.c[l1], k + Facing.d[l1], Block.MONSTER_EGGS.id).isCancelled()) {
+ return;
+ }
+ // CraftBukkit end
this.world.setTypeIdAndData(i + Facing.b[l1], j + Facing.c[l1], k + Facing.d[l1], Block.MONSTER_EGGS.id, BlockMonsterEggs.e(l));
this.aC();
this.die();
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index ffd5b442..6134d118 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -441,6 +441,13 @@ public class CraftEventFactory {
return event;
}
+ public static EntityChangeBlockEvent callEntityChangeBlockEvent(Entity entity, int x, int y, int z, int type) {
+ Block block = entity.world.getWorld().getBlockAt(x, y, z);
+ Material material = Material.getMaterial(type);
+
+ return callEntityChangeBlockEvent(entity, block, material);
+ }
+
public static CreeperPowerEvent callCreeperPowerEvent(Entity creeper, Entity lightning, CreeperPowerEvent.PowerCause cause) {
CreeperPowerEvent event = new CreeperPowerEvent((Creeper) creeper.getBukkitEntity(), (LightningStrike) lightning.getBukkitEntity(), cause);
creeper.getBukkitEntity().getServer().getPluginManager().callEvent(event);