2015-05-25 12:37:24 +02:00
|
|
|
--- a/net/minecraft/server/EntityEnderman.java
|
|
|
|
+++ b/net/minecraft/server/EntityEnderman.java
|
2015-02-26 23:41:06 +01:00
|
|
|
@@ -8,6 +8,12 @@
|
2014-11-25 22:32:16 +01:00
|
|
|
import java.util.Set;
|
|
|
|
import java.util.UUID;
|
|
|
|
|
|
|
|
+// CraftBukkit start
|
|
|
|
+import org.bukkit.Location;
|
|
|
|
+import org.bukkit.craftbukkit.event.CraftEventFactory;
|
|
|
|
+import org.bukkit.event.entity.EntityTeleportEvent;
|
|
|
|
+// CraftBukkit end
|
|
|
|
+
|
|
|
|
public class EntityEnderman extends EntityMonster {
|
|
|
|
|
2015-02-26 23:41:06 +01:00
|
|
|
private static final UUID a = UUID.fromString("020E0DFB-87AE-4653-9556-831010E291A0");
|
|
|
|
@@ -177,7 +183,17 @@
|
2014-11-25 22:32:16 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
if (flag1) {
|
|
|
|
- super.enderTeleportTo(this.locX, this.locY, this.locZ);
|
|
|
|
+ // CraftBukkit start - Teleport event
|
|
|
|
+ // super.enderTeleportTo(this.locX, this.locY, this.locZ);
|
|
|
|
+ EntityTeleportEvent teleport = new EntityTeleportEvent(this.getBukkitEntity(), new Location(this.world.getWorld(), d3, d4, d5), new Location(this.world.getWorld(), this.locX, this.locY, this.locZ));
|
|
|
|
+ this.world.getServer().getPluginManager().callEvent(teleport);
|
|
|
|
+ if (teleport.isCancelled()) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Location to = teleport.getTo();
|
|
|
|
+ this.enderTeleportTo(to.getX(), to.getY(), to.getZ());
|
|
|
|
+ // CraftBukkit end
|
|
|
|
if (this.world.getCubes(this, this.getBoundingBox()).isEmpty() && !this.world.containsLiquid(this.getBoundingBox())) {
|
|
|
|
flag = true;
|
|
|
|
}
|
2015-02-26 23:41:06 +01:00
|
|
|
@@ -333,8 +349,12 @@
|
|
|
|
Block block = iblockdata.getBlock();
|
|
|
|
|
|
|
|
if (EntityEnderman.c.contains(block)) {
|
|
|
|
- this.enderman.setCarried(iblockdata);
|
|
|
|
- world.setTypeUpdate(blockposition, Blocks.AIR.getBlockData());
|
|
|
|
+ // CraftBukkit start - Pickup event
|
|
|
|
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.enderman, this.enderman.world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()), org.bukkit.Material.AIR).isCancelled()) {
|
|
|
|
+ this.enderman.setCarried(iblockdata);
|
|
|
|
+ world.setTypeUpdate(blockposition, Blocks.AIR.getBlockData());
|
|
|
|
+ }
|
|
|
|
+ // CraftBukkit end
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
@@ -363,8 +383,12 @@
|
|
|
|
Block block1 = world.getType(blockposition.down()).getBlock();
|
|
|
|
|
|
|
|
if (this.a(world, blockposition, this.a.getCarried().getBlock(), block, block1)) {
|
|
|
|
+ // CraftBukkit start - Place event
|
|
|
|
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.a, blockposition.getX(), blockposition.getY(), blockposition.getZ(), this.a.getCarried().getBlock(), this.a.getCarried().getBlock().toLegacyData(this.a.getCarried())).isCancelled()) {
|
|
|
|
world.setTypeAndData(blockposition, this.a.getCarried(), 3);
|
|
|
|
this.a.setCarried(Blocks.AIR.getBlockData());
|
|
|
|
+ }
|
|
|
|
+ // CraftBukkit end
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|