    001package net.minecraft.client;
    002
    003import cpw.mods.fml.relauncher.FMLRelauncher;
    004import cpw.mods.fml.relauncher.Side;
    005import cpw.mods.fml.relauncher.SideOnly;
    006import java.applet.Applet;
    007import java.awt.BorderLayout;
    008import java.awt.Canvas;
    009import net.minecraft.util.Session;
    010
    011@SideOnly(Side.CLIENT)
    012public class MinecraftApplet extends Applet
    013{
    014    /** Reference to the applet canvas. */
    015    private Canvas mcCanvas;
    016
    017    /** Reference to the Minecraft object. */
    018    private Minecraft mc;
    019
    020    /** Reference to the Minecraft main thread. */
    021    private Thread mcThread = null;
    022
    023    public void init()
    024    {
    025        FMLRelauncher.appletEntry(this);
    026    }
    027
    028    public void fmlInitReentry()
    029    {
    030        this.mcCanvas = new CanvasMinecraftApplet(this);
    031        boolean var1 = "true".equalsIgnoreCase(this.getParameter("fullscreen"));
    032        this.mc = new MinecraftAppletImpl(this, this.mcCanvas, this, this.getWidth(), this.getHeight(), var1);
    033        this.mc.minecraftUri = this.getDocumentBase().getHost();
    034
    035        if (this.getDocumentBase().getPort() > 0)
    036        {
    037            this.mc.minecraftUri = this.mc.minecraftUri + ":" + this.getDocumentBase().getPort();
    038        }
    039
    040        if (this.getParameter("username") != null && this.getParameter("sessionid") != null)
    041        {
    042            this.mc.session = new Session(this.getParameter("username"), this.getParameter("sessionid"));
    043            System.out.println("Setting user: " + this.mc.session.username + ", " + this.mc.session.sessionId);
    044        }
    045        else
    046        {
    047            this.mc.session = new Session("Player", "");
    048        }
    049
    050        this.mc.setDemo("true".equals(this.getParameter("demo")));
    051
    052        if (this.getParameter("server") != null && this.getParameter("port") != null)
    053        {
    054            this.mc.setServer(this.getParameter("server"), Integer.parseInt(this.getParameter("port")));
    055        }
    056
    057        this.mc.hideQuitButton = !"true".equals(this.getParameter("stand-alone"));
    058        this.setLayout(new BorderLayout());
    059        this.add(this.mcCanvas, "Center");
    060        this.mcCanvas.setFocusable(true);
    061        this.mcCanvas.setFocusTraversalKeysEnabled(false);
    062        this.validate();
    063    }
    064
    065    public void startMainThread()
    066    {
    067        if (this.mcThread == null)
    068        {
    069            this.mcThread = new Thread(this.mc, "Minecraft main thread");
    070            this.mcThread.start();
    071        }
    072    }
    073
    074    public void start()
    075    {
    076        FMLRelauncher.appletStart(this);
    077    }
    078
    079    public void fmlStartReentry()
    080    {
    081        if (this.mc != null)
    082        {
    083            this.mc.isGamePaused = false;
    084        }
    085    }
    086
    087    public void stop()
    088    {
    089        if (this.mc != null)
    090        {
    091            this.mc.isGamePaused = true;
    092        }
    093    }
    094
    095    public void destroy()
    096    {
    097        this.shutdown();
    098    }
    099
    100    /**
    101     * Called when the applet window is closed.
    102     */
    103    public void shutdown()
    104    {
    105        if (this.mcThread != null)
    106        {
    107            this.mc.shutdown();
    108
    109            try
    110            {
    111                this.mcThread.join(10000L);
    112            }
    113            catch (InterruptedException var4)
    114            {
    115                try
    116                {
    117                    this.mc.shutdownMinecraftApplet();
    118                }
    119                catch (Exception var3)
    120                {
    121                    var3.printStackTrace();
    122                }
    123            }
    124
    125            this.mcThread = null;
    126        }
    127    }
    128}