// // Copyright 2012 MultiMC Contributors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // import net.minecraft.Launcher; import java.applet.Applet; import java.awt.Dimension; import java.awt.Frame; import java.awt.Toolkit; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.net.MalformedURLException; import java.net.URL; import java.io.IOException; import java.io.File; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; public class MCFrame extends Frame implements WindowListener { private Launcher appletWrap = null; public MCFrame(String title) { super(title); BufferedImage image = null; try { image = ImageIO.read(new File("icon.png")); setIconImage(image); } catch (IOException e) { e.printStackTrace(); } this.addWindowListener(this); } public void start(Applet mcApplet, String user, String session, Dimension winSize, boolean maximize) { try { appletWrap = new Launcher(mcApplet, new URL("http://www.minecraft.net/game")); } catch (MalformedURLException ignored){} appletWrap.setParameter("username", user); appletWrap.setParameter("sessionid", session); appletWrap.setParameter("stand-alone", "true"); // Show the quit button. mcApplet.setStub(appletWrap); this.add(appletWrap); appletWrap.setPreferredSize(winSize); this.pack(); this.setLocationRelativeTo(null); this.setResizable(true); if (maximize) this.setExtendedState(MAXIMIZED_BOTH); validate(); appletWrap.init(); appletWrap.start(); setVisible(true); } @Override public void windowActivated(WindowEvent e) {} @Override public void windowClosed(WindowEvent e) {} @Override public void windowClosing(WindowEvent e) { new Thread() { public void run() { try { Thread.sleep(30000L); } catch (InterruptedException localInterruptedException) { localInterruptedException.printStackTrace(); } System.out.println("FORCING EXIT!"); System.exit(0); } } .start(); if (appletWrap != null) { appletWrap.stop(); appletWrap.destroy(); } // old minecraft versions can hang without this >_< System.exit(0); } @Override public void windowDeactivated(WindowEvent e) {} @Override public void windowDeiconified(WindowEvent e) {} @Override public void windowIconified(WindowEvent e) {} @Override public void windowOpened(WindowEvent e) {} }