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.validate();
065 }
066
067 public void startMainThread()
068 {
069 if (this.mcThread == null)
070 {
071 this.mcThread = new Thread(this.mc, "Minecraft main thread");
072 this.mcThread.start();
073 }
074 }
075
076 public void start()
077 {
078 FMLRelauncher.appletStart(this);
079 }
080
081 public void fmlStartReentry()
082 {
083 if (this.mc != null)
084 {
085 this.mc.isGamePaused = false;
086 }
087 }
088
089 public void stop()
090 {
091 if (this.mc != null)
092 {
093 this.mc.isGamePaused = true;
094 }
095 }
096
097 public void destroy()
098 {
099 this.shutdown();
100 }
101
102 /**
103 * Called when the applet window is closed.
104 */
105 public void shutdown()
106 {
107 if (this.mcThread != null)
108 {
109 this.mc.shutdown();
110
111 try
112 {
113 this.mcThread.join(10000L);
114 }
115 catch (InterruptedException var4)
116 {
117 try
118 {
119 this.mc.shutdownMinecraftApplet();
120 }
121 catch (Exception var3)
122 {
123 var3.printStackTrace();
124 }
125 }
126
127 this.mcThread = null;
128 }
129 }
130 }