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