001 package net.minecraft.src;
002
003 import java.util.ArrayList;
004 import java.util.Arrays;
005 import java.util.Iterator;
006 import java.util.List;
007 import java.util.Map;
008 import java.util.Random;
009 import java.util.Map.Entry;
010
011 public class MapGenScatteredFeature extends MapGenStructure
012 {
013 private static List biomelist = Arrays.asList(new BiomeGenBase[] {BiomeGenBase.desert, BiomeGenBase.desertHills, BiomeGenBase.jungle, BiomeGenBase.jungleHills, BiomeGenBase.swampland});
014 private List field_82668_f;
015 private int field_82669_g;
016 private int field_82670_h;
017
018 public MapGenScatteredFeature()
019 {
020 this.field_82668_f = new ArrayList();
021 this.field_82669_g = 32;
022 this.field_82670_h = 8;
023 this.field_82668_f.add(new SpawnListEntry(EntityWitch.class, 1, 1, 1));
024 }
025
026 public MapGenScatteredFeature(Map par1Map)
027 {
028 this();
029 Iterator var2 = par1Map.entrySet().iterator();
030
031 while (var2.hasNext())
032 {
033 Entry var3 = (Entry)var2.next();
034
035 if (((String)var3.getKey()).equals("distance"))
036 {
037 this.field_82669_g = MathHelper.func_82714_a((String)var3.getValue(), this.field_82669_g, this.field_82670_h + 1);
038 }
039 }
040 }
041
042 protected boolean canSpawnStructureAtCoords(int par1, int par2)
043 {
044 int var3 = par1;
045 int var4 = par2;
046
047 if (par1 < 0)
048 {
049 par1 -= this.field_82669_g - 1;
050 }
051
052 if (par2 < 0)
053 {
054 par2 -= this.field_82669_g - 1;
055 }
056
057 int var5 = par1 / this.field_82669_g;
058 int var6 = par2 / this.field_82669_g;
059 Random var7 = this.worldObj.setRandomSeed(var5, var6, 14357617);
060 var5 *= this.field_82669_g;
061 var6 *= this.field_82669_g;
062 var5 += var7.nextInt(this.field_82669_g - this.field_82670_h);
063 var6 += var7.nextInt(this.field_82669_g - this.field_82670_h);
064
065 if (var3 == var5 && var4 == var6)
066 {
067 BiomeGenBase var8 = this.worldObj.getWorldChunkManager().getBiomeGenAt(var3 * 16 + 8, var4 * 16 + 8);
068 Iterator var9 = biomelist.iterator();
069
070 while (var9.hasNext())
071 {
072 BiomeGenBase var10 = (BiomeGenBase)var9.next();
073
074 if (var8 == var10)
075 {
076 return true;
077 }
078 }
079 }
080
081 return false;
082 }
083
084 protected StructureStart getStructureStart(int par1, int par2)
085 {
086 return new StructureScatteredFeatureStart(this.worldObj, this.rand, par1, par2);
087 }
088
089 public List func_82667_a()
090 {
091 return this.field_82668_f;
092 }
093 }