Package com.kokakiwi.mclauncher.core

Source Code of com.kokakiwi.mclauncher.core.Launcher

package com.kokakiwi.mclauncher.core;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;

import com.kokakiwi.mclauncher.MCLauncher;
import com.kokakiwi.mclauncher.core.launcher.LauncherApplet;
import com.kokakiwi.mclauncher.core.launcher.ModsManager;
import com.kokakiwi.mclauncher.core.launcher.Wrapper;
import com.kokakiwi.mclauncher.core.updater.UpdaterWorker;
import com.kokakiwi.mclauncher.core.updater.UpdaterWorker.Type;

public class Launcher implements Runnable
{
    private final MCLauncher  main;
    private final ModsManager mods;
    private URLClassLoader    classLoader;
    private LauncherApplet    applet;
   
    public Launcher(MCLauncher main)
    {
        this.main = main;
        mods = new ModsManager();
    }
   
    public void launch()
    {
        // Load URLs
        final List<URL> urls = new ArrayList<URL>();
       
        mods.fill(urls);
       
        File natives = new File(main.getApi().getMinecraftDirectory(), "bin/");
        for (final UpdaterWorker.GameFile gameFile : main.getUpdater()
                .getGameFiles())
        {
            if (gameFile.getType() == Type.LIBRARY)
            {
                try
                {
                    final URL url = gameFile.getFile().toURI().toURL();
                    urls.add(url);
                }
                catch (final MalformedURLException e)
                {
                    e.printStackTrace();
                }
            }
           
            if (gameFile.getType() == Type.NATIVE)
            {
                natives = gameFile.getDest();
            }
        }
        System.out.println("Set natives dir to '" + natives.getAbsolutePath()
                + "'");
       
        // Add System env values
        System.setProperty("org.lwjgl.librarypath", natives.getAbsolutePath());
        System.setProperty("net.java.games.input.librarypath",
                natives.getAbsolutePath());
       
        // Start Minecraft
        classLoader = new URLClassLoader(urls.toArray(new URL[0]));
       
        applet = new LauncherApplet(main.getApi());
       
        applet.init();
        main.getFrame().getMainPanel().add(applet, "Center");
        main.getFrame().validate();
        applet.start();
       
        final Thread t = new Thread(this);
        t.start();
    }
   
    public void run()
    {
        try
        {
            applet.replace(Wrapper.wrap(main.getApi()));
        }
        catch (final Exception e)
        {
            e.printStackTrace();
        }
    }
   
    public MCLauncher getMain()
    {
        return main;
    }
   
    public URLClassLoader getClassLoader()
    {
        return classLoader;
    }
   
    public ModsManager getMods()
    {
        return mods;
    }
}
TOP

Related Classes of com.kokakiwi.mclauncher.core.Launcher

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.