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.mco.ExceptionMcoService;
007import net.minecraft.client.mco.ExceptionRetryCall;
008import net.minecraft.client.mco.McoClient;
009import net.minecraft.client.mco.McoServer;
010import net.minecraft.client.mco.McoServerAddress;
011import net.minecraft.client.multiplayer.NetClientHandler;
012import net.minecraft.client.multiplayer.ServerAddress;
013import net.minecraft.util.StringTranslate;
014
015@SideOnly(Side.CLIENT)
016public class TaskOnlineConnect extends TaskLongRunning
017{
018    private NetClientHandler field_96586_a;
019    private final McoServer field_96585_c;
020    private final GuiScreen field_96584_d;
021
022    public TaskOnlineConnect(GuiScreen par1GuiScreen, McoServer par2McoServer)
023    {
024        this.field_96584_d = par1GuiScreen;
025        this.field_96585_c = par2McoServer;
026    }
027
028    public void run()
029    {
030        this.func_96576_b(StringTranslate.getInstance().translateKey("mco.connect.connecting"));
031        McoClient mcoclient = new McoClient(this.func_96578_b().session);
032        boolean flag = false;
033        boolean flag1 = false;
034        McoServerAddress mcoserveraddress = null;
035
036        for (int i = 0; i < 10 && !this.func_96577_c(); ++i)
037        {
038            try
039            {
040                mcoserveraddress = mcoclient.func_96374_a(this.field_96585_c.field_96408_a);
041                flag = true;
042            }
043            catch (ExceptionRetryCall exceptionretrycall)
044            {
045                ;
046            }
047            catch (ExceptionMcoService exceptionmcoservice)
048            {
049                flag1 = true;
050                this.func_96575_a(exceptionmcoservice.getLocalizedMessage());
051                break;
052            }
053            catch (IOException ioexception)
054            {
055                ;
056            }
057            catch (Exception exception)
058            {
059                flag1 = true;
060                this.func_96575_a(exception.getLocalizedMessage());
061            }
062
063            if (flag)
064            {
065                break;
066            }
067
068            this.func_96581_e();
069        }
070
071        if (!this.func_96577_c() && !flag1)
072        {
073            if (flag)
074            {
075                ServerAddress serveraddress = ServerAddress.func_78860_a(mcoserveraddress.field_96417_a);
076                this.func_96582_a(serveraddress.getIP(), serveraddress.getPort());
077            }
078            else
079            {
080                this.func_96578_b().displayGuiScreen(this.field_96584_d);
081            }
082        }
083    }
084
085    private void func_96581_e()
086    {
087        try
088        {
089            Thread.sleep(5000L);
090        }
091        catch (InterruptedException interruptedexception)
092        {
093            System.err.println(interruptedexception);
094        }
095    }
096
097    private void func_96582_a(String par1Str, int par2)
098    {
099        (new ThreadOnlineConnect(this, par1Str, par2)).start();
100    }
101
102    public void func_96573_a()
103    {
104        if (this.field_96586_a != null)
105        {
106            this.field_96586_a.processReadPackets();
107        }
108    }
109
110    static NetClientHandler func_96583_a(TaskOnlineConnect par0TaskOnlineConnect, NetClientHandler par1NetClientHandler)
111    {
112        return par0TaskOnlineConnect.field_96586_a = par1NetClientHandler;
113    }
114
115    static GuiScreen func_98172_a(TaskOnlineConnect par0TaskOnlineConnect)
116    {
117        return par0TaskOnlineConnect.field_96584_d;
118    }
119
120    static NetClientHandler func_96580_a(TaskOnlineConnect par0TaskOnlineConnect)
121    {
122        return par0TaskOnlineConnect.field_96586_a;
123    }
124}