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