package net.minecraft.world.gen; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.util.MathHelper; import net.minecraft.world.biome.BiomeGenBase; public class FlatGeneratorInfo { /** List of layers on this preset. */ private final List flatLayers = Lists.newArrayList(); /** List of world features enabled on this preset. */ private final Map worldFeatures = Maps.newHashMap(); private int biomeToUse; private static final String __OBFID = "CL_00000440"; /** * Return the biome used on this preset. */ public int getBiome() { return this.biomeToUse; } /** * Set the biome used on this preset. */ public void setBiome(int p_82647_1_) { this.biomeToUse = p_82647_1_; } /** * Return the list of world features enabled on this preset. */ public Map getWorldFeatures() { return this.worldFeatures; } /** * Return the list of layers on this preset. */ public List getFlatLayers() { return this.flatLayers; } public void func_82645_d() { int var1 = 0; FlatLayerInfo var3; for (Iterator var2 = this.flatLayers.iterator(); var2.hasNext(); var1 += var3.getLayerCount()) { var3 = (FlatLayerInfo)var2.next(); var3.setMinY(var1); } } public String toString() { StringBuilder var1 = new StringBuilder(); var1.append(3); var1.append(";"); int var2; for (var2 = 0; var2 < this.flatLayers.size(); ++var2) { if (var2 > 0) { var1.append(","); } var1.append(((FlatLayerInfo)this.flatLayers.get(var2)).toString()); } var1.append(";"); var1.append(this.biomeToUse); if (!this.worldFeatures.isEmpty()) { var1.append(";"); var2 = 0; Iterator var3 = this.worldFeatures.entrySet().iterator(); while (var3.hasNext()) { Entry var4 = (Entry)var3.next(); if (var2++ > 0) { var1.append(","); } var1.append(((String)var4.getKey()).toLowerCase()); Map var5 = (Map)var4.getValue(); if (!var5.isEmpty()) { var1.append("("); int var6 = 0; Iterator var7 = var5.entrySet().iterator(); while (var7.hasNext()) { Entry var8 = (Entry)var7.next(); if (var6++ > 0) { var1.append(" "); } var1.append((String)var8.getKey()); var1.append("="); var1.append((String)var8.getValue()); } var1.append(")"); } } } else { var1.append(";"); } return var1.toString(); } private static FlatLayerInfo func_180715_a(int p_180715_0_, String p_180715_1_, int p_180715_2_) { String[] var3 = p_180715_0_ >= 3 ? p_180715_1_.split("\\*", 2) : p_180715_1_.split("x", 2); int var4 = 1; int var5 = 0; if (var3.length == 2) { try { var4 = Integer.parseInt(var3[0]); if (p_180715_2_ + var4 >= 256) { var4 = 256 - p_180715_2_; } if (var4 < 0) { var4 = 0; } } catch (Throwable var8) { return null; } } Block var6 = null; try { String var7 = var3[var3.length - 1]; if (p_180715_0_ < 3) { var3 = var7.split(":", 2); if (var3.length > 1) { var5 = Integer.parseInt(var3[1]); } var6 = Block.getBlockById(Integer.parseInt(var3[0])); } else { var3 = var7.split(":", 3); var6 = var3.length > 1 ? Block.getBlockFromName(var3[0] + ":" + var3[1]) : null; if (var6 != null) { var5 = var3.length > 2 ? Integer.parseInt(var3[2]) : 0; } else { var6 = Block.getBlockFromName(var3[0]); if (var6 != null) { var5 = var3.length > 1 ? Integer.parseInt(var3[1]) : 0; } } if (var6 == null) { return null; } } if (var6 == Blocks.air) { var5 = 0; } if (var5 < 0 || var5 > 15) { var5 = 0; } } catch (Throwable var9) { return null; } FlatLayerInfo var10 = new FlatLayerInfo(p_180715_0_, var4, var6, var5); var10.setMinY(p_180715_2_); return var10; } private static List func_180716_a(int p_180716_0_, String p_180716_1_) { if (p_180716_1_ != null && p_180716_1_.length() >= 1) { ArrayList var2 = Lists.newArrayList(); String[] var3 = p_180716_1_.split(","); int var4 = 0; String[] var5 = var3; int var6 = var3.length; for (int var7 = 0; var7 < var6; ++var7) { String var8 = var5[var7]; FlatLayerInfo var9 = func_180715_a(p_180716_0_, var8, var4); if (var9 == null) { return null; } var2.add(var9); var4 += var9.getLayerCount(); } return var2; } else { return null; } } public static FlatGeneratorInfo createFlatGeneratorFromString(String p_82651_0_) { if (p_82651_0_ == null) { return getDefaultFlatGenerator(); } else { String[] var1 = p_82651_0_.split(";", -1); int var2 = var1.length == 1 ? 0 : MathHelper.parseIntWithDefault(var1[0], 0); if (var2 >= 0 && var2 <= 3) { FlatGeneratorInfo var3 = new FlatGeneratorInfo(); int var4 = var1.length == 1 ? 0 : 1; List var5 = func_180716_a(var2, var1[var4++]); if (var5 != null && !var5.isEmpty()) { var3.getFlatLayers().addAll(var5); var3.func_82645_d(); int var6 = BiomeGenBase.plains.biomeID; if (var2 > 0 && var1.length > var4) { var6 = MathHelper.parseIntWithDefault(var1[var4++], var6); } var3.setBiome(var6); if (var2 > 0 && var1.length > var4) { String[] var7 = var1[var4++].toLowerCase().split(","); String[] var8 = var7; int var9 = var7.length; for (int var10 = 0; var10 < var9; ++var10) { String var11 = var8[var10]; String[] var12 = var11.split("\\(", 2); HashMap var13 = Maps.newHashMap(); if (var12[0].length() > 0) { var3.getWorldFeatures().put(var12[0], var13); if (var12.length > 1 && var12[1].endsWith(")") && var12[1].length() > 1) { String[] var14 = var12[1].substring(0, var12[1].length() - 1).split(" "); for (int var15 = 0; var15 < var14.length; ++var15) { String[] var16 = var14[var15].split("=", 2); if (var16.length == 2) { var13.put(var16[0], var16[1]); } } } } } } else { var3.getWorldFeatures().put("village", Maps.newHashMap()); } return var3; } else { return getDefaultFlatGenerator(); } } else { return getDefaultFlatGenerator(); } } } public static FlatGeneratorInfo getDefaultFlatGenerator() { FlatGeneratorInfo var0 = new FlatGeneratorInfo(); var0.setBiome(BiomeGenBase.plains.biomeID); var0.getFlatLayers().add(new FlatLayerInfo(1, Blocks.bedrock)); var0.getFlatLayers().add(new FlatLayerInfo(2, Blocks.dirt)); var0.getFlatLayers().add(new FlatLayerInfo(1, Blocks.grass)); var0.func_82645_d(); var0.getWorldFeatures().put("village", Maps.newHashMap()); return var0; } }