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 }