PaperMC/nms-patches/EntityProjectile.patch
Zach Brown 622add8458 MC-88491: Fix projectile colliding with shooter
In some situations, a projectile made collide with the entity that shot
it. This occurs because the game sets the ignored entity incorrectly.
Our fix is to ensure that the shooter is the only entity that gets
ignored by the projectile.
2016-12-23 16:41:54 +11:00

31 lines
1.4 KiB
Diff

--- a/net/minecraft/server/EntityProjectile.java
+++ b/net/minecraft/server/EntityProjectile.java
@@ -35,6 +35,7 @@
public EntityProjectile(World world, EntityLiving entityliving) {
this(world, entityliving.locX, entityliving.locY + (double) entityliving.getHeadHeight() - 0.10000000149011612D, entityliving.locZ);
this.shooter = entityliving;
+ this.projectileSource = (org.bukkit.entity.LivingEntity) entityliving.getBukkitEntity(); // CraftBukkit
}
protected void i() {}
@@ -127,7 +128,7 @@
if (entity1.isInteractable()) {
if (entity1 == this.c) {
flag = true;
- } else if (this.shooter != null && this.ticksLived < 2 && this.c == null) {
+ } else if (this.shooter != null && this.ticksLived < 2 && this.c == null && this.shooter == entity1) { // CraftBukkit - MC-88491
this.c = entity1;
flag = true;
} else {
@@ -164,6 +165,11 @@
this.e(movingobjectposition.a());
} else {
this.a(movingobjectposition);
+ // CraftBukkit start
+ if (this.dead) {
+ org.bukkit.craftbukkit.event.CraftEventFactory.callProjectileHitEvent(this, movingobjectposition);
+ }
+ // CraftBukkit end
}
}