private void addNewDoorsToVillageOrCreateVillage() { int i = 0; while (i < this.newDoors.size()) { VillageDoorInfo villagedoorinfo = (VillageDoorInfo) this.newDoors.get(i); boolean flag = false; Iterator iterator = this.villageList.iterator(); while (true) { if (iterator.hasNext()) { Village village = (Village) iterator.next(); int j = (int) village .getCenter() .getDistanceSquared( villagedoorinfo.posX, villagedoorinfo.posY, villagedoorinfo.posZ); int k = 32 + village.getVillageRadius(); if (j > k * k) { continue; } village.addVillageDoorInfo(villagedoorinfo); flag = true; } if (!flag) { Village village1 = new Village(this.worldObj); village1.addVillageDoorInfo(villagedoorinfo); this.villageList.add(village1); this.markDirty(); } ++i; break; } } this.newDoors.clear(); }
/** * Finds the nearest village, but only the given coordinates are withing it's bounding box plus * the given the distance. */ public Village findNearestVillage(int par1, int par2, int par3, int par4) { Village village = null; float f = Float.MAX_VALUE; Iterator iterator = this.villageList.iterator(); while (iterator.hasNext()) { Village village1 = (Village) iterator.next(); float f1 = village1.getCenter().getDistanceSquared(par1, par2, par3); if (f1 < f) { int i1 = par4 + village1.getVillageRadius(); if (f1 <= (float) (i1 * i1)) { village = village1; f = f1; } } } return village; }