    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    }