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