Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Как запустить Minecraft внутри лаунчера а не в отдельном процессе

Тема в разделе "Модификации клиента", создана пользователем Alisher-98, 19 мар 2014.

  1. Автор темы
    Alisher-98

    Alisher-98 Старожил Пользователь

    Баллы:
    103
    Skype:
    alisher-982
    Имя в Minecraft:
    Alisher98
    Как запустить Minecraft внутри лаунчера а не в отдельном процессе
     
    Последнее редактирование: 19 мар 2014
  2. Хостинг MineCraft
    <
  3. Konstantin773

    Konstantin773 Старожил Пользователь

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    1.6.x версии и более - никак (если не переписывать launchwrapper)
     
  4. DragoSFire

    DragoSFire Старожил Пользователь

    Баллы:
    123
    Skype:
    dragosfire2012
    Имя в Minecraft:
    DragoSFire
    А через invoke можно? Чет пробывал, аргументы передать не мог.
     
  5. Автор темы
    Alisher-98

    Alisher-98 Старожил Пользователь

    Баллы:
    103
    Skype:
    alisher-982
    Имя в Minecraft:
    Alisher98
    А как сделать запуск внутри процесса Лаунчера?
     
  6. DragoSFire

    DragoSFire Старожил Пользователь

    Баллы:
    123
    Skype:
    dragosfire2012
    Имя в Minecraft:
    DragoSFire
    В версии 1.5.2 можно запускать через invoke. В 1.6 не знаю, ибо там передается много аргументов :C[DOUBLEPOST=1395235148,1395235079][/DOUBLEPOST]Main.invoke(new Object[]{}, new Object[] { new String[]{user, session} });
     
  7. Автор темы
    Alisher-98

    Alisher-98 Старожил Пользователь

    Баллы:
    103
    Skype:
    alisher-982
    Имя в Minecraft:
    Alisher98
    Чел ты меня не так понял... Щя шапку темы изменю
     
  8. DragoSFire

    DragoSFire Старожил Пользователь

    Баллы:
    123
    Skype:
    dragosfire2012
    Имя в Minecraft:
    DragoSFire
    Это ты не понял мой код. У меня рабочий способ запустить MC в лаунчере не используя процесс билдер.[DOUBLEPOST=1395235788,1395235732][/DOUBLEPOST]
    Код:
    URL[] urls = new URL[4];  
    urls[0] = new File(bin, "lib.jar").toURI().toURL();
                  urls[1] = new File(bin, "extra.jar").toURI().toURL();
                  urls[2] = new File(bin, "Forge.jar").toURI().toURL();
                  urls[3] = new File(bin, "minecraft.jar").toURI().toURL();
    URLClassLoader cl = new URLClassLoader(urls);
            System.setProperty("org.lwjgl.librarypath", binpath + File.separator + "natives");
            System.setProperty("net.java.games.input.librarypath", binpath + File.separator + "natives");
            try {
                Class<?> mc = cl.loadClass("net.minecraft.client.Minecraft");
                Method Main= mc.getMethod("main", String[].class);
                Main.invoke(new Object[]{}, new Object[] { new String[]{user, session} });
            } catch(Exception e) {
                e.printStackTrace();
            }
     
  9. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Для этого ненужно переписывать launchwrapper, достаточно написать класс который запустит launch. И launchwrapper не юзается при запуске ванилы, тут наш класс уже запускает Main.
     
  10. DragoSFire

    DragoSFire Старожил Пользователь

    Баллы:
    123
    Skype:
    dragosfire2012
    Имя в Minecraft:
    DragoSFire
    @alexandrage, раз уж вы тут, не подскажете как у вас это реализовано? Через аплет или инвок?
     
  11. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    лоадкласс и запуск майн класса.
     
    Likeobot нравится это.
  12. DragoSFire

    DragoSFire Старожил Пользователь

    Баллы:
    123
    Skype:
    dragosfire2012
    Имя в Minecraft:
    DragoSFire
    А аргументы как передаете? Чет пробывал таким способом, не увенчался успехом. =\[DOUBLEPOST=1395236940,1395236903][/DOUBLEPOST]И еще, можно ссылку на ваш проект :3?
     
  13. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Так же и передаю через main args.
     
  14. Автор темы
    Alisher-98

    Alisher-98 Старожил Пользователь

    Баллы:
    103
    Skype:
    alisher-982
    Имя в Minecraft:
    Alisher98
  15. Konstantin773

    Konstantin773 Старожил Пользователь

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    P.S: В LaunchWrapper нужно в гл.классе изминить видимость всех переменных и методов на public
    Код:
    public voic startminecraft(){
            URLClassLoader jars = ....;
            List<String> pm = new ArrayList<String>();
            String client = .....;//папка с клиентом
            String assets = ...;//папка assets 
            String login = ...;//логин
            String session =...;//сессия
           ///Определение главного класса///
            try{
                String cls = "";
               try{
                  jars.loadClass("net.minecraft.launchwrapper.Launch");
                   cls = "net.minecraft.launchwrapper.Launch";
                   System.out.println("Founded LaunchWrapper!");
               } catch(ClassNotFoundException l1){cls = "net.minecraft.client.main.Main";System.out.println("Founded classic Minecraft!");}
                ///Объявление системных переменных///     
                System.setProperty("org.lwjgl.librarypath", client + "/bin/natives");
                System.setProperty("net.java.games.input.librarypath", client + "/bin/natives");
                System.setProperty("fml.ignoreInvalidMinecraftCertificates","true");
                System.setProperty("fml.ignorePatchDiscrepancies","true");
                ///Параметры теже, что и при запуске в отдельном процессе (только после имени гл.класса///
                if(...условие полноэкранного режима...) {pm.add("--fullscreen");pm.add("true");}
                else {pm.add("--width");pm.add("900");pm.add("--height");pm.add("532");}
                pm.add("--username"); pm.add(login);
                try {
                    jars.loadClass("com.mojang.authlib.Agent");
                    pm.add("--accessToken");
                    pm.add(login);
                    pm.add("--uuid");
                    pm.add(session);
                    pm.add("--userProperties");
                    pm.add("{}");
                    pm.add("--assetIndex");
                    pm.add("1.7.3");
                    pm.add("--version");
                    pm.add("1.7.3");
                    System.out.println("Founded YggDrasil authlib!");
                    } catch (ClassNotFoundException e2) {
                    pm.add("--session");
                    pm.add(session);
                    pm.add("--version");
                    pm.add("1.6.4");
                }
                pm.add("--gameDir");pm.add(client);
                pm.add("--assetsDir");pm.add(assets);
               if (...условие..автозахода...) {  
                   pm.add("--server");
                   pm.add(...);
                   pm.add("--port");
                   pm.add(...);
                }
               try{
                  jars.loadClass("com.mumfrey.liteloader.launch.LiteLoaderTweaker");
                   pm.add("--tweakClass");
                   pm.add("com.mumfrey.liteloader.launch.LiteLoaderTweaker");
                   System.out.println("Founded LiteLoader!");
               } catch(ClassNotFoundException l1){}
               try{
                  jars.loadClass("cpw.mods.fml.common.launcher.FMLTweaker");
                   if(...условие того, что версия 1.6.2...")) pm.add("--cascadedTweaks"); else pm.add("--tweakClass");
                   pm.add("cpw.mods.fml.common.launcher.FMLTweaker");
                   System.out.println("Founded FML!");
               } catch(ClassNotFoundException l1){}
               Class<?> Mine = jars.loadClass(cls);
                Mine.getDeclaredMethod("main", String[].class).invoke(Mine.newInstance(), new Object[] { pm.toArray(new String[pm.size()])});
            } catch(Exception e){}
    }
    
     
  16. Автор темы
    Alisher-98

    Alisher-98 Старожил Пользователь

    Баллы:
    103
    Skype:
    alisher-982
    Имя в Minecraft:
    Alisher98
    Вы не так поняли мне нужен запуск из лаунчера а не в отдельном процессе[DOUBLEPOST=1395378178,1395378070][/DOUBLEPOST]
    Напишите ваш скайп в ЛС я вам хочу показать что я делаю в демонстрации
     
  17. Автор темы
    Alisher-98

    Alisher-98 Старожил Пользователь

    Баллы:
    103
    Skype:
    alisher-982
    Имя в Minecraft:
    Alisher98
    Можно ваш скайп покажете что куда вставлять по демонстрации
     
  18. Автор темы
    Alisher-98

    Alisher-98 Старожил Пользователь

    Баллы:
    103
    Skype:
    alisher-982
    Имя в Minecraft:
    Alisher98
    а ваш скайп этот? konstantin77313
     
  19. Автор темы
    Alisher-98

    Alisher-98 Старожил Пользователь

    Баллы:
    103
    Skype:
    alisher-982
    Имя в Minecraft:
    Alisher98
    Добавил, жду.
     
  20. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Немного костыльный метод. Я запускаю через MimecraftAplet Который лежит в libraries и launch .class даже не трогаю.
     
  21. Beatboxer

    Beatboxer Старожил Пользователь

    Баллы:
    123
    Skype:
    beatbox603
    Смысл ему вообще объяснять? Если он в джаве полный нуб, вы ему хоть полностью разжуйте код, он всё ровно не поймёт, а только вам же и вынесет мозг что бы "подробно" объяснили...
    Пример
     

Поделиться этой страницей