mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-06 18:50:51 +01:00
3360d06f76
* Houston, we got a patch * is this the end of the beginning or the beginning of the end
34 lines
No EOL
1.6 KiB
Diff
34 lines
No EOL
1.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Wed, 17 Oct 2018 19:17:27 -0400
|
|
Subject: [PATCH] MC-50319: Check other worlds for shooter of projectiles
|
|
|
|
Say a player shoots an arrow through a nether portal, the game
|
|
would lose the shooter for determining things such as Player Kills,
|
|
because the entity is in another world.
|
|
|
|
If the projectile fails to find the shooter in the current world, check
|
|
other worlds.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityProjectile.java b/src/main/java/net/minecraft/server/EntityProjectile.java
|
|
index 9eed1dce3..6c091b680 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityProjectile.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityProjectile.java
|
|
@@ -0,0 +0,0 @@ public abstract class EntityProjectile extends Entity implements IProjectile {
|
|
public EntityLiving getShooter() {
|
|
if ((this.shooter == null || this.shooter.dead) && this.shooterId != null && this.world instanceof WorldServer) {
|
|
Entity entity = ((WorldServer) this.world).getEntity(this.shooterId);
|
|
+ // Paper start - MC-50319 - shooter might be in another world (arrows through portals)
|
|
+ if (entity == null) {
|
|
+ for (WorldServer world : world.getMinecraftServer().getWorlds()) {
|
|
+ entity = world.getEntity(this.shooterId);
|
|
+ if (entity != null) {
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ // Paper end
|
|
|
|
if (entity instanceof EntityLiving) {
|
|
this.shooter = (EntityLiving) entity;
|
|
--
|