diff options
Diffstat (limited to 'src/main/java/net/minecraft/server/EntityTracker.java')
-rw-r--r-- | src/main/java/net/minecraft/server/EntityTracker.java | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/src/main/java/net/minecraft/server/EntityTracker.java b/src/main/java/net/minecraft/server/EntityTracker.java new file mode 100644 index 00000000..cd6fe4be --- /dev/null +++ b/src/main/java/net/minecraft/server/EntityTracker.java @@ -0,0 +1,155 @@ +package net.minecraft.server; + +import java.util.*; + +public class EntityTracker { + + private Set a; + private MCHashTable b; + private MinecraftServer c; + private int d; + + public EntityTracker(MinecraftServer minecraftserver) { + a = ((Set) (new HashSet())); + b = new MCHashTable(); + c = minecraftserver; + d = minecraftserver.f.a(); + } + + public void a(Entity entity) { + if (entity instanceof EntityPlayerMP) { + a(entity, 512, 2); + EntityPlayerMP entityplayermp = (EntityPlayerMP) entity; + Iterator iterator = a.iterator(); + + do { + if (!iterator.hasNext()) { + break; + } + EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) iterator.next(); + + if (entitytrackerentry.a != entityplayermp) { + entitytrackerentry.b(entityplayermp); + } + } while (true); + } else if (entity instanceof EntityFish) { + a(entity, 64, 5, true); + } else if (entity instanceof EntityArrow) { + a(entity, 64, 5, true); + } else if (entity instanceof EntitySnowball) { + a(entity, 64, 5, true); + } else if (entity instanceof EntityEgg) { + a(entity, 64, 5, true); + } else if (entity instanceof EntityItem) { + a(entity, 64, 20, true); + } else if (entity instanceof EntityMinecart) { + a(entity, 160, 5, true); + } else if (entity instanceof EntityBoat) { + a(entity, 160, 5, true); + } else if (entity instanceof EntitySquid) { + a(entity, 160, 3, true); + } else if (entity instanceof IAnimals) { + a(entity, 160, 3); + } else if (entity instanceof EntityTNTPrimed) { + a(entity, 160, 10, true); + } else if (entity instanceof EntityFallingSand) { + a(entity, 160, 20, true); + } else if (entity instanceof EntityPainting) { + a(entity, 160, 0x7fffffff, false); + } + } + + public void a(Entity entity, int i, int j) { + a(entity, i, j, false); + } + + public void a(Entity entity, int i, int j, boolean flag) { + if (i > d) { + i = d; + } + if (b.b(entity.g)) { + throw new IllegalStateException("Entity is already tracked!"); + } else { + EntityTrackerEntry entitytrackerentry = new EntityTrackerEntry(entity, i, j, flag); + + a.add(((entitytrackerentry))); + b.a(entity.g, ((entitytrackerentry))); + entitytrackerentry.b(c.e.d); + return; + } + } + + public void b(Entity entity) { + if (entity instanceof EntityPlayerMP) { + EntityPlayerMP entityplayermp = (EntityPlayerMP) entity; + EntityTrackerEntry entitytrackerentry1; + + for (Iterator iterator = a.iterator(); iterator.hasNext(); entitytrackerentry1.a(entityplayermp)) { + entitytrackerentry1 = (EntityTrackerEntry) iterator.next(); + } + } + EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) b.d(entity.g); + + if (entitytrackerentry != null) { + a.remove(((entitytrackerentry))); + entitytrackerentry.a(); + } + } + + public void a() { + ArrayList arraylist = new ArrayList(); + Iterator iterator = a.iterator(); + + do { + if (!iterator.hasNext()) { + break; + } + EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) iterator.next(); + + entitytrackerentry.a(c.e.d); + if (entitytrackerentry.m && (entitytrackerentry.a instanceof EntityPlayerMP)) { + ((List) (arraylist)).add((((EntityPlayerMP) entitytrackerentry.a))); + } + } while (true); + label0: + for (int i = 0; i < ((List) (arraylist)).size(); i++) { + EntityPlayerMP entityplayermp = (EntityPlayerMP) ((List) (arraylist)).get(i); + Iterator iterator1 = a.iterator(); + + do { + if (!iterator1.hasNext()) { + continue label0; + } + EntityTrackerEntry entitytrackerentry1 = (EntityTrackerEntry) iterator1.next(); + + if (entitytrackerentry1.a != entityplayermp) { + entitytrackerentry1.b(entityplayermp); + } + } while (true); + } + } + + public void a(Entity entity, Packet packet) { + EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) b.a(entity.g); + + if (entitytrackerentry != null) { + entitytrackerentry.a(packet); + } + } + + public void b(Entity entity, Packet packet) { + EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) b.a(entity.g); + + if (entitytrackerentry != null) { + entitytrackerentry.b(packet); + } + } + + public void a(EntityPlayerMP entityplayermp) { + EntityTrackerEntry entitytrackerentry; + + for (Iterator iterator = a.iterator(); iterator.hasNext(); entitytrackerentry.c(entityplayermp)) { + entitytrackerentry = (EntityTrackerEntry) iterator.next(); + } + } +} |