001 package net.minecraft.src;
002
003 import cpw.mods.fml.common.Side;
004 import cpw.mods.fml.common.asm.SideOnly;
005 import java.util.ArrayList;
006 import java.util.Arrays;
007 import java.util.HashMap;
008 import java.util.Iterator;
009 import java.util.List;
010 import org.lwjgl.input.Keyboard;
011
012 @SideOnly(Side.CLIENT)
013 public class GuiFlatPresets extends GuiScreen
014 {
015 private static RenderItem field_82305_a = new RenderItem();
016 private static final List field_82301_b = new ArrayList();
017 private final GuiCreateFlatWorld field_82302_c;
018 private String field_82300_d;
019 private String field_82308_m;
020 private String field_82306_n;
021 private GuiFlatPresetsListSlot field_82307_o;
022 private GuiButton field_82304_p;
023 private GuiTextField field_82303_q;
024
025 public GuiFlatPresets(GuiCreateFlatWorld par1)
026 {
027 this.field_82302_c = par1;
028 }
029
030 /**
031 * Adds the buttons (and other controls) to the screen in question.
032 */
033 public void initGui()
034 {
035 this.controlList.clear();
036 Keyboard.enableRepeatEvents(true);
037 this.field_82300_d = StatCollector.translateToLocal("createWorld.customize.presets.title");
038 this.field_82308_m = StatCollector.translateToLocal("createWorld.customize.presets.share");
039 this.field_82306_n = StatCollector.translateToLocal("createWorld.customize.presets.list");
040 this.field_82303_q = new GuiTextField(this.fontRenderer, 50, 40, this.width - 100, 20);
041 this.field_82307_o = new GuiFlatPresetsListSlot(this);
042 this.field_82303_q.setMaxStringLength(1230);
043 this.field_82303_q.setText(this.field_82302_c.func_82275_e());
044 this.controlList.add(this.field_82304_p = new GuiButton(0, this.width / 2 - 155, this.height - 28, 150, 20, StatCollector.translateToLocal("createWorld.customize.presets.select")));
045 this.controlList.add(new GuiButton(1, this.width / 2 + 5, this.height - 28, 150, 20, StatCollector.translateToLocal("gui.cancel")));
046 this.func_82296_g();
047 }
048
049 /**
050 * Called when the screen is unloaded. Used to disable keyboard repeat events
051 */
052 public void onGuiClosed()
053 {
054 Keyboard.enableRepeatEvents(false);
055 }
056
057 /**
058 * Called when the mouse is clicked.
059 */
060 protected void mouseClicked(int par1, int par2, int par3)
061 {
062 this.field_82303_q.mouseClicked(par1, par2, par3);
063 super.mouseClicked(par1, par2, par3);
064 }
065
066 /**
067 * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
068 */
069 protected void keyTyped(char par1, int par2)
070 {
071 if (!this.field_82303_q.textboxKeyTyped(par1, par2))
072 {
073 super.keyTyped(par1, par2);
074 }
075 }
076
077 /**
078 * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
079 */
080 protected void actionPerformed(GuiButton par1GuiButton)
081 {
082 if (par1GuiButton.id == 0 && this.func_82293_j())
083 {
084 this.field_82302_c.func_82273_a(this.field_82303_q.getText());
085 this.mc.displayGuiScreen(this.field_82302_c);
086 }
087 else if (par1GuiButton.id == 1)
088 {
089 this.mc.displayGuiScreen(this.field_82302_c);
090 }
091 }
092
093 /**
094 * Draws the screen and all the components in it.
095 */
096 public void drawScreen(int par1, int par2, float par3)
097 {
098 this.drawDefaultBackground();
099 this.field_82307_o.drawScreen(par1, par2, par3);
100 this.drawCenteredString(this.fontRenderer, this.field_82300_d, this.width / 2, 8, 16777215);
101 this.drawString(this.fontRenderer, this.field_82308_m, 50, 30, 10526880);
102 this.drawString(this.fontRenderer, this.field_82306_n, 50, 70, 10526880);
103 this.field_82303_q.drawTextBox();
104 super.drawScreen(par1, par2, par3);
105 }
106
107 /**
108 * Called from the main game loop to update the screen.
109 */
110 public void updateScreen()
111 {
112 this.field_82303_q.updateCursorCounter();
113 super.updateScreen();
114 }
115
116 public void func_82296_g()
117 {
118 boolean var1 = this.func_82293_j();
119 this.field_82304_p.enabled = var1;
120 }
121
122 private boolean func_82293_j()
123 {
124 return this.field_82307_o.field_82459_a > -1 && this.field_82307_o.field_82459_a < field_82301_b.size() || this.field_82303_q.getText().length() > 1;
125 }
126
127 private static void func_82297_a(String par0Str, int par1, BiomeGenBase par2BiomeGenBase, FlatLayerInfo ... par3ArrayOfFlatLayerInfo)
128 {
129 func_82294_a(par0Str, par1, par2BiomeGenBase, (List)null, par3ArrayOfFlatLayerInfo);
130 }
131
132 private static void func_82294_a(String par0Str, int par1, BiomeGenBase par2BiomeGenBase, List par3List, FlatLayerInfo ... par4ArrayOfFlatLayerInfo)
133 {
134 FlatGeneratorInfo var5 = new FlatGeneratorInfo();
135
136 for (int var6 = par4ArrayOfFlatLayerInfo.length - 1; var6 >= 0; --var6)
137 {
138 var5.func_82650_c().add(par4ArrayOfFlatLayerInfo[var6]);
139 }
140
141 var5.func_82647_a(par2BiomeGenBase.biomeID);
142 var5.func_82645_d();
143
144 if (par3List != null)
145 {
146 Iterator var8 = par3List.iterator();
147
148 while (var8.hasNext())
149 {
150 String var7 = (String)var8.next();
151 var5.func_82644_b().put(var7, new HashMap());
152 }
153 }
154
155 field_82301_b.add(new GuiFlatPresetsItem(par1, par0Str, var5.toString()));
156 }
157
158 static RenderItem func_82299_h()
159 {
160 return field_82305_a;
161 }
162
163 static List func_82295_i()
164 {
165 return field_82301_b;
166 }
167
168 static GuiFlatPresetsListSlot func_82292_a(GuiFlatPresets par0GuiFlatPresets)
169 {
170 return par0GuiFlatPresets.field_82307_o;
171 }
172
173 static GuiTextField func_82298_b(GuiFlatPresets par0GuiFlatPresets)
174 {
175 return par0GuiFlatPresets.field_82303_q;
176 }
177
178 static
179 {
180 func_82294_a("Classic Flat", Block.grass.blockID, BiomeGenBase.plains, Arrays.asList(new String[] {"village"}), new FlatLayerInfo[] {new FlatLayerInfo(1, Block.grass.blockID), new FlatLayerInfo(2, Block.dirt.blockID), new FlatLayerInfo(1, Block.bedrock.blockID)});
181 func_82294_a("Tunnelers\' Dream", Block.stone.blockID, BiomeGenBase.extremeHills, Arrays.asList(new String[] {"biome_1", "dungeon", "decoration", "stronghold", "mineshaft"}), new FlatLayerInfo[] {new FlatLayerInfo(1, Block.grass.blockID), new FlatLayerInfo(5, Block.dirt.blockID), new FlatLayerInfo(230, Block.stone.blockID), new FlatLayerInfo(1, Block.bedrock.blockID)});
182 func_82294_a("Water World", Block.waterMoving.blockID, BiomeGenBase.plains, Arrays.asList(new String[] {"village", "biome_1"}), new FlatLayerInfo[] {new FlatLayerInfo(90, Block.waterStill.blockID), new FlatLayerInfo(5, Block.sand.blockID), new FlatLayerInfo(5, Block.dirt.blockID), new FlatLayerInfo(5, Block.stone.blockID), new FlatLayerInfo(1, Block.bedrock.blockID)});
183 func_82294_a("Overworld", Block.tallGrass.blockID, BiomeGenBase.plains, Arrays.asList(new String[] {"village", "biome_1", "decoration", "stronghold", "mineshaft", "dungeon", "lake", "lava_lake"}), new FlatLayerInfo[] {new FlatLayerInfo(1, Block.grass.blockID), new FlatLayerInfo(3, Block.dirt.blockID), new FlatLayerInfo(59, Block.stone.blockID), new FlatLayerInfo(1, Block.bedrock.blockID)});
184 func_82294_a("Snowy Kingdom", Block.snow.blockID, BiomeGenBase.icePlains, Arrays.asList(new String[] {"village", "biome_1"}), new FlatLayerInfo[] {new FlatLayerInfo(1, Block.snow.blockID), new FlatLayerInfo(1, Block.grass.blockID), new FlatLayerInfo(3, Block.dirt.blockID), new FlatLayerInfo(59, Block.stone.blockID), new FlatLayerInfo(1, Block.bedrock.blockID)});
185 func_82294_a("Bottomless Pit", Item.feather.shiftedIndex, BiomeGenBase.plains, Arrays.asList(new String[] {"village", "biome_1"}), new FlatLayerInfo[] {new FlatLayerInfo(1, Block.grass.blockID), new FlatLayerInfo(3, Block.dirt.blockID), new FlatLayerInfo(2, Block.cobblestone.blockID)});
186 func_82294_a("Desert", Block.sand.blockID, BiomeGenBase.desert, Arrays.asList(new String[] {"village", "biome_1", "decoration", "stronghold", "mineshaft", "dungeon"}), new FlatLayerInfo[] {new FlatLayerInfo(8, Block.sand.blockID), new FlatLayerInfo(52, Block.sandStone.blockID), new FlatLayerInfo(3, Block.stone.blockID), new FlatLayerInfo(1, Block.bedrock.blockID)});
187 func_82297_a("Redstone Ready", Item.redstone.shiftedIndex, BiomeGenBase.desert, new FlatLayerInfo[] {new FlatLayerInfo(52, Block.sandStone.blockID), new FlatLayerInfo(3, Block.stone.blockID), new FlatLayerInfo(1, Block.bedrock.blockID)});
188 }
189 }