diff options
Diffstat (limited to 'src/main/java/net/minecraft/server/EntityExperienceOrb.java')
-rw-r--r-- | src/main/java/net/minecraft/server/EntityExperienceOrb.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/main/java/net/minecraft/server/EntityExperienceOrb.java b/src/main/java/net/minecraft/server/EntityExperienceOrb.java index c6d8ecd7..c1e1feaf 100644 --- a/src/main/java/net/minecraft/server/EntityExperienceOrb.java +++ b/src/main/java/net/minecraft/server/EntityExperienceOrb.java @@ -12,6 +12,8 @@ public class EntityExperienceOrb extends Entity { public int c; private int d = 5; public int value; // CraftBukkit - private -> public + private EntityHuman targetPlayer; + private int targetTime; public EntityExperienceOrb(World world, double d0, double d1, double d2, int i) { super(world); @@ -56,11 +58,18 @@ public class EntityExperienceOrb extends Entity { this.i(this.locX, (this.boundingBox.b + this.boundingBox.e) / 2.0D, this.locZ); double d0 = 8.0D; - EntityHuman entityhuman = this.world.findNearbyPlayer(this, d0); - if (entityhuman != null) { + if (this.targetTime < this.a - 20 + this.id % 100) { + if (this.targetPlayer == null || this.targetPlayer.e(this) > d0 * d0) { + this.targetPlayer = this.world.findNearbyPlayer(this, d0); + } + + this.targetTime = this.a; + } + + if (this.targetPlayer != null) { // CraftBukkit start - EntityTargetEvent event = CraftEventFactory.callEntityTargetEvent(this, entityhuman, EntityTargetEvent.TargetReason.CLOSEST_PLAYER); + EntityTargetEvent event = CraftEventFactory.callEntityTargetEvent(this, targetPlayer, EntityTargetEvent.TargetReason.CLOSEST_PLAYER); Entity target = event.getTarget() == null ? null : ((org.bukkit.craftbukkit.entity.CraftEntity) event.getTarget()).getHandle(); if (!event.isCancelled() && target != null) { |