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 }