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 else 129 { 130 var1.append(";"); 131 } 132 133 return var1.toString(); 134 } 135 136 private static FlatLayerInfo func_82646_a(String par0Str, int par1) 137 { 138 String[] var2 = par0Str.split("x", 2); 139 int var3 = 1; 140 int var5 = 0; 141 142 if (var2.length == 2) 143 { 144 try 145 { 146 var3 = Integer.parseInt(var2[0]); 147 148 if (par1 + var3 >= 256) 149 { 150 var3 = 256 - par1; 151 } 152 153 if (var3 < 0) 154 { 155 var3 = 0; 156 } 157 } 158 catch (Throwable var7) 159 { 160 return null; 161 } 162 } 163 164 int var4; 165 166 try 167 { 168 String var6 = var2[var2.length - 1]; 169 var2 = var6.split(":", 2); 170 var4 = Integer.parseInt(var2[0]); 171 172 if (var2.length > 1) 173 { 174 var5 = Integer.parseInt(var2[1]); 175 } 176 177 if (Block.blocksList[var4] == null) 178 { 179 var4 = 0; 180 var5 = 0; 181 } 182 183 if (var5 < 0 || var5 > 15) 184 { 185 var5 = 0; 186 } 187 } 188 catch (Throwable var8) 189 { 190 return null; 191 } 192 193 FlatLayerInfo var9 = new FlatLayerInfo(var3, var4, var5); 194 var9.setMinY(par1); 195 return var9; 196 } 197 198 private static List func_82652_b(String par0Str) 199 { 200 if (par0Str != null && par0Str.length() >= 1) 201 { 202 ArrayList var1 = new ArrayList(); 203 String[] var2 = par0Str.split(","); 204 int var3 = 0; 205 String[] var4 = var2; 206 int var5 = var2.length; 207 208 for (int var6 = 0; var6 < var5; ++var6) 209 { 210 String var7 = var4[var6]; 211 FlatLayerInfo var8 = func_82646_a(var7, var3); 212 213 if (var8 == null) 214 { 215 return null; 216 } 217 218 var1.add(var8); 219 var3 += var8.getLayerCount(); 220 } 221 222 return var1; 223 } 224 else 225 { 226 return null; 227 } 228 } 229 230 public static FlatGeneratorInfo createFlatGeneratorFromString(String par0Str) 231 { 232 if (par0Str == null) 233 { 234 return getDefaultFlatGenerator(); 235 } 236 else 237 { 238 String[] var1 = par0Str.split(";", -1); 239 int var2 = var1.length == 1 ? 0 : MathHelper.parseIntWithDefault(var1[0], 0); 240 241 if (var2 >= 0 && var2 <= 2) 242 { 243 FlatGeneratorInfo var3 = new FlatGeneratorInfo(); 244 int var4 = var1.length == 1 ? 0 : 1; 245 List var5 = func_82652_b(var1[var4++]); 246 247 if (var5 != null && !var5.isEmpty()) 248 { 249 var3.getFlatLayers().addAll(var5); 250 var3.func_82645_d(); 251 int var6 = BiomeGenBase.plains.biomeID; 252 253 if (var2 > 0 && var1.length > var4) 254 { 255 var6 = MathHelper.parseIntWithDefault(var1[var4++], var6); 256 } 257 258 var3.setBiome(var6); 259 260 if (var2 > 0 && var1.length > var4) 261 { 262 String[] var7 = var1[var4++].toLowerCase().split(","); 263 String[] var8 = var7; 264 int var9 = var7.length; 265 266 for (int var10 = 0; var10 < var9; ++var10) 267 { 268 String var11 = var8[var10]; 269 String[] var12 = var11.split("\\(", 2); 270 HashMap var13 = new HashMap(); 271 272 if (var12[0].length() > 0) 273 { 274 var3.getWorldFeatures().put(var12[0], var13); 275 276 if (var12.length > 1 && var12[1].endsWith(")") && var12[1].length() > 1) 277 { 278 String[] var14 = var12[1].substring(0, var12[1].length() - 1).split(" "); 279 280 for (int var15 = 0; var15 < var14.length; ++var15) 281 { 282 String[] var16 = var14[var15].split("=", 2); 283 284 if (var16.length == 2) 285 { 286 var13.put(var16[0], var16[1]); 287 } 288 } 289 } 290 } 291 } 292 } 293 else 294 { 295 var3.getWorldFeatures().put("village", new HashMap()); 296 } 297 298 return var3; 299 } 300 else 301 { 302 return getDefaultFlatGenerator(); 303 } 304 } 305 else 306 { 307 return getDefaultFlatGenerator(); 308 } 309 } 310 } 311 312 public static FlatGeneratorInfo getDefaultFlatGenerator() 313 { 314 FlatGeneratorInfo var0 = new FlatGeneratorInfo(); 315 var0.setBiome(BiomeGenBase.plains.biomeID); 316 var0.getFlatLayers().add(new FlatLayerInfo(1, Block.bedrock.blockID)); 317 var0.getFlatLayers().add(new FlatLayerInfo(2, Block.dirt.blockID)); 318 var0.getFlatLayers().add(new FlatLayerInfo(1, Block.grass.blockID)); 319 var0.func_82645_d(); 320 var0.getWorldFeatures().put("village", new HashMap()); 321 return var0; 322 } 323 }