summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/EntityInsentient.java
diff options
context:
space:
mode:
authorT00thpick1 <t00thpick1dirko@gmail.com>2013-07-31 17:35:16 -0400
committerWesley Wolfe <weswolf@aol.com>2013-08-03 15:03:41 -0500
commit54672a75f60a69802e7080b526fea737608a2530 (patch)
treef8b735ee83bab4bf81b7e979986ce32fe7373fff /src/main/java/net/minecraft/server/EntityInsentient.java
parentf7ca953ff1db983a99678f00584628d6e786a1dd (diff)
downloadcraftbukkit-54672a75f60a69802e7080b526fea737608a2530.tar
craftbukkit-54672a75f60a69802e7080b526fea737608a2530.tar.gz
craftbukkit-54672a75f60a69802e7080b526fea737608a2530.tar.lz
craftbukkit-54672a75f60a69802e7080b526fea737608a2530.tar.xz
craftbukkit-54672a75f60a69802e7080b526fea737608a2530.zip
Implement Leash API. Adds BUKKIT-4459, BUKKIT-4583
Diffstat (limited to 'src/main/java/net/minecraft/server/EntityInsentient.java')
-rw-r--r--src/main/java/net/minecraft/server/EntityInsentient.java25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
index 34eb8725..b590c370 100644
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
@@ -4,8 +4,11 @@ import java.util.Iterator;
import java.util.List;
import java.util.UUID;
-//CraftBukkit start
+// CraftBukkit start
import org.bukkit.craftbukkit.event.CraftEventFactory;
+import org.bukkit.event.entity.EntityUnleashEvent;
+import org.bukkit.event.entity.EntityUnleashEvent.UnleashReason;
+// CraftBukkit end
public abstract class EntityInsentient extends EntityLiving {
@@ -769,6 +772,12 @@ public abstract class EntityInsentient extends EntityLiving {
public final boolean c(EntityHuman entityhuman) {
if (this.bH() && this.bI() == entityhuman) {
+ // CraftBukkit start
+ if (CraftEventFactory.callPlayerUnleashEntityEvent(this, entityhuman).isCancelled()) {
+ ((EntityPlayer) entityhuman).playerConnection.sendPacket(new Packet39AttachEntity(1, this, this.bI()));
+ return false;
+ }
+ // CraftBukkit end
this.a(true, !entityhuman.abilities.canInstantlyBuild);
return true;
} else {
@@ -776,12 +785,24 @@ public abstract class EntityInsentient extends EntityLiving {
if (itemstack != null && itemstack.id == Item.LEASH.id && this.bG()) {
if (!(this instanceof EntityTameableAnimal) || !((EntityTameableAnimal) this).isTamed()) {
+ // CraftBukkit start
+ if (CraftEventFactory.callPlayerLeashEntityEvent(this, entityhuman, entityhuman).isCancelled()) {
+ ((EntityPlayer) entityhuman).playerConnection.sendPacket(new Packet39AttachEntity(1, this, this.bI()));
+ return false;
+ }
+ // CraftBukkit end
this.b(entityhuman, true);
--itemstack.count;
return true;
}
if (entityhuman.getName().equalsIgnoreCase(((EntityTameableAnimal) this).getOwnerName())) {
+ // CraftBukkit start
+ if (CraftEventFactory.callPlayerLeashEntityEvent(this, entityhuman, entityhuman).isCancelled()) {
+ ((EntityPlayer) entityhuman).playerConnection.sendPacket(new Packet39AttachEntity(1, this, this.bI()));
+ return false;
+ }
+ // CraftBukkit end
this.b(entityhuman, true);
--itemstack.count;
return true;
@@ -803,6 +824,7 @@ public abstract class EntityInsentient extends EntityLiving {
if (this.bv) {
if (this.bw == null || this.bw.dead) {
+ this.world.getServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), UnleashReason.HOLDER_GONE)); // CraftBukkit
this.a(true, true);
}
}
@@ -869,6 +891,7 @@ public abstract class EntityInsentient extends EntityLiving {
this.bw = entityleash;
} else {
+ this.world.getServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), UnleashReason.UNKNOWN)); // CraftBukkit
this.a(false, true);
}
}