package net.minecraft.client.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.Random; import net.minecraft.client.resources.I18n; import net.minecraft.util.ChatAllowedCharacters; import net.minecraft.util.MathHelper; import net.minecraft.world.WorldSettings; import net.minecraft.world.WorldType; import net.minecraft.world.storage.ISaveFormat; import net.minecraft.world.storage.WorldInfo; import org.lwjgl.input.Keyboard; @SideOnly(Side.CLIENT) public class GuiCreateWorld extends GuiScreen { private GuiScreen field_146332_f; private GuiTextField field_146333_g; private GuiTextField field_146335_h; private String field_146336_i; private String field_146342_r = "survival"; private boolean field_146341_s = true; private boolean field_146340_t; private boolean field_146339_u; private boolean field_146338_v; private boolean field_146337_w; private boolean field_146345_x; private boolean field_146344_y; private GuiButton field_146343_z; private GuiButton field_146324_A; private GuiButton field_146325_B; private GuiButton field_146326_C; private GuiButton field_146320_D; private GuiButton field_146321_E; private GuiButton field_146322_F; private String field_146323_G; private String field_146328_H; private String field_146329_I; private String field_146330_J; private int field_146331_K; public String field_146334_a = ""; private static final String[] field_146327_L = new String[] {"CON", "COM", "PRN", "AUX", "CLOCK$", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9"}; private static final String __OBFID = "CL_00000689"; public GuiCreateWorld(GuiScreen p_i1030_1_) { this.field_146332_f = p_i1030_1_; this.field_146329_I = ""; this.field_146330_J = I18n.format("selectWorld.newWorld", new Object[0]); } /** * Called from the main game loop to update the screen. */ public void updateScreen() { this.field_146333_g.updateCursorCounter(); this.field_146335_h.updateCursorCounter(); } /** * Adds the buttons (and other controls) to the screen in question. */ public void initGui() { Keyboard.enableRepeatEvents(true); this.buttonList.clear(); this.buttonList.add(new GuiButton(0, this.width / 2 - 155, this.height - 28, 150, 20, I18n.format("selectWorld.create", new Object[0]))); this.buttonList.add(new GuiButton(1, this.width / 2 + 5, this.height - 28, 150, 20, I18n.format("gui.cancel", new Object[0]))); this.buttonList.add(this.field_146343_z = new GuiButton(2, this.width / 2 - 75, 115, 150, 20, I18n.format("selectWorld.gameMode", new Object[0]))); this.buttonList.add(this.field_146324_A = new GuiButton(3, this.width / 2 - 75, 187, 150, 20, I18n.format("selectWorld.moreWorldOptions", new Object[0]))); this.buttonList.add(this.field_146325_B = new GuiButton(4, this.width / 2 - 155, 100, 150, 20, I18n.format("selectWorld.mapFeatures", new Object[0]))); this.field_146325_B.visible = false; this.buttonList.add(this.field_146326_C = new GuiButton(7, this.width / 2 + 5, 151, 150, 20, I18n.format("selectWorld.bonusItems", new Object[0]))); this.field_146326_C.visible = false; this.buttonList.add(this.field_146320_D = new GuiButton(5, this.width / 2 + 5, 100, 150, 20, I18n.format("selectWorld.mapType", new Object[0]))); this.field_146320_D.visible = false; this.buttonList.add(this.field_146321_E = new GuiButton(6, this.width / 2 - 155, 151, 150, 20, I18n.format("selectWorld.allowCommands", new Object[0]))); this.field_146321_E.visible = false; this.buttonList.add(this.field_146322_F = new GuiButton(8, this.width / 2 + 5, 120, 150, 20, I18n.format("selectWorld.customizeType", new Object[0]))); this.field_146322_F.visible = false; this.field_146333_g = new GuiTextField(this.fontRendererObj, this.width / 2 - 100, 60, 200, 20); this.field_146333_g.setFocused(true); this.field_146333_g.setText(this.field_146330_J); this.field_146335_h = new GuiTextField(this.fontRendererObj, this.width / 2 - 100, 60, 200, 20); this.field_146335_h.setText(this.field_146329_I); this.func_146316_a(this.field_146344_y); this.func_146314_g(); this.func_146319_h(); } private void func_146314_g() { this.field_146336_i = this.field_146333_g.getText().trim(); char[] achar = ChatAllowedCharacters.allowedCharactersArray; int i = achar.length; for (int j = 0; j < i; ++j) { char c0 = achar[j]; this.field_146336_i = this.field_146336_i.replace(c0, '_'); } if (MathHelper.stringNullOrLengthZero(this.field_146336_i)) { this.field_146336_i = "World"; } this.field_146336_i = func_146317_a(this.mc.getSaveLoader(), this.field_146336_i); } private void func_146319_h() { this.field_146343_z.displayString = I18n.format("selectWorld.gameMode", new Object[0]) + " " + I18n.format("selectWorld.gameMode." + this.field_146342_r, new Object[0]); this.field_146323_G = I18n.format("selectWorld.gameMode." + this.field_146342_r + ".line1", new Object[0]); this.field_146328_H = I18n.format("selectWorld.gameMode." + this.field_146342_r + ".line2", new Object[0]); this.field_146325_B.displayString = I18n.format("selectWorld.mapFeatures", new Object[0]) + " "; if (this.field_146341_s) { this.field_146325_B.displayString = this.field_146325_B.displayString + I18n.format("options.on", new Object[0]); } else { this.field_146325_B.displayString = this.field_146325_B.displayString + I18n.format("options.off", new Object[0]); } this.field_146326_C.displayString = I18n.format("selectWorld.bonusItems", new Object[0]) + " "; if (this.field_146338_v && !this.field_146337_w) { this.field_146326_C.displayString = this.field_146326_C.displayString + I18n.format("options.on", new Object[0]); } else { this.field_146326_C.displayString = this.field_146326_C.displayString + I18n.format("options.off", new Object[0]); } this.field_146320_D.displayString = I18n.format("selectWorld.mapType", new Object[0]) + " " + I18n.format(WorldType.worldTypes[this.field_146331_K].getTranslateName(), new Object[0]); this.field_146321_E.displayString = I18n.format("selectWorld.allowCommands", new Object[0]) + " "; if (this.field_146340_t && !this.field_146337_w) { this.field_146321_E.displayString = this.field_146321_E.displayString + I18n.format("options.on", new Object[0]); } else { this.field_146321_E.displayString = this.field_146321_E.displayString + I18n.format("options.off", new Object[0]); } } public static String func_146317_a(ISaveFormat p_146317_0_, String p_146317_1_) { p_146317_1_ = p_146317_1_.replaceAll("[\\./\"]", "_"); String[] astring = field_146327_L; int i = astring.length; for (int j = 0; j < i; ++j) { String s1 = astring[j]; if (p_146317_1_.equalsIgnoreCase(s1)) { p_146317_1_ = "_" + p_146317_1_ + "_"; } } while (p_146317_0_.getWorldInfo(p_146317_1_) != null) { p_146317_1_ = p_146317_1_ + "-"; } return p_146317_1_; } /** * Called when the screen is unloaded. Used to disable keyboard repeat events */ public void onGuiClosed() { Keyboard.enableRepeatEvents(false); } protected void actionPerformed(GuiButton button) { if (button.enabled) { if (button.id == 1) { this.mc.displayGuiScreen(this.field_146332_f); } else if (button.id == 0) { this.mc.displayGuiScreen((GuiScreen)null); if (this.field_146345_x) { return; } this.field_146345_x = true; long i = (new Random()).nextLong(); String s = this.field_146335_h.getText(); if (!MathHelper.stringNullOrLengthZero(s)) { try { long j = Long.parseLong(s); if (j != 0L) { i = j; } } catch (NumberFormatException numberformatexception) { i = (long)s.hashCode(); } } WorldType.worldTypes[this.field_146331_K].onGUICreateWorldPress(); WorldSettings.GameType gametype = WorldSettings.GameType.getByName(this.field_146342_r); WorldSettings worldsettings = new WorldSettings(i, gametype, this.field_146341_s, this.field_146337_w, WorldType.worldTypes[this.field_146331_K]); worldsettings.setWorldName(this.field_146334_a); if (this.field_146338_v && !this.field_146337_w) { worldsettings.enableBonusChest(); } if (this.field_146340_t && !this.field_146337_w) { worldsettings.enableCommands(); } this.mc.launchIntegratedServer(this.field_146336_i, this.field_146333_g.getText().trim(), worldsettings); } else if (button.id == 3) { this.func_146315_i(); } else if (button.id == 2) { if (this.field_146342_r.equals("survival")) { if (!this.field_146339_u) { this.field_146340_t = false; } this.field_146337_w = false; this.field_146342_r = "hardcore"; this.field_146337_w = true; this.field_146321_E.enabled = false; this.field_146326_C.enabled = false; this.func_146319_h(); } else if (this.field_146342_r.equals("hardcore")) { if (!this.field_146339_u) { this.field_146340_t = true; } this.field_146337_w = false; this.field_146342_r = "creative"; this.func_146319_h(); this.field_146337_w = false; this.field_146321_E.enabled = true; this.field_146326_C.enabled = true; } else { if (!this.field_146339_u) { this.field_146340_t = false; } this.field_146342_r = "survival"; this.func_146319_h(); this.field_146321_E.enabled = true; this.field_146326_C.enabled = true; this.field_146337_w = false; } this.func_146319_h(); } else if (button.id == 4) { this.field_146341_s = !this.field_146341_s; this.func_146319_h(); } else if (button.id == 7) { this.field_146338_v = !this.field_146338_v; this.func_146319_h(); } else if (button.id == 5) { ++this.field_146331_K; if (this.field_146331_K >= WorldType.worldTypes.length) { this.field_146331_K = 0; } while (WorldType.worldTypes[this.field_146331_K] == null || !WorldType.worldTypes[this.field_146331_K].getCanBeCreated()) { ++this.field_146331_K; if (this.field_146331_K >= WorldType.worldTypes.length) { this.field_146331_K = 0; } } this.field_146334_a = ""; this.func_146319_h(); this.func_146316_a(this.field_146344_y); } else if (button.id == 6) { this.field_146339_u = true; this.field_146340_t = !this.field_146340_t; this.func_146319_h(); } else if (button.id == 8) { WorldType.worldTypes[field_146331_K].onCustomizeButton(mc, this); } } } private void func_146315_i() { this.func_146316_a(!this.field_146344_y); } private void func_146316_a(boolean p_146316_1_) { this.field_146344_y = p_146316_1_; this.field_146343_z.visible = !this.field_146344_y; this.field_146325_B.visible = this.field_146344_y; this.field_146326_C.visible = this.field_146344_y; this.field_146320_D.visible = this.field_146344_y; this.field_146321_E.visible = this.field_146344_y; this.field_146322_F.visible = this.field_146344_y && WorldType.worldTypes[this.field_146331_K].isCustomizable(); if (this.field_146344_y) { this.field_146324_A.displayString = I18n.format("gui.done", new Object[0]); } else { this.field_146324_A.displayString = I18n.format("selectWorld.moreWorldOptions", new Object[0]); } } /** * Fired when a key is typed (except F11 who toggle full screen). This is the equivalent of * KeyListener.keyTyped(KeyEvent e). Args : character (character on the key), keyCode (lwjgl Keyboard key code) */ protected void keyTyped(char typedChar, int keyCode) { if (this.field_146333_g.isFocused() && !this.field_146344_y) { this.field_146333_g.textboxKeyTyped(typedChar, keyCode); this.field_146330_J = this.field_146333_g.getText(); } else if (this.field_146335_h.isFocused() && this.field_146344_y) { this.field_146335_h.textboxKeyTyped(typedChar, keyCode); this.field_146329_I = this.field_146335_h.getText(); } if (keyCode == 28 || keyCode == 156) { this.actionPerformed((GuiButton)this.buttonList.get(0)); } ((GuiButton)this.buttonList.get(0)).enabled = this.field_146333_g.getText().length() > 0; this.func_146314_g(); } /** * Called when the mouse is clicked. Args : mouseX, mouseY, clickedButton */ protected void mouseClicked(int mouseX, int mouseY, int mouseButton) { super.mouseClicked(mouseX, mouseY, mouseButton); if (this.field_146344_y) { this.field_146335_h.mouseClicked(mouseX, mouseY, mouseButton); } else { this.field_146333_g.mouseClicked(mouseX, mouseY, mouseButton); } } /** * Draws the screen and all the components in it. Args : mouseX, mouseY, renderPartialTicks */ public void drawScreen(int mouseX, int mouseY, float partialTicks) { this.drawDefaultBackground(); this.drawCenteredString(this.fontRendererObj, I18n.format("selectWorld.create", new Object[0]), this.width / 2, 20, -1); if (this.field_146344_y) { this.drawString(this.fontRendererObj, I18n.format("selectWorld.enterSeed", new Object[0]), this.width / 2 - 100, 47, -6250336); this.drawString(this.fontRendererObj, I18n.format("selectWorld.seedInfo", new Object[0]), this.width / 2 - 100, 85, -6250336); this.drawString(this.fontRendererObj, I18n.format("selectWorld.mapFeatures.info", new Object[0]), this.width / 2 - 150, 122, -6250336); this.drawString(this.fontRendererObj, I18n.format("selectWorld.allowCommands.info", new Object[0]), this.width / 2 - 150, 172, -6250336); this.field_146335_h.drawTextBox(); if (WorldType.worldTypes[this.field_146331_K].showWorldInfoNotice()) { this.fontRendererObj.drawSplitString(I18n.format(WorldType.worldTypes[this.field_146331_K].func_151359_c(), new Object[0]), this.field_146320_D.xPosition + 2, this.field_146320_D.yPosition + 22, this.field_146320_D.getButtonWidth(), 10526880); } } else { this.drawString(this.fontRendererObj, I18n.format("selectWorld.enterName", new Object[0]), this.width / 2 - 100, 47, -6250336); this.drawString(this.fontRendererObj, I18n.format("selectWorld.resultFolder", new Object[0]) + " " + this.field_146336_i, this.width / 2 - 100, 85, -6250336); this.field_146333_g.drawTextBox(); this.drawString(this.fontRendererObj, this.field_146323_G, this.width / 2 - 100, 137, -6250336); this.drawString(this.fontRendererObj, this.field_146328_H, this.width / 2 - 100, 149, -6250336); } super.drawScreen(mouseX, mouseY, partialTicks); } public void func_146318_a(WorldInfo p_146318_1_) { this.field_146330_J = I18n.format("selectWorld.newWorld.copyOf", new Object[] {p_146318_1_.getWorldName()}); this.field_146329_I = p_146318_1_.getSeed() + ""; this.field_146331_K = p_146318_1_.getTerrainType().getWorldTypeID(); this.field_146334_a = p_146318_1_.getGeneratorOptions(); this.field_146341_s = p_146318_1_.isMapFeaturesEnabled(); this.field_146340_t = p_146318_1_.areCommandsAllowed(); if (p_146318_1_.isHardcoreModeEnabled()) { this.field_146342_r = "hardcore"; } else if (p_146318_1_.getGameType().isSurvivalOrAdventure()) { this.field_146342_r = "survival"; } else if (p_146318_1_.getGameType().isCreative()) { this.field_146342_r = "creative"; } } }