001 package net.minecraft.world.gen; 002 003 import java.util.ArrayList; 004 import java.util.HashMap; 005 import java.util.Iterator; 006 import java.util.List; 007 import java.util.Map; 008 import java.util.Map.Entry; 009 import net.minecraft.block.Block; 010 import net.minecraft.util.MathHelper; 011 import net.minecraft.world.biome.BiomeGenBase; 012 013 public class FlatGeneratorInfo 014 { 015 /** List of layers on this preset. */ 016 private final List flatLayers = new ArrayList(); 017 018 /** List of world features enabled on this preset. */ 019 private final Map worldFeatures = new HashMap(); 020 private int field_82654_c = 0; 021 022 /** 023 * Return the biome used on this preset. 024 */ 025 public int getBiome() 026 { 027 return this.field_82654_c; 028 } 029 030 /** 031 * Set the biome used on this preset. 032 */ 033 public void setBiome(int par1) 034 { 035 this.field_82654_c = par1; 036 } 037 038 /** 039 * Return the list of world features enabled on this preset. 040 */ 041 public Map getWorldFeatures() 042 { 043 return this.worldFeatures; 044 } 045 046 /** 047 * Return the list of layers on this preset. 048 */ 049 public List getFlatLayers() 050 { 051 return this.flatLayers; 052 } 053 054 public void func_82645_d() 055 { 056 int var1 = 0; 057 FlatLayerInfo var3; 058 059 for (Iterator var2 = this.flatLayers.iterator(); var2.hasNext(); var1 += var3.getLayerCount()) 060 { 061 var3 = (FlatLayerInfo)var2.next(); 062 var3.setMinY(var1); 063 } 064 } 065 066 public String toString() 067 { 068 StringBuilder var1 = new StringBuilder(); 069 var1.append(2); 070 var1.append(";"); 071 int var2; 072 073 for (var2 = 0; var2 < this.flatLayers.size(); ++var2) 074 { 075 if (var2 > 0) 076 { 077 var1.append(","); 078 } 079 080 var1.append(((FlatLayerInfo)this.flatLayers.get(var2)).toString()); 081 } 082 083 var1.append(";"); 084 var1.append(this.field_82654_c); 085 086 if (!this.worldFeatures.isEmpty()) 087 { 088 var1.append(";"); 089 var2 = 0; 090 Iterator var3 = this.worldFeatures.entrySet().iterator(); 091 092 while (var3.hasNext()) 093 { 094 Entry var4 = (Entry)var3.next(); 095 096 if (var2++ > 0) 097 { 098 var1.append(","); 099 } 100 101 var1.append(((String)var4.getKey()).toLowerCase()); 102 Map var5 = (Map)var4.getValue(); 103 104 if (!var5.isEmpty()) 105 { 106 var1.append("("); 107 int var6 = 0; 108 Iterator var7 = var5.entrySet().iterator(); 109 110 while (var7.hasNext()) 111 { 112 Entry var8 = (Entry)var7.next(); 113 114 if (var6++ > 0) 115 { 116 var1.append(" "); 117 } 118 119 var1.append((String)var8.getKey()); 120 var1.append("="); 121 var1.append((String)var8.getValue()); 122 } 123 124 var1.append(")"); 125 } 126 } 127 } 128 129 return var1.toString(); 130 } 131 132 private static FlatLayerInfo func_82646_a(String par0Str, int par1) 133 { 134 String[] var2 = par0Str.split("x", 2); 135 int var3 = 1; 136 int var5 = 0; 137 138 if (var2.length == 2) 139 { 140 try 141 { 142 var3 = Integer.parseInt(var2[0]); 143 144 if (par1 + var3 >= 256) 145 { 146 var3 = 256 - par1; 147 } 148 149 if (var3 < 0) 150 { 151 var3 = 0; 152 } 153 } 154 catch (Throwable var7) 155 { 156 return null; 157 } 158 } 159 160 int var4; 161 162 try 163 { 164 String var6 = var2[var2.length - 1]; 165 var2 = var6.split(":", 2); 166 var4 = Integer.parseInt(var2[0]); 167 168 if (var2.length > 1) 169 { 170 var5 = Integer.parseInt(var2[1]); 171 } 172 173 if (Block.blocksList[var4] == null) 174 { 175 var4 = 0; 176 var5 = 0; 177 } 178 179 if (var5 < 0 || var5 > 15) 180 { 181 var5 = 0; 182 } 183 } 184 catch (Throwable var8) 185 { 186 return null; 187 } 188 189 FlatLayerInfo var9 = new FlatLayerInfo(var3, var4, var5); 190 var9.setMinY(par1); 191 return var9; 192 } 193 194 private static List func_82652_b(String par0Str) 195 { 196 if (par0Str != null && par0Str.length() >= 1) 197 { 198 ArrayList var1 = new ArrayList(); 199 String[] var2 = par0Str.split(","); 200 int var3 = 0; 201 String[] var4 = var2; 202 int var5 = var2.length; 203 204 for (int var6 = 0; var6 < var5; ++var6) 205 { 206 String var7 = var4[var6]; 207 FlatLayerInfo var8 = func_82646_a(var7, var3); 208 209 if (var8 == null) 210 { 211 return null; 212 } 213 214 var1.add(var8); 215 var3 += var8.getLayerCount(); 216 } 217 218 return var1; 219 } 220 else 221 { 222 return null; 223 } 224 } 225 226 public static FlatGeneratorInfo createFlatGeneratorFromString(String par0Str) 227 { 228 if (par0Str == null) 229 { 230 return getDefaultFlatGenerator(); 231 } 232 else 233 { 234 String[] var1 = par0Str.split(";", -1); 235 int var2 = var1.length == 1 ? 0 : MathHelper.parseIntWithDefault(var1[0], 0); 236 237 if (var2 >= 0 && var2 <= 2) 238 { 239 FlatGeneratorInfo var3 = new FlatGeneratorInfo(); 240 int var4 = var1.length == 1 ? 0 : 1; 241 List var5 = func_82652_b(var1[var4++]); 242 243 if (var5 != null && !var5.isEmpty()) 244 { 245 var3.getFlatLayers().addAll(var5); 246 var3.func_82645_d(); 247 int var6 = BiomeGenBase.plains.biomeID; 248 249 if (var2 > 0 && var1.length > var4) 250 { 251 var6 = MathHelper.parseIntWithDefault(var1[var4++], var6); 252 } 253 254 var3.setBiome(var6); 255 256 if (var2 > 0 && var1.length > var4) 257 { 258 String[] var7 = var1[var4++].toLowerCase().split(","); 259 String[] var8 = var7; 260 int var9 = var7.length; 261 262 for (int var10 = 0; var10 < var9; ++var10) 263 { 264 String var11 = var8[var10]; 265 String[] var12 = var11.split("\\(", 2); 266 HashMap var13 = new HashMap(); 267 268 if (var12[0].length() > 0) 269 { 270 var3.getWorldFeatures().put(var12[0], var13); 271 272 if (var12.length > 1 && var12[1].endsWith(")") && var12[1].length() > 1) 273 { 274 String[] var14 = var12[1].substring(0, var12[1].length() - 1).split(" "); 275 276 for (int var15 = 0; var15 < var14.length; ++var15) 277 { 278 String[] var16 = var14[var15].split("=", 2); 279 280 if (var16.length == 2) 281 { 282 var13.put(var16[0], var16[1]); 283 } 284 } 285 } 286 } 287 } 288 } 289 else 290 { 291 var3.getWorldFeatures().put("village", new HashMap()); 292 } 293 294 return var3; 295 } 296 else 297 { 298 return getDefaultFlatGenerator(); 299 } 300 } 301 else 302 { 303 return getDefaultFlatGenerator(); 304 } 305 } 306 } 307 308 public static FlatGeneratorInfo getDefaultFlatGenerator() 309 { 310 FlatGeneratorInfo var0 = new FlatGeneratorInfo(); 311 var0.setBiome(BiomeGenBase.plains.biomeID); 312 var0.getFlatLayers().add(new FlatLayerInfo(1, Block.bedrock.blockID)); 313 var0.getFlatLayers().add(new FlatLayerInfo(2, Block.dirt.blockID)); 314 var0.getFlatLayers().add(new FlatLayerInfo(1, Block.grass.blockID)); 315 var0.func_82645_d(); 316 var0.getWorldFeatures().put("village", new HashMap()); 317 return var0; 318 } 319 }