Kats555
@Kats555

Как запустить майнкрафт из Intellij idea?

Майнкрафт до версии 1.6.2 - 1.6.4 запускался через Intellij Idea с помощью апплетов, можно было сделать свой лаунчер. Но. Майнкрафт переделали и убрали апплеты, как теперь запускать майнкрафт ? Нужно какие-то классы запускать из minecraft.jar ?
Мой код, ошибок нету :0
public static void main(String[] args) throws SQLException, ClassNotFoundException {
        URL[] urls = new URL[1];
        urls[0] = new File("C:/Users/Desktop/load","minecraft.jar").toURI().toURL();
        ClassLoader load = new URLClassLoader(urls);
        Class<?> mine = load.loadClass("net.minecraft.client.main.Main");
        }
  • Вопрос задан
  • 291 просмотр
Решения вопроса 1
@Elige
Импорты
import java.io.File;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;


Методы
public static void LaunchMinecraft() {
    String nickname = "Kats555";
    String Class = "net.minecraft.client.main.Main";

    List < URL > url = new ArrayList < URL > ();

    File Dir = new File(".");

    System.out.println("Путь до папки с клиентом -> " + Dir.getAbsolutePath());

    if (!new File(Dir.getAbsolutePath() + "/natives").exists()) new File(Dir.getAbsolutePath() + "/natives").mkdirs(); //Папка с нативами

    try {
      url.addAll(getLibs(new File(Dir.getAbsolutePath() + "/versions"))); //Папка с клиентом
      url.addAll(getLibs(new File(Dir.getAbsolutePath() + "/libraries"))); //Папка с либами
    } catch (Exception x) {
      System.out.println("Неправильный путь к клиенту");
    }

    URLClassLoader cl = new URLClassLoader(url.toArray(new URL[url.size()]));

    System.out.println("Список загруженных jar ->" + url);
    System.setProperty("fml.ignoreInvalidMinecraftCertificates", "true");
    System.setProperty("fml.ignorePatchDiscrepancies", "true");
    System.setProperty("org.lwjgl.librarypath", Dir.getAbsolutePath() + "/natives");
    System.setProperty("net.java.games.input.librarypath", Dir.getAbsolutePath() + "/natives");
    System.setProperty("java.library.path", Dir.getAbsolutePath() + "/natives");

    List < String > params = new ArrayList < String > ();

    try {
      cl.loadClass("com.mojang.authlib.Agent");
      params.add("--accessToken");
      params.add("1");
      params.add("--uuid");
      params.add("12345");
      params.add("--userProperties");
      params.add("{}");
      params.add("--assetIndex");
      params.add("1.7.10");
    } catch (ClassNotFoundException x) {
      params.add("--session");
      params.add("1");
    }
    params.add("--username");
    params.add(nickname);
    params.add("--version");
    params.add("1.7.10");
    params.add("--gameDir");
    params.add(Dir.getAbsolutePath() + "/");
    params.add("--assetsDir");
    params.add(Dir.getAbsolutePath() + "/assets");

    try {
      Class < ? > start = cl.loadClass(Class);
      System.out.println("Запуск клиента");
      Method main = start.getMethod("main", new Class[] {
        String[].class
      });
      main.invoke(null, new Object[] {
        params.toArray(new String[0])
      });
    } catch (Exception x) {
      System.out.println(x);
    }

  }

  private static List < URL > getLibs(File libsfolder) throws MalformedURLException {
    List < URL > libs = new ArrayList < URL > ();
    if (!libsfolder.exists()) libsfolder.mkdirs();
    for (File file: libsfolder.listFiles()) {
      if (file.isDirectory()) {
        libs.addAll(getLibs(file));
      } else {
        if (file.getName().endsWith(".jar")) {
          libs.add(file.toURI().toURL());
        }
      }
    }
    return libs;
  }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы