001 package net.minecraft.client;
002
003 import cpw.mods.fml.relauncher.FMLRelauncher;
004 import cpw.mods.fml.relauncher.Side;
005 import cpw.mods.fml.relauncher.SideOnly;
006 import java.applet.Applet;
007 import java.awt.BorderLayout;
008 import java.awt.Canvas;
009 import net.minecraft.util.Session;
010
011 @SideOnly(Side.CLIENT)
012 public 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 }