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 }