public MinecraftFrame(String title, String imagePath, String animationname) {
		super(title);
		this.animationname = animationname;
		StyleUtil.loadUiStyles();
		try {
			for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
				if ("Nimbus".equals(info.getName())) {
					UIManager.setLookAndFeel(info.getClassName());
					break;
				}
			}
		} catch (Exception e) {
			try {
				UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
			} catch (Exception e1) { }
		}
		// TODO: TEST THIS, also implement into using settings.
		if(OSUtils.getCurrentOS() == OS.MACOSX) {
			try {
				Class<?> fullScreenUtilityClass = Class.forName("com.apple.eawt.FullScreenUtilities");
				java.lang.reflect.Method setWindowCanFullScreenMethod = fullScreenUtilityClass.getDeclaredMethod("setWindowCanFullScreen", new Class[] { Window.class, Boolean.TYPE });
				setWindowCanFullScreenMethod.invoke(null, new Object[] { this, Boolean.valueOf(true) });
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		// END TEST

		setIconImage(Toolkit.getDefaultToolkit().createImage(imagePath));
		super.setVisible(true);
		setResizable(true);
		fixSize(Settings.getSettings().getLastDimension());
		addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				Settings.getSettings().setLastExtendedState(getExtendedState());
				Settings.getSettings().save();
				new Thread() {
					public void run() {
						try {
							Thread.sleep(30000L);
						} catch (InterruptedException localInterruptedException) { }
						System.out.println("FORCING EXIT!");
						System.exit(0);
					}
				}.start();
				if (appletWrap != null) {
					appletWrap.stop();
					appletWrap.destroy();
				}
				System.exit(0);
			}
		});
		final MinecraftFrame thisFrame = this;
		addComponentListener(new ComponentAdapter() {
			@Override
			public void componentResized(ComponentEvent e) {
				Settings.getSettings().setLastDimension(thisFrame.getSize());
				Settings.getSettings().save();
			}
			@Override
			public void componentMoved(ComponentEvent e) {
				Settings.getSettings().setLastPosition(thisFrame.getLocation());
			}
		});
	}