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