diff options
Diffstat (limited to 'src/main/java/net/minecraft/server/EntityTracker.java')
-rw-r--r-- | src/main/java/net/minecraft/server/EntityTracker.java | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/main/java/net/minecraft/server/EntityTracker.java b/src/main/java/net/minecraft/server/EntityTracker.java index d2d6ff0d..cfcd647a 100644 --- a/src/main/java/net/minecraft/server/EntityTracker.java +++ b/src/main/java/net/minecraft/server/EntityTracker.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.Set; +import java.util.concurrent.Callable; public class EntityTracker { @@ -55,7 +56,7 @@ public class EntityTracker { this.addEntity(entity, 64, 10, true); } else if (entity instanceof EntityItem) { this.addEntity(entity, 64, 20, true); - } else if (entity instanceof EntityMinecart) { + } else if (entity instanceof EntityMinecartAbstract) { this.addEntity(entity, 80, 3, true); } else if (entity instanceof EntityBoat) { this.addEntity(entity, 80, 3, true); @@ -94,15 +95,24 @@ public class EntityTracker { i = this.d; } - if (this.trackedEntities.b(entity.id)) { - // CraftBukkit - removed exception throw as tracking an already tracked entity theoretically shouldn't cause any issues. - // throw new IllegalStateException("Entity is already tracked!"); - } else { - EntityTrackerEntry entitytrackerentry = new EntityTrackerEntry(entity, i, j, flag); + try { + if (this.trackedEntities.b(entity.id)) { + throw new IllegalStateException("Entity is already tracked!"); + } else { + EntityTrackerEntry entitytrackerentry = new EntityTrackerEntry(entity, i, j, flag); - this.b.add(entitytrackerentry); - this.trackedEntities.a(entity.id, entitytrackerentry); - entitytrackerentry.scanPlayers(this.world.players); + this.b.add(entitytrackerentry); + this.trackedEntities.a(entity.id, entitytrackerentry); + entitytrackerentry.scanPlayers(this.world.players); + } + } catch (Throwable throwable) { + CrashReport crashreport = CrashReport.a(throwable, "Adding entity to track"); + CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Entity To Track"); + + crashreportsystemdetails.a("Tracking range", (i + " blocks")); + crashreportsystemdetails.a("Update interval", (Callable) (new CrashReportEntityTrackerUpdateInterval(this, j))); + entity.a(crashreportsystemdetails); + throw new ReportedException(crashreport); } } @@ -190,7 +200,7 @@ public class EntityTracker { while (iterator.hasNext()) { EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) iterator.next(); - if (entitytrackerentry.tracker != entityplayer && entitytrackerentry.tracker.ai == chunk.x && entitytrackerentry.tracker.ak == chunk.z) { + if (entitytrackerentry.tracker != entityplayer && entitytrackerentry.tracker.aj == chunk.x && entitytrackerentry.tracker.al == chunk.z) { entitytrackerentry.updatePlayer(entityplayer); } } |