Paper/nms-patches/EntityEnderman.patch
2015-05-25 20:37:24 +10:00

63 lines
3.0 KiB
Diff

--- a/net/minecraft/server/EntityEnderman.java
+++ b/net/minecraft/server/EntityEnderman.java
@@ -8,6 +8,12 @@
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 {
private static final UUID a = UUID.fromString("020E0DFB-87AE-4653-9556-831010E291A0");
@@ -177,7 +183,17 @@
}
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;
}
@@ -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
}
}