summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/EntityTracker.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/minecraft/server/EntityTracker.java')
-rw-r--r--src/main/java/net/minecraft/server/EntityTracker.java30
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);
}
}