Проблемы с лаунчером!

5
0
Добрый вечер! Решил попробовать написать собственный лаунчер для minecraft, но столкнулся с тем, что я не знаю как запускать саму игру с помощью него. =(
Умоляю, если кто либо знает как это реализовать, отпишитесь.
P.S. Основная часть лаунчера готова(фрейм, считывание логина и пароля, скачка и разорхивирование клиента ну и по мелочам), юзание чужого кода не сильно помогло.
 
Очень интересно, зайду гляну, но если что, будь добр скинуть ссылки! Найду сам, тоже скину на случай если кому либо интересно!
И нарисовался вопрос: что такое процесс билдер?
 
Код:
String nick;
    String accessToken;
    String clientToken;
    public Run(String user,String key,String clientToken){
        nick=user;
        accessToken=key;
        this.clientToken=clientToken;
    }
    public void run() 
    {
        try {
            String java = System.getProperty("java.home");
            String osname = System.getProperty("os.name").toLowerCase();
            if (osname.contains("win") && !osname.contains("darwin")) {
                java += "/bin/javaw.exe";
            } else {
        java += "/bin/java";
            }
            List<String> params=new ArrayList<>();
            System.out.println("Running Minecraft");
            String jarpath = LauncherUtils.getMinecraftDirectory() + File.separator + "bin" + File.separator;
            String forge="1.7.10-Forge10.13.2.1231.jar";
            String s;
            if(getPlatform()==LauncherUtils.OS.windows)
            {
                s=";";
            }else{
                s=":";
            }
            ProcessBuilder pb=new ProcessBuilder();
            pb.directory(LauncherUtils.getMinecraftDirectory());
            String libs="libraries/net/minecraftforge/forge/1.7.10-10.13.2.1231/forge-1.7.10-10.13.2.1231.jar"+s+"libraries/net/minecraft/launchwrapper/1.11/launchwrapper-1.11.jar"+s+"libraries/org/ow2/asm/asm-all/5.0.3/asm-all-5.0.3.jar"+s+"libraries/com/typesafe/akka/akka-actor_2.11/2.3.3/akka-actor_2.11-2.3.3.jar"+s+"libraries/com/typesafe/config/1.2.1/config-1.2.1.jar"+s+"libraries/org/scala-lang/scala-actors-migration_2.11/1.1.0/scala-actors-migration_2.11-1.1.0.jar"+s+"libraries/org/scala-lang/scala-compiler/2.11.1/scala-compiler-2.11.1.jar"+s+"libraries/org/scala-lang/plugins/scala-continuations-library_2.11/1.0.2/scala-continuations-library_2.11-1.0.2.jar"+s+"libraries/org/scala-lang/plugins/scala-continuations-plugin_2.11.1/1.0.2/scala-continuations-plugin_2.11.1-1.0.2.jar"+s+"libraries/org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.jar"+s+"libraries/org/scala-lang/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.jar"+s+"libraries/org/scala-lang/scala-reflect/2.11.1/scala-reflect-2.11.1.jar"+s+"libraries/org/scala-lang/scala-swing_2.11/1.0.1/scala-swing_2.11-1.0.1.jar"+s+"libraries/org/scala-lang/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.jar"+s+"libraries/net/sf/jopt-simple/jopt-simple/4.5/jopt-simple-4.5.jar"+s+"libraries/lzma/lzma/0.0.1/lzma-0.0.1.jar"+s+"libraries/com/mojang/realms/1.3.5/realms-1.3.5.jar"+s+"libraries/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar"+s+"libraries/org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar"+s+"libraries/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar"+s+"libraries/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar"+s+"libraries/java3d/vecmath/1.3.1/vecmath-1.3.1.jar"+s+"libraries/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar"+s+"libraries/com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.jar"+s+"libraries/com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar"+s+"libraries/com/paulscode/codecwav/20101023/codecwav-20101023.jar"+s+"libraries/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar"+s+"libraries/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar"+s+"libraries/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar"+s+"libraries/io/netty/netty-all/4.0.10.Final/netty-all-4.0.10.Final.jar"+s+"libraries/com/google/guava/guava/16.0/guava-16.0.jar"+s+"libraries/org/apache/commons/commons-lang3/3.2.1/commons-lang3-3.2.1.jar"+s+"libraries/commons-io/commons-io/2.4/commons-io-2.4.jar"+s+"libraries/commons-codec/commons-codec/1.9/commons-codec-1.9.jar"+s+"libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar"+s+"libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar"+s+"libraries/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar"+s+"libraries/com/mojang/authlib/1.5.16/authlib-1.5.16.jar"+s+"libraries/org/apache/logging/log4j/log4j-api/2.0-beta9/log4j-api-2.0-beta9.jar"+s+"libraries/org/apache/logging/log4j/log4j-core/2.0-beta9/log4j-core-2.0-beta9.jar"+s+"libraries/org/lwjgl/lwjgl/lwjgl/2.9.1/lwjgl-2.9.1.jar"+s+"libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.1/lwjgl_util-2.9.1.jar"+s+"libraries/tv/twitch/twitch/5.16/twitch-5.16.jar"+s+"versions/1.7.10-Forge10.13.2.1231/1.7.10-Forge10.13.2.1231.jar";
            params.add(java);
            params.add("-Xmx1024M");
            params.add("-Djava.library.path=versions/1.7.10-Forge10.13.2.1231/natives");
            params.add("-Dfml.ignoreInvalidMinecraftCertificates=true");
            params.add("-Dfml.ignorePatchDiscrepancies=true");
            params.add("-classpath");
            params.add(libs);
            params.add("net.minecraft.launchwrapper.Launch");
            params.add("--username");
            params.add(nick);
            params.add("--version");
            params.add(jarpath+forge);
            params.add("--accessToken");
            params.add(accessToken);
            params.add("--clientToken");
            params.add(clientToken);
            params.add("--userProperties");
            params.add("{}");
            params.add("--gameDir");
            params.add(getMinecraftDirectory().toString());
            params.add("--assetsDir");
            params.add("assets");
            params.add("--assetsIndex");
            params.add("1.7.10-Forge10.13.2.1231");
            params.add("--tweakClass");
            params.add("cpw.mods.fml.common.launcher.FMLTweaker");
            pb.command(params);
            Process p=pb.start();
            Thread debuger=new Debug(p);
            debuger.start();
        } catch (IOException ex) {
            Logger.getLogger(Run.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
debugger это для отладки(моё)
 
Слушай, огромное спасибо, но вот вопросы:
1. У тебя на вход идёт 3 строки: user, key, clentToken. Как я понял user это логин, key это пароль, clientToken это что?
2. Он может запускать версии выше 1.5.2(в новых версиях планировка папок поменялась, а также файлов)?(вроде разобрался :/)
Извини меня за то, что я не понимаю!
 
LomNar написал(а):
Слушай, огромное спасибо, но вот вопросы:
1. У тебя на вход идёт 3 строки: user, key, clentToken. Как я понял user это логин, key это пароль, clientToken это что?
2. Он может запускать версии выше 1.5.2(в новых версиях планировка папок поменялась, а также файлов)?
Извини меня за то, что я не понимаю!
Немного не угадал ты, clientToken, на сколько я помню, выступает в роли ключа-авторизатора/индентификатора.
 
Ясненько, тогда key это что?
P.S. Мне ещё учить и учить яву
 
клиерт токен,может быть любым.key-то что будет из клиентского сгенерированно сервером.Это только часть у меня лаунчер вышел в ~2000 СТРОК
 
Ясно, не малый, мой меньше по объёму строк, если не считать сторонние либы. Впрочем буду разбираться с кодом.
[merge_posts_bbcode]Добавлено: 10.11.2014 00:33:03[/merge_posts_bbcode]

Если есть ещё что либо интересного, кидайте! Надеюсь мне это поможет, ну или кому либо другому.
 
Назад
Сверху