mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-01 17:01:56 +01:00
7a5a4fd400
This makes it easier for downstream projects (forks) to replace the version fetching system with their own. It is as simple as implementing an interface and overriding the default implementation of org.bukkit.UnsafeValues#getVersionFetcher() It also makes it easier for us to organize things like the version history feature. Lastly I have updated the paper implementation to check against the site API rather than against jenkins.
40 lines
No EOL
1.8 KiB
Diff
40 lines
No EOL
1.8 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 c19828ed5..7deeaa083 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.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;
|
|
} else {
|
|
- this.shooterId = null;
|
|
+ //this.shooterId = null; // Paper - don't unset shooterId
|
|
}
|
|
}
|
|
|
|
--
|