    001package net.minecraft.client.gui;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import java.io.IOException;
    006import net.minecraft.client.Minecraft;
    007import net.minecraft.client.mco.ExceptionMcoService;
    008import net.minecraft.client.mco.McoClient;
    009import net.minecraft.client.mco.McoServer;
    010import net.minecraft.util.StringTranslate;
    011import org.lwjgl.input.Keyboard;
    012
    013@SideOnly(Side.CLIENT)
    014public class GuiScreenConfigureWorld extends GuiScreen
    015{
    016    private final GuiScreen field_96285_a;
    017    private McoServer field_96280_b;
    018    private SelectionListInvited field_96282_c;
    019    private int field_96277_d;
    020    private int field_96286_n;
    021    private int field_96287_o;
    022    private int field_96284_p = -1;
    023    private String field_96283_q;
    024    private GuiButton field_96281_r;
    025    private GuiButton field_96279_s;
    026    private GuiButton field_96278_t;
    027    private GuiButton field_96276_u;
    028    private GuiButton field_98128_v;
    029    private GuiButton field_98127_w;
    030    private GuiButton field_98129_x;
    031
    032    public GuiScreenConfigureWorld(GuiScreen par1, McoServer par2)
    033    {
    034        this.field_96285_a = par1;
    035        this.field_96280_b = par2;
    036    }
    037
    038    /**
    039     * Called from the main game loop to update the screen.
    040     */
    041    public void updateScreen() {}
    042
    043    /**
    044     * Adds the buttons (and other controls) to the screen in question.
    045     */
    046    public void initGui()
    047    {
    048        StringTranslate stringtranslate = StringTranslate.getInstance();
    049        this.field_96277_d = this.width / 2 - 200;
    050        this.field_96286_n = 180;
    051        this.field_96287_o = this.width / 2;
    052        Keyboard.enableRepeatEvents(true);
    053        this.buttonList.clear();
    054
    055        if (this.field_96280_b.field_96404_d.equals("CLOSED"))
    056        {
    057            this.buttonList.add(this.field_96281_r = new GuiButton(0, this.field_96277_d, this.func_96264_a(12), this.field_96286_n / 2 - 2, 20, stringtranslate.translateKey("mco.configure.world.buttons.open")));
    058            this.field_96281_r.enabled = !this.field_96280_b.field_98166_h;
    059        }
    060        else
    061        {
    062            this.buttonList.add(this.field_96279_s = new GuiButton(1, this.field_96277_d, this.func_96264_a(12), this.field_96286_n / 2 - 2, 20, stringtranslate.translateKey("mco.configure.world.buttons.close")));
    063            this.field_96279_s.enabled = !this.field_96280_b.field_98166_h;
    064        }
    065
    066        this.buttonList.add(this.field_98129_x = new GuiButton(7, this.field_96277_d + this.field_96286_n / 2 + 2, this.func_96264_a(12), this.field_96286_n / 2 - 2, 20, stringtranslate.translateKey("mco.configure.world.buttons.subscription")));
    067        this.buttonList.add(this.field_96278_t = new GuiButton(5, this.field_96277_d, this.func_96264_a(10), this.field_96286_n / 2 - 2, 20, stringtranslate.translateKey("mco.configure.world.buttons.edit")));
    068        this.buttonList.add(this.field_96276_u = new GuiButton(6, this.field_96277_d + this.field_96286_n / 2 + 2, this.func_96264_a(10), this.field_96286_n / 2 - 2, 20, stringtranslate.translateKey("mco.configure.world.buttons.reset")));
    069        this.buttonList.add(this.field_98128_v = new GuiButton(4, this.field_96287_o, this.func_96264_a(10), this.field_96286_n / 2 - 2, 20, stringtranslate.translateKey("mco.configure.world.buttons.invite")));
    070        this.buttonList.add(this.field_98127_w = new GuiButton(3, this.field_96287_o + this.field_96286_n / 2 + 2, this.func_96264_a(10), this.field_96286_n / 2 - 2, 20, stringtranslate.translateKey("mco.configure.world.buttons.uninvite")));
    071        this.buttonList.add(new GuiButton(10, this.field_96287_o, this.func_96264_a(12), this.field_96286_n, 20, stringtranslate.translateKey("gui.back")));
    072        this.field_96282_c = new SelectionListInvited(this);
    073        this.field_96278_t.enabled = !this.field_96280_b.field_98166_h;
    074        this.field_96276_u.enabled = !this.field_96280_b.field_98166_h;
    075        this.field_98128_v.enabled = !this.field_96280_b.field_98166_h;
    076        this.field_98127_w.enabled = !this.field_96280_b.field_98166_h;
    077    }
    078
    079    private int func_96264_a(int par1)
    080    {
    081        return 40 + par1 * 13;
    082    }
    083
    084    /**
    085     * Called when the screen is unloaded. Used to disable keyboard repeat events
    086     */
    087    public void onGuiClosed()
    088    {
    089        Keyboard.enableRepeatEvents(false);
    090    }
    091
    092    /**
    093     * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
    094     */
    095    protected void actionPerformed(GuiButton par1GuiButton)
    096    {
    097        if (par1GuiButton.enabled)
    098        {
    099            if (par1GuiButton.id == 10)
    100            {
    101                this.mc.displayGuiScreen(this.field_96285_a);
    102            }
    103            else if (par1GuiButton.id == 5)
    104            {
    105                this.mc.displayGuiScreen(new GuiScreenEditOnlineWorld(this, this.field_96285_a, this.field_96280_b));
    106            }
    107            else if (par1GuiButton.id == 1)
    108            {
    109                StringTranslate stringtranslate = StringTranslate.getInstance();
    110                String s = stringtranslate.translateKey("mco.configure.world.close.question.line1");
    111                String s1 = stringtranslate.translateKey("mco.configure.world.close.question.line2");
    112                this.mc.displayGuiScreen(new GuiScreenConfirmation(this, "Warning!", s, s1, 1));
    113            }
    114            else if (par1GuiButton.id == 0)
    115            {
    116                this.func_96268_g();
    117            }
    118            else if (par1GuiButton.id == 4)
    119            {
    120                this.mc.displayGuiScreen(new GuiScreenInvite(this.field_96285_a, this, this.field_96280_b));
    121            }
    122            else if (par1GuiButton.id == 3)
    123            {
    124                this.func_96272_i();
    125            }
    126            else if (par1GuiButton.id == 6)
    127            {
    128                this.mc.displayGuiScreen(new GuiScreenResetWorld(this, this.field_96280_b));
    129            }
    130            else if (par1GuiButton.id == 7)
    131            {
    132                this.mc.displayGuiScreen(new GuiScreenSubscription(this, this.field_96280_b));
    133            }
    134        }
    135    }
    136
    137    private void func_96268_g()
    138    {
    139        McoClient mcoclient = new McoClient(this.mc.session);
    140
    141        try
    142        {
    143            Boolean obool = mcoclient.func_96383_b(this.field_96280_b.field_96408_a);
    144
    145            if (obool.booleanValue())
    146            {
    147                this.field_96280_b.field_96404_d = "OPEN";
    148                this.initGui();
    149            }
    150        }
    151        catch (ExceptionMcoService exceptionmcoservice)
    152        {
    153            ;
    154        }
    155        catch (IOException ioexception)
    156        {
    157            ;
    158        }
    159    }
    160
    161    private void func_96275_h()
    162    {
    163        McoClient mcoclient = new McoClient(this.mc.session);
    164
    165        try
    166        {
    167            boolean flag = mcoclient.func_96378_c(this.field_96280_b.field_96408_a).booleanValue();
    168
    169            if (flag)
    170            {
    171                this.field_96280_b.field_96404_d = "CLOSED";
    172                this.initGui();
    173            }
    174        }
    175        catch (ExceptionMcoService exceptionmcoservice)
    176        {
    177            ;
    178        }
    179        catch (IOException ioexception)
    180        {
    181            ;
    182        }
    183    }
    184
    185    private void func_96272_i()
    186    {
    187        if (this.field_96284_p >= 0 && this.field_96284_p < this.field_96280_b.field_96402_f.size())
    188        {
    189            this.field_96283_q = (String)this.field_96280_b.field_96402_f.get(this.field_96284_p);
    190            StringTranslate stringtranslate = StringTranslate.getInstance();
    191            GuiYesNo guiyesno = new GuiYesNo(this, "Warning!", stringtranslate.translateKey("mco.configure.world.uninvite.question") + " \'" + this.field_96283_q + "\'", 3);
    192            this.mc.displayGuiScreen(guiyesno);
    193        }
    194    }
    195
    196    public void confirmClicked(boolean par1, int par2)
    197    {
    198        if (par2 == 3)
    199        {
    200            if (par1)
    201            {
    202                McoClient mcoclient = new McoClient(this.mc.session);
    203
    204                try
    205                {
    206                    mcoclient.func_96381_a(this.field_96280_b.field_96408_a, this.field_96283_q);
    207                }
    208                catch (ExceptionMcoService exceptionmcoservice)
    209                {
    210                    System.err.println("Could not uninvite the selected user");
    211                }
    212
    213                this.func_96267_d(this.field_96284_p);
    214            }
    215
    216            this.mc.displayGuiScreen(new GuiScreenConfigureWorld(this.field_96285_a, this.field_96280_b));
    217        }
    218
    219        if (par2 == 1)
    220        {
    221            if (par1)
    222            {
    223                this.func_96275_h();
    224            }
    225
    226            this.mc.displayGuiScreen(this);
    227        }
    228    }
    229
    230    private void func_96267_d(int par1)
    231    {
    232        this.field_96280_b.field_96402_f.remove(par1);
    233    }
    234
    235    /**
    236     * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
    237     */
    238    protected void keyTyped(char par1, int par2) {}
    239
    240    /**
    241     * Called when the mouse is clicked.
    242     */
    243    protected void mouseClicked(int par1, int par2, int par3)
    244    {
    245        super.mouseClicked(par1, par2, par3);
    246    }
    247
    248    /**
    249     * Draws the screen and all the components in it.
    250     */
    251    public void drawScreen(int par1, int par2, float par3)
    252    {
    253        StringTranslate stringtranslate = StringTranslate.getInstance();
    254        this.drawDefaultBackground();
    255        this.field_96282_c.func_96612_a(par1, par2, par3);
    256        this.drawCenteredString(this.fontRenderer, stringtranslate.translateKey("mco.configure.world.title"), this.width / 2, 17, 16777215);
    257        this.drawString(this.fontRenderer, stringtranslate.translateKey("mco.configure.world.name"), this.field_96277_d, this.func_96264_a(1), 10526880);
    258        this.drawString(this.fontRenderer, this.field_96280_b.func_96398_b(), this.field_96277_d, this.func_96264_a(2), 16777215);
    259        this.drawString(this.fontRenderer, stringtranslate.translateKey("mco.configure.world.description"), this.field_96277_d, this.func_96264_a(4), 10526880);
    260        this.drawString(this.fontRenderer, this.field_96280_b.func_96397_a(), this.field_96277_d, this.func_96264_a(5), 16777215);
    261        this.drawString(this.fontRenderer, stringtranslate.translateKey("mco.configure.world.invited"), this.field_96287_o, this.func_96264_a(1), 10526880);
    262        super.drawScreen(par1, par2, par3);
    263    }
    264
    265    static Minecraft func_96265_a(GuiScreenConfigureWorld par0GuiScreenConfigureWorld)
    266    {
    267        return par0GuiScreenConfigureWorld.mc;
    268    }
    269
    270    static int func_96271_b(GuiScreenConfigureWorld par0GuiScreenConfigureWorld)
    271    {
    272        return par0GuiScreenConfigureWorld.field_96287_o;
    273    }
    274
    275    static int func_96274_a(GuiScreenConfigureWorld par0GuiScreenConfigureWorld, int par1)
    276    {
    277        return par0GuiScreenConfigureWorld.func_96264_a(par1);
    278    }
    279
    280    static int func_96269_c(GuiScreenConfigureWorld par0GuiScreenConfigureWorld)
    281    {
    282        return par0GuiScreenConfigureWorld.field_96286_n;
    283    }
    284
    285    static McoServer func_96266_d(GuiScreenConfigureWorld par0GuiScreenConfigureWorld)
    286    {
    287        return par0GuiScreenConfigureWorld.field_96280_b;
    288    }
    289
    290    static int func_96270_b(GuiScreenConfigureWorld par0GuiScreenConfigureWorld, int par1)
    291    {
    292        return par0GuiScreenConfigureWorld.field_96284_p = par1;
    293    }
    294
    295    static int func_96263_e(GuiScreenConfigureWorld par0GuiScreenConfigureWorld)
    296    {
    297        return par0GuiScreenConfigureWorld.field_96284_p;
    298    }
    299
    300    static FontRenderer func_96273_f(GuiScreenConfigureWorld par0GuiScreenConfigureWorld)
    301    {
    302        return par0GuiScreenConfigureWorld.fontRenderer;
    303    }
    304}