    001package net.minecraft.client.gui;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import java.util.ArrayList;
    006import java.util.Collections;
    007import java.util.List;
    008import net.minecraft.client.Minecraft;
    009import net.minecraft.client.mco.Location;
    010import net.minecraft.util.StringTranslate;
    011import org.lwjgl.input.Keyboard;
    012
    013@SideOnly(Side.CLIENT)
    014public class GuiScreenCreateOnlineWorld extends GuiScreen
    015{
    016    private GuiScreen field_96260_a;
    017    private GuiTextField field_96255_b;
    018    private GuiTextField field_96257_c;
    019    private String field_98108_c;
    020    private String field_98109_n;
    021    private static int field_96253_d = 0;
    022    private static int field_96261_n = 1;
    023    private static int field_96262_o = 2;
    024    private volatile List field_96259_p;
    025    private volatile Location field_96258_q = null;
    026    private boolean field_96256_r = false;
    027    private String field_96254_s = "You must enter a name!";
    028
    029    public GuiScreenCreateOnlineWorld(GuiScreen par1GuiScreen)
    030    {
    031        super.buttonList = Collections.synchronizedList(new ArrayList());
    032        this.field_96260_a = par1GuiScreen;
    033    }
    034
    035    /**
    036     * Called from the main game loop to update the screen.
    037     */
    038    public void updateScreen()
    039    {
    040        this.field_96257_c.updateCursorCounter();
    041        this.field_96255_b.updateCursorCounter();
    042        this.field_98108_c = this.field_96257_c.getText();
    043        this.field_98109_n = this.field_96255_b.getText();
    044    }
    045
    046    /**
    047     * Adds the buttons (and other controls) to the screen in question.
    048     */
    049    public void initGui()
    050    {
    051        StringTranslate stringtranslate = StringTranslate.getInstance();
    052        Keyboard.enableRepeatEvents(true);
    053        this.buttonList.clear();
    054        this.buttonList.add(new GuiButton(field_96253_d, this.width / 2 - 100, this.height / 4 + 120 + 17, 97, 20, stringtranslate.translateKey("mco.create.world")));
    055        this.buttonList.add(new GuiButton(field_96261_n, this.width / 2 + 5, this.height / 4 + 120 + 17, 95, 20, stringtranslate.translateKey("gui.cancel")));
    056        this.field_96257_c = new GuiTextField(this.fontRenderer, this.width / 2 - 100, 55, 200, 20);
    057        this.field_96257_c.setFocused(true);
    058
    059        if (this.field_98108_c != null)
    060        {
    061            this.field_96257_c.setText(this.field_98108_c);
    062        }
    063
    064        this.field_96255_b = new GuiTextField(this.fontRenderer, this.width / 2 - 100, 95, 200, 20);
    065        this.field_96255_b.setMaxStringLength(128);
    066
    067        if (this.field_98109_n != null)
    068        {
    069            this.field_96255_b.setText(this.field_98109_n);
    070        }
    071
    072        this.func_96250_g();
    073    }
    074
    075    private void func_96250_g()
    076    {
    077        if (this.field_96258_q == null)
    078        {
    079            (new ThreadCreateOnlineWorldScreen(this)).start();
    080        }
    081        else
    082        {
    083            this.buttonList.add(new GuiButton(field_96262_o, this.width / 2 - 100, 135, this.field_96258_q.field_96395_b));
    084        }
    085    }
    086
    087    /**
    088     * Called when the screen is unloaded. Used to disable keyboard repeat events
    089     */
    090    public void onGuiClosed()
    091    {
    092        Keyboard.enableRepeatEvents(false);
    093    }
    094
    095    /**
    096     * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
    097     */
    098    protected void actionPerformed(GuiButton par1GuiButton)
    099    {
    100        if (par1GuiButton.enabled)
    101        {
    102            if (par1GuiButton.id == field_96261_n)
    103            {
    104                this.mc.displayGuiScreen(this.field_96260_a);
    105            }
    106            else if (par1GuiButton.id == field_96253_d)
    107            {
    108                this.func_96252_h();
    109            }
    110            else if (par1GuiButton.id == field_96262_o)
    111            {
    112                GuiScreenSelectLocation guiscreenselectlocation = new GuiScreenSelectLocation(this, this.field_96259_p, this.field_96258_q, this.field_96257_c.getText(), this.field_96255_b.getText());
    113                this.mc.displayGuiScreen(guiscreenselectlocation);
    114            }
    115        }
    116    }
    117
    118    private void func_96252_h()
    119    {
    120        if (this.func_96249_i())
    121        {
    122            String s = this.field_96255_b.getText() != null && !this.field_96255_b.getText().trim().equals("") ? this.field_96255_b.getText() : "Minecraft Realms Server";
    123            TaskWorldCreation taskworldcreation = new TaskWorldCreation(this, this.field_96257_c.getText(), s, this.field_96258_q == null ? "NO_LOCATION" : this.field_96258_q.field_96396_a);
    124            GuiScreenLongRunningTask guiscreenlongrunningtask = new GuiScreenLongRunningTask(this.mc, this.field_96260_a, taskworldcreation);
    125            guiscreenlongrunningtask.func_98117_g();
    126            this.mc.displayGuiScreen(guiscreenlongrunningtask);
    127        }
    128    }
    129
    130    private boolean func_96249_i()
    131    {
    132        this.field_96256_r = this.field_96257_c.getText() == null || this.field_96257_c.getText().trim().equals("");
    133        return !this.field_96256_r;
    134    }
    135
    136    /**
    137     * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
    138     */
    139    protected void keyTyped(char par1, int par2)
    140    {
    141        this.field_96257_c.textboxKeyTyped(par1, par2);
    142        this.field_96255_b.textboxKeyTyped(par1, par2);
    143
    144        if (par1 == 9)
    145        {
    146            if (this.field_96257_c.isFocused())
    147            {
    148                this.field_96257_c.setFocused(false);
    149                this.field_96255_b.setFocused(true);
    150            }
    151            else
    152            {
    153                this.field_96257_c.setFocused(true);
    154                this.field_96255_b.setFocused(false);
    155            }
    156        }
    157
    158        if (par1 == 13)
    159        {
    160            this.actionPerformed((GuiButton)this.buttonList.get(0));
    161        }
    162    }
    163
    164    /**
    165     * Called when the mouse is clicked.
    166     */
    167    protected void mouseClicked(int par1, int par2, int par3)
    168    {
    169        super.mouseClicked(par1, par2, par3);
    170        this.field_96255_b.mouseClicked(par1, par2, par3);
    171        this.field_96257_c.mouseClicked(par1, par2, par3);
    172    }
    173
    174    /**
    175     * Draws the screen and all the components in it.
    176     */
    177    public void drawScreen(int par1, int par2, float par3)
    178    {
    179        StringTranslate stringtranslate = StringTranslate.getInstance();
    180        this.drawDefaultBackground();
    181        this.drawCenteredString(this.fontRenderer, stringtranslate.translateKey("mco.selectServer.create"), this.width / 2, 11, 16777215);
    182        this.drawString(this.fontRenderer, stringtranslate.translateKey("mco.configure.world.name"), this.width / 2 - 100, 42, 10526880);
    183        this.drawString(this.fontRenderer, stringtranslate.translateKey("mco.configure.world.description"), this.width / 2 - 100, 83, 10526880);
    184
    185        if (this.field_96258_q != null)
    186        {
    187            this.drawString(this.fontRenderer, stringtranslate.translateKey("mco.configure.world.location"), this.width / 2 - 100, 124, 10526880);
    188        }
    189
    190        if (this.field_96256_r)
    191        {
    192            this.drawCenteredString(this.fontRenderer, this.field_96254_s, this.width / 2, 167, 16711680);
    193        }
    194
    195        this.field_96257_c.drawTextBox();
    196        this.field_96255_b.drawTextBox();
    197        super.drawScreen(par1, par2, par3);
    198    }
    199
    200    public void func_96251_a(Location par1Location, String par2Str, String par3Str)
    201    {
    202        this.field_96258_q = par1Location;
    203        this.field_96257_c.setText(par2Str);
    204        this.field_96255_b.setText(par3Str);
    205    }
    206
    207    static Minecraft func_96248_a(GuiScreenCreateOnlineWorld par0GuiScreenCreateOnlineWorld)
    208    {
    209        return par0GuiScreenCreateOnlineWorld.mc;
    210    }
    211
    212    static List func_98102_a(GuiScreenCreateOnlineWorld par0GuiScreenCreateOnlineWorld, List par1List)
    213    {
    214        return par0GuiScreenCreateOnlineWorld.field_96259_p = par1List;
    215    }
    216
    217    static Location func_98100_a(GuiScreenCreateOnlineWorld par0GuiScreenCreateOnlineWorld, Location par1Location)
    218    {
    219        return par0GuiScreenCreateOnlineWorld.field_96258_q = par1Location;
    220    }
    221
    222    static int func_98106_g()
    223    {
    224        return field_96262_o;
    225    }
    226
    227    static Location func_98101_b(GuiScreenCreateOnlineWorld par0GuiScreenCreateOnlineWorld)
    228    {
    229        return par0GuiScreenCreateOnlineWorld.field_96258_q;
    230    }
    231
    232    static List func_98103_c(GuiScreenCreateOnlineWorld par0GuiScreenCreateOnlineWorld)
    233    {
    234        return par0GuiScreenCreateOnlineWorld.buttonList;
    235    }
    236
    237    static Minecraft func_98099_d(GuiScreenCreateOnlineWorld par0GuiScreenCreateOnlineWorld)
    238    {
    239        return par0GuiScreenCreateOnlineWorld.mc;
    240    }
    241
    242    static GuiScreen func_96247_b(GuiScreenCreateOnlineWorld par0GuiScreenCreateOnlineWorld)
    243    {
    244        return par0GuiScreenCreateOnlineWorld.field_96260_a;
    245    }
    246
    247    static Minecraft func_96246_c(GuiScreenCreateOnlineWorld par0GuiScreenCreateOnlineWorld)
    248    {
    249        return par0GuiScreenCreateOnlineWorld.mc;
    250    }
    251}