summaryrefslogtreecommitdiffstats
path: root/nms-patches/EntityLeash.patch
diff options
context:
space:
mode:
authorThinkofdeath <thinkofdeath@spigotmc.org>2014-11-26 08:32:16 +1100
committermd_5 <git@md-5.net>2014-11-28 17:16:30 +1100
commit24557bc2b37deb6a0edf497d547471832457b1dd (patch)
treec560572889a3b0b34964a0cddb35dc87fda3c914 /nms-patches/EntityLeash.patch
parenta4805dbd77da057cc1ea0bf344379bc6e53ca1f6 (diff)
downloadcraftbukkit-24557bc2b37deb6a0edf497d547471832457b1dd.tar
craftbukkit-24557bc2b37deb6a0edf497d547471832457b1dd.tar.gz
craftbukkit-24557bc2b37deb6a0edf497d547471832457b1dd.tar.lz
craftbukkit-24557bc2b37deb6a0edf497d547471832457b1dd.tar.xz
craftbukkit-24557bc2b37deb6a0edf497d547471832457b1dd.zip
Update to Minecraft 1.8
For more information please see http://www.spigotmc.org/
Diffstat (limited to 'nms-patches/EntityLeash.patch')
-rw-r--r--nms-patches/EntityLeash.patch61
1 files changed, 61 insertions, 0 deletions
diff --git a/nms-patches/EntityLeash.patch b/nms-patches/EntityLeash.patch
new file mode 100644
index 00000000..65d979ac
--- /dev/null
+++ b/nms-patches/EntityLeash.patch
@@ -0,0 +1,61 @@
+--- ../work/decompile-bb26c12b/net/minecraft/server/EntityLeash.java 2014-11-27 08:59:46.701421847 +1100
++++ src/main/java/net/minecraft/server/EntityLeash.java 2014-11-27 08:42:10.136850942 +1100
+@@ -3,6 +3,8 @@
+ import java.util.Iterator;
+ import java.util.List;
+
++import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
++
+ public class EntityLeash extends EntityHanging {
+
+ public EntityLeash(World world) {
+@@ -63,6 +65,12 @@
+ while (iterator.hasNext()) {
+ entityinsentient = (EntityInsentient) iterator.next();
+ if (entityinsentient.cb() && entityinsentient.getLeashHolder() == entityhuman) {
++ // CraftBukkit start
++ if (CraftEventFactory.callPlayerLeashEntityEvent(entityinsentient, this, entityhuman).isCancelled()) {
++ ((EntityPlayer) entityhuman).playerConnection.sendPacket(new PacketPlayOutAttachEntity(1, entityinsentient, entityinsentient.getLeashHolder()));
++ continue;
++ }
++ // CraftBukkit end
+ entityinsentient.setLeashHolder(this, true);
+ flag = true;
+ }
+@@ -70,8 +78,11 @@
+ }
+
+ if (!this.world.isStatic && !flag) {
+- this.die();
+- if (entityhuman.abilities.canInstantlyBuild) {
++ // CraftBukkit start - Move below
++ // this.die();
++ boolean die = true;
++ // CraftBukkit end
++ if (true || entityhuman.abilities.canInstantlyBuild) { // CraftBukkit - Process for non-creative as well
+ d0 = 7.0D;
+ list = this.world.a(EntityInsentient.class, new AxisAlignedBB(this.locX - d0, this.locY - d0, this.locZ - d0, this.locX + d0, this.locY + d0, this.locZ + d0));
+ iterator = list.iterator();
+@@ -79,10 +90,21 @@
+ while (iterator.hasNext()) {
+ entityinsentient = (EntityInsentient) iterator.next();
+ if (entityinsentient.cb() && entityinsentient.getLeashHolder() == this) {
+- entityinsentient.unleash(true, false);
++ // CraftBukkit start
++ if (CraftEventFactory.callPlayerUnleashEntityEvent(entityinsentient, entityhuman).isCancelled()) {
++ die = false;
++ continue;
++ }
++ entityinsentient.unleash(true, !entityhuman.abilities.canInstantlyBuild); // false -> survival mode boolean
++ // CraftBukkit end
+ }
+ }
+ }
++ // CraftBukkit start
++ if (die) {
++ this.die();
++ }
++ // CraftBukkit end
+ }
+
+ return true;