geforkt von Mirrors/Paper
622add8458
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.
32 Zeilen
1.4 KiB
Diff
32 Zeilen
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
|
|
}
|
|
}
|
|
|