mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-10 10:17:38 +01:00
64b9c40cd7
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. By: Zach Brown <zach.brown@destroystokyo.com>
32 lines
1.4 KiB
Diff
32 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
|
|
}
|
|
}
|
|
|