001 package net.minecraft.src;
002
003 import java.util.Arrays;
004 import java.util.List;
005 import java.util.Random;
006
007 public class MapGenVillage extends MapGenStructure
008 {
009 /** A list of all the biomes villages can spawn in. */
010 public static List villageSpawnBiomes = Arrays.asList(new BiomeGenBase[] {BiomeGenBase.plains, BiomeGenBase.desert});
011
012 /** World terrain type, 0 for normal, 1 for flat map */
013 private final int terrainType;
014
015 public MapGenVillage(int par1)
016 {
017 this.terrainType = par1;
018 }
019
020 protected boolean canSpawnStructureAtCoords(int par1, int par2)
021 {
022 byte var3 = 32;
023 byte var4 = 8;
024 int var5 = par1;
025 int var6 = par2;
026
027 if (par1 < 0)
028 {
029 par1 -= var3 - 1;
030 }
031
032 if (par2 < 0)
033 {
034 par2 -= var3 - 1;
035 }
036
037 int var7 = par1 / var3;
038 int var8 = par2 / var3;
039 Random var9 = this.worldObj.setRandomSeed(var7, var8, 10387312);
040 var7 *= var3;
041 var8 *= var3;
042 var7 += var9.nextInt(var3 - var4);
043 var8 += var9.nextInt(var3 - var4);
044
045 if (var5 == var7 && var6 == var8)
046 {
047 boolean var10 = this.worldObj.getWorldChunkManager().areBiomesViable(var5 * 16 + 8, var6 * 16 + 8, 0, villageSpawnBiomes);
048
049 if (var10)
050 {
051 return true;
052 }
053 }
054
055 return false;
056 }
057
058 protected StructureStart getStructureStart(int par1, int par2)
059 {
060 return new StructureVillageStart(this.worldObj, this.rand, par1, par2, this.terrainType);
061 }
062 }