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    }