package net.minecraft.client.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; import net.minecraft.block.Block; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.item.Item; import net.minecraft.util.StatCollector; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.gen.FlatGeneratorInfo; import net.minecraft.world.gen.FlatLayerInfo; import org.lwjgl.input.Keyboard; @SideOnly(Side.CLIENT) public class GuiFlatPresets extends GuiScreen { /** RenderItem instance used to render preset icons. */ private static RenderItem presetIconRenderer = new RenderItem(); /** List of defined flat world presets. */ private static final List presets = new ArrayList(); private final GuiCreateFlatWorld createFlatWorldGui; private String field_82300_d; private String field_82308_m; private String field_82306_n; private GuiFlatPresetsListSlot theFlatPresetsListSlot; private GuiButton theButton; private GuiTextField theTextField; public GuiFlatPresets(GuiCreateFlatWorld par1) { this.createFlatWorldGui = par1; } /** * Adds the buttons (and other controls) to the screen in question. */ public void initGui() { this.buttonList.clear(); Keyboard.enableRepeatEvents(true); this.field_82300_d = StatCollector.translateToLocal("createWorld.customize.presets.title"); this.field_82308_m = StatCollector.translateToLocal("createWorld.customize.presets.share"); this.field_82306_n = StatCollector.translateToLocal("createWorld.customize.presets.list"); this.theTextField = new GuiTextField(this.fontRenderer, 50, 40, this.width - 100, 20); this.theFlatPresetsListSlot = new GuiFlatPresetsListSlot(this); this.theTextField.setMaxStringLength(1230); this.theTextField.setText(this.createFlatWorldGui.getFlatGeneratorInfo()); this.buttonList.add(this.theButton = new GuiButton(0, this.width / 2 - 155, this.height - 28, 150, 20, StatCollector.translateToLocal("createWorld.customize.presets.select"))); this.buttonList.add(new GuiButton(1, this.width / 2 + 5, this.height - 28, 150, 20, StatCollector.translateToLocal("gui.cancel"))); this.func_82296_g(); } /** * Called when the screen is unloaded. Used to disable keyboard repeat events */ public void onGuiClosed() { Keyboard.enableRepeatEvents(false); } /** * Called when the mouse is clicked. */ protected void mouseClicked(int par1, int par2, int par3) { this.theTextField.mouseClicked(par1, par2, par3); super.mouseClicked(par1, par2, par3); } /** * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e). */ protected void keyTyped(char par1, int par2) { if (!this.theTextField.textboxKeyTyped(par1, par2)) { super.keyTyped(par1, par2); } } /** * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e). */ protected void actionPerformed(GuiButton par1GuiButton) { if (par1GuiButton.id == 0 && this.func_82293_j()) { this.createFlatWorldGui.setFlatGeneratorInfo(this.theTextField.getText()); this.mc.displayGuiScreen(this.createFlatWorldGui); } else if (par1GuiButton.id == 1) { this.mc.displayGuiScreen(this.createFlatWorldGui); } } /** * Draws the screen and all the components in it. */ public void drawScreen(int par1, int par2, float par3) { this.drawDefaultBackground(); this.theFlatPresetsListSlot.drawScreen(par1, par2, par3); this.drawCenteredString(this.fontRenderer, this.field_82300_d, this.width / 2, 8, 16777215); this.drawString(this.fontRenderer, this.field_82308_m, 50, 30, 10526880); this.drawString(this.fontRenderer, this.field_82306_n, 50, 70, 10526880); this.theTextField.drawTextBox(); super.drawScreen(par1, par2, par3); } /** * Called from the main game loop to update the screen. */ public void updateScreen() { this.theTextField.updateCursorCounter(); super.updateScreen(); } public void func_82296_g() { boolean flag = this.func_82293_j(); this.theButton.enabled = flag; } private boolean func_82293_j() { return this.theFlatPresetsListSlot.field_82459_a > -1 && this.theFlatPresetsListSlot.field_82459_a < presets.size() || this.theTextField.getText().length() > 1; } /** * Add a flat world preset with no world features. */ public static void addPresetNoFeatures(String par0Str, int par1, BiomeGenBase par2BiomeGenBase, FlatLayerInfo ... par3ArrayOfFlatLayerInfo) { addPreset(par0Str, par1, par2BiomeGenBase, (List)null, par3ArrayOfFlatLayerInfo); } /** * Add a flat world preset. */ public static void addPreset(String par0Str, int par1, BiomeGenBase par2BiomeGenBase, List par3List, FlatLayerInfo ... par4ArrayOfFlatLayerInfo) { FlatGeneratorInfo flatgeneratorinfo = new FlatGeneratorInfo(); for (int j = par4ArrayOfFlatLayerInfo.length - 1; j >= 0; --j) { flatgeneratorinfo.getFlatLayers().add(par4ArrayOfFlatLayerInfo[j]); } flatgeneratorinfo.setBiome(par2BiomeGenBase.biomeID); flatgeneratorinfo.func_82645_d(); if (par3List != null) { Iterator iterator = par3List.iterator(); while (iterator.hasNext()) { String s1 = (String)iterator.next(); flatgeneratorinfo.getWorldFeatures().put(s1, new HashMap()); } } presets.add(new GuiFlatPresetsItem(par1, par0Str, flatgeneratorinfo.toString())); } /** * Return the RenderItem instance used to render preset icons. */ static RenderItem getPresetIconRenderer() { return presetIconRenderer; } /** * Return the list of defined flat world presets. */ static List getPresets() { return presets; } static GuiFlatPresetsListSlot func_82292_a(GuiFlatPresets par0GuiFlatPresets) { return par0GuiFlatPresets.theFlatPresetsListSlot; } static GuiTextField func_82298_b(GuiFlatPresets par0GuiFlatPresets) { return par0GuiFlatPresets.theTextField; } static { addPreset("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)}); addPreset("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)}); addPreset("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)}); addPreset("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)}); addPreset("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)}); addPreset("Bottomless Pit", Item.feather.itemID, 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)}); addPreset("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)}); addPresetNoFeatures("Redstone Ready", Item.redstone.itemID, BiomeGenBase.desert, new FlatLayerInfo[] {new FlatLayerInfo(52, Block.sandStone.blockID), new FlatLayerInfo(3, Block.stone.blockID), new FlatLayerInfo(1, Block.bedrock.blockID)}); } }