/// <summary> /// Finds the nearest village, but only the given coordinates are withing it's bounding box plus the given the /// distance. /// </summary> public virtual Village FindNearestVillage(int par1, int par2, int par3, int par4) { Village village = null; //JAVA TO C# CONVERTER TODO TASK: Octal literals cannot be represented in C#: float f = 3.402823E+038F; IEnumerator <Village> iterator = VillageList.GetEnumerator(); do { if (!iterator.MoveNext()) { break; } Village village1 = iterator.Current; float f1 = village1.GetCenter().GetDistanceSquared(par1, par2, par3); if (f1 < f) { int i = par4 + village1.GetVillageRadius(); if (f1 <= (float)(i * i)) { village = village1; f = f1; } } }while (true); return(village); }
private bool Func_48575_c() { Vec3D vec3d = Func_48572_a(Field_48577_g, Field_48583_h, Field_48584_i); if (vec3d == null) { return(false); } EntityZombie entityzombie; try { entityzombie = new EntityZombie(Field_48582_a); } catch (Exception exception) { Console.WriteLine(exception.ToString()); Console.Write(exception.StackTrace); return(false); } entityzombie.SetLocationAndAngles((float)vec3d.XCoord, (float)vec3d.YCoord, (float)vec3d.ZCoord, Field_48582_a.Rand.NextFloat() * 360F, 0.0F); Field_48582_a.SpawnEntityInWorld(entityzombie); ChunkCoordinates chunkcoordinates = Field_48576_f.GetCenter(); entityzombie.SetHomeArea(chunkcoordinates.PosX, chunkcoordinates.PosY, chunkcoordinates.PosZ, Field_48576_f.GetVillageRadius()); return(true); }
/// <summary> /// main AI tick function, replaces updateEntityActionState /// </summary> protected override void UpdateAITick() { if (--Field_48119_b <= 0) { Field_48119_b = 70 + Rand.Next(50); VillageObj = WorldObj.VillageCollectionObj.FindNearestVillage(MathHelper2.Floor_double(PosX), MathHelper2.Floor_double(PosY), MathHelper2.Floor_double(PosZ), 32); if (VillageObj == null) { DetachHome(); } else { ChunkCoordinates chunkcoordinates = VillageObj.GetCenter(); SetHomeArea(chunkcoordinates.PosX, chunkcoordinates.PosY, chunkcoordinates.PosZ, VillageObj.GetVillageRadius()); } } base.UpdateAITick(); }
private void AddNewDoorsToVillageOrCreateVillage() { for (int i = 0; i < NewDoors.Count; i++) { VillageDoorInfo villagedoorinfo = (VillageDoorInfo)NewDoors[i]; bool flag = false; IEnumerator <Village> iterator = VillageList.GetEnumerator(); do { if (!iterator.MoveNext()) { break; } Village village1 = iterator.Current; int j = (int)village1.GetCenter().GetEuclideanDistanceTo(villagedoorinfo.PosX, villagedoorinfo.PosY, villagedoorinfo.PosZ); if (j > 32 + village1.GetVillageRadius()) { continue; } village1.AddVillageDoorInfo(villagedoorinfo); flag = true; break; }while (true); if (!flag) { Village village = new Village(WorldObj); village.AddVillageDoorInfo(villagedoorinfo); VillageList.Add(village); } } NewDoors.Clear(); }
private bool Func_48574_b() { List <EntityPlayer> list = Field_48582_a.PlayerEntities; for (IEnumerator <EntityPlayer> iterator = list.GetEnumerator(); iterator.MoveNext();) { EntityPlayer entityplayer = iterator.Current; Field_48576_f = Field_48582_a.VillageCollectionObj.FindNearestVillage((int)entityplayer.PosX, (int)entityplayer.PosY, (int)entityplayer.PosZ, 1); if (Field_48576_f != null && Field_48576_f.GetNumVillageDoors() >= 10 && Field_48576_f.GetTicksSinceLastDoorAdding() >= 20 && Field_48576_f.GetNumVillagers() >= 20) { ChunkCoordinates chunkcoordinates = Field_48576_f.GetCenter(); float f = Field_48576_f.GetVillageRadius(); bool flag = false; int i = 0; do { if (i >= 10) { break; } Field_48577_g = chunkcoordinates.PosX + (int)((double)(MathHelper2.Cos(Field_48582_a.Rand.NextFloat() * (float)Math.PI * 2.0F) * f) * 0.90000000000000002D); Field_48583_h = chunkcoordinates.PosY; Field_48584_i = chunkcoordinates.PosZ + (int)((double)(MathHelper2.Sin(Field_48582_a.Rand.NextFloat() * (float)Math.PI * 2.0F) * f) * 0.90000000000000002D); flag = false; IEnumerator <Village> iterator1 = Field_48582_a.VillageCollectionObj.Func_48554_b().GetEnumerator(); do { if (!iterator1.MoveNext()) { break; } Village village = iterator1.Current; if (village == Field_48576_f || !village.IsInRange(Field_48577_g, Field_48583_h, Field_48584_i)) { continue; } flag = true; break; }while (true); if (!flag) { break; } i++; }while (true); if (flag) { return(false); } Vec3D vec3d = Func_48572_a(Field_48577_g, Field_48583_h, Field_48584_i); if (vec3d != null) { Field_48579_e = 0; Field_48578_d = 20; return(true); } } } return(false); }