1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Свой микролаунчер для сборки игры с модами

Тема в разделе "Оффтопик", создана пользователем Kostyan_Sigaev, 8 янв 2023.

  1. Автор темы
    Kostyan_Sigaev

    Kostyan_Sigaev Активный участник

    Баллы:
    60
    Приветствую. Пришла в голову идея сделать небольшой лаунчер для сборки Minecraft 1.12.2 с модами. Сборка будет лежать на флешке, чтобы можно было играть на любом ПК. Сделал батник, всё работает, но т.к. 1.12.2 на последней версии java не запускается, пришлось скачать портативную j8u45 и использовать её в в сборке с игрой. Всё работает, вот только на разных ПК разный объём ОЗУ и сборок не одна, а десяток (разные тематики, в одной космос, в другой машины с городами, в третьей поезда, в другой зомби-апокалипсис и т.д.) и не очень удобно в каждом батнике каждый раз искать ник игрока и объём памяти, т.к. помимо меня на этих сборках играют и мои друзья вместе со мной и этот лаунчер захотели сразу все, т.к. другие готовые лаунчеры запускаются по 10-30 секунд (за запуск на HDD вообще молчу) и потребляют немало ОЗУ, что критично для некоторых другей (у одного всего 2 гб ОЗУ, но ему вполне хватает, чтобы выживать со мной на Марсе). Вот я и сделал в VS 2015 на скорую руку небольшой лаунчер:
    upload_2023-1-8_22-23-32.png
    В верхнем поле количество памяти для гры, во втором ник, кнопка запускает игру, а больше ничего и не нужно. Вот только поле с объёмом ОЗУ пока к коду не прикрутил, т.к. игра не запускается, а поле ника пришлось отключить по причине ниже.
    Долго мучался с переносом аргументов из батника в код лаунчера, в итоге всё вроде как нормально, только когда жму "Запустить" на секунду вылазит командная строка и на этом всё... Судя по большому количеству тем здесь, я понял, что эта проблема частая, но конретного решения я не нашел. Код запуска прилагаю:
    Код:
    private void button1_Click(object sender, EventArgs e)
            {
                string gamedir = Path.GetDirectoryName(Application.ExecutablePath);
    
                string nickname = textBox2.Text;
    
                ProcessStartInfo mcStartInfo = new ProcessStartInfo(gamedir + "\\jre-legacy\\bin\\java.exe", string.Format(
                    "-Xmx1024M" +
                    " -cp " +
                    gamedir + "\\libraries\\net\\minecraftforge\\forge\\1.12.2-14.23.5.2854\\forge-1.12.2-14.23.5.2854.jar;" +
                    gamedir + "\\libraries\\org\\ow2\\asm\\asm-debug-all\\5.2\\asm-debug-all-5.2.jar;" +
                    gamedir + "\\libraries\\net\\minecraft\\launchwrapper\\1.12\\launchwrapper-1.12.jar;" +
                    gamedir + "\\libraries\\org\\jline\\jline\\3.5.1\\jline-3.5.1.jar;" +
                    gamedir + "\\libraries\\com\\typesafe\\akka\\akka-actor_2.11\\2.3.3\\akka-actor_2.11-2.3.3.jar;" +
                    gamedir + "\\libraries\\com\\typesafe\\config\\1.2.1\\config-1.2.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-actors-migration_2.11\\1.1.0\\scala-actors-migration_2.11-1.1.0.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-compiler\\2.11.1\\scala-compiler-2.11.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\plugins\\scala-continuations-library_2.11\\1.0.2_mc\\scala-continuations-library_2.11-1.0.2_mc.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\plugins\\scala-continuations-plugin_2.11.1\\1.0.2_mc\\scala-continuations-plugin_2.11.1-1.0.2_mc.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-library\\2.11.1\\scala-library-2.11.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-parser-combinators_2.11\\1.0.1\\scala-parser-combinators_2.11-1.0.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-reflect\\2.11.1\\scala-reflect-2.11.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-swing_2.11\\1.0.1\\scala-swing_2.11-1.0.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-xml_2.11\\1.0.2\\scala-xml_2.11-1.0.2.jar;" +
                    gamedir + "\\libraries\\lzma\\lzma\\0.0.1\\lzma-0.0.1.jar;" +
                    gamedir + "\\libraries\\java3d\\vecmath\\1.5.2\\vecmath-1.5.2.jar;" +
                    gamedir + "\\libraries\\net\\sf\\trove4j\\trove4j\\3.0.3\\trove4j-3.0.3.jar;" +
                    gamedir + "\\libraries\\org\\apache\\maven\\maven-artifact\\3.5.3\\maven-artifact-3.5.3.jar;" +
                    gamedir + "\\libraries\\net\\sf\\jopt-simple\\jopt-simple\\5.0.3\\jopt-simple-5.0.3.jar;" +
                    gamedir + "\\libraries\\org\\tlauncher\\patchy\\1.1\\patchy-1.1.jar;" +
                    gamedir + "\\libraries\\oshi-project\\oshi-core\\1.1\\oshi-core-1.1.jar;" +
                    gamedir + "\\libraries\\net\\java\\dev\\jna\\jna\\4.4.0\\jna-4.4.0.jar;" +
                    gamedir + "\\libraries\\net\\java\\dev\\jna\\platform\\3.4.0\\platform-3.4.0.jar;" +
                    gamedir + "\\libraries\\com\\ibm\\icu\\icu4j-core-mojang\\51.2\\icu4j-core-mojang-51.2.jar;" +
                    gamedir + "\\libraries\\net\\sf\\jopt-simple\\jopt-simple\\5.0.3\\jopt-simple-5.0.3.jar;" +
                    gamedir + "\\libraries\\com\\paulscode\\codecjorbis\\20101023\\codecjorbis-20101023.jar;" +
                    gamedir + "\\libraries\\com\\paulscode\\codecwav\\20101023\\codecwav-20101023.jar;" +
                    gamedir + "\\libraries\\com\\paulscode\\libraryjavasound\\20101123\\libraryjavasound-20101123.jar;" +
                    gamedir + "\\libraries\\com\\paulscode\\librarylwjglopenal\\20100824\\librarylwjglopenal-20100824.jar;" +
                    gamedir + "\\libraries\\com\\paulscode\\soundsystem\\20120107\\soundsystem-20120107.jar;" +
                    gamedir + "\\libraries\\io\\netty\\netty-all\\4.1.9.Final\\netty-all-4.1.9.Final.jar;" +
                    gamedir + "\\libraries\\com\\google\\guava\\guava\\21.0\\guava-21.0.jar;" +
                    gamedir + "\\libraries\\org\\apache\\commons\\commons-lang3\\3.5\\commons-lang3-3.5.jar;" +
                    gamedir + "\\libraries\\commons-io\\commons-io\\2.5\\commons-io-2.5.jar;" +
                    gamedir + "\\libraries\\commons-codec\\commons-codec\\1.10\\commons-codec-1.10.jar;" +
                    gamedir + "\\libraries\\net\\java\\jinput\\jinput\\2.0.5\\jinput-2.0.5.jar;" +
                    gamedir + "\\libraries\\net\\java\\jutils\\jutils\\1.0.0\\jutils-1.0.0.jar;" +
                    gamedir + "\\libraries\\com\\google\\code\\gson\\gson\\2.8.0\\gson-2.8.0.jar;" +
                    gamedir + "\\libraries\\com\\mojang\\authlib\\1.5.25\\authlib-1.5.25.jar;" +
                    gamedir + "\\libraries\\com\\mojang\\realms\\1.10.22\\realms-1.10.22.jar;" +
                    gamedir + "\\libraries\\org\\apache\\commons\\commons-compress\\1.8.1\\commons-compress-1.8.1.jar;" +
                    gamedir + "\\libraries\\org\\apache\\httpcomponents\\httpclient\\4.3.3\\httpclient-4.3.3.jar;" +
                    gamedir + "\\libraries\\commons-logging\\commons-logging\\1.1.3\\commons-logging-1.1.3.jar;" +
                    gamedir + "\\libraries\\org\\apache\\httpcomponents\\httpcore\\4.3.2\\httpcore-4.3.2.jar;" +
                    gamedir + "\\libraries\\it\\unimi\\dsi\\fastutil\\7.1.0\\fastutil-7.1.0.jar;" +
                    gamedir + "\\libraries\\org\\apache\\logging\\log4j\\log4j-api\\2.8.1\\log4j-api-2.8.1.jar;" +
                    gamedir + "\\libraries\\org\\apache\\logging\\log4j\\log4j-core\\2.8.1\\log4j-core-2.8.1.jar;" +
                    gamedir + "\\libraries\\org\\lwjgl\\lwjgl\\lwjgl\\2.9.4-nightly-20150209\\lwjgl-2.9.4-nightly-20150209.jar;" +
                    gamedir + "\\libraries\\org\\lwjgl\\lwjgl\\lwjgl_util\\2.9.4-nightly-20150209\\lwjgl_util-2.9.4-nightly-20150209.jar;" +
                    gamedir + "\\libraries\\com\\mojang\\text2speech\\1.10.3\\text2speech-1.10.3.jar;" +
                    gamedir + "\\versions\\ForgeOptiFine 1.12.2\\ForgeOptiFine1.12.2.jar" +
                    " -Dminecraft.applet.TargetDirectory=" +
                    gamedir + "" +
                    " -XX:+UseConcMarkSweepGC" +
                    " -Dfml.ignoreInvalidMinecraftCertificates=true" +
                    " -Dfml.ignorePatchDiscrepancies=true net.minecraft.launchwrapper.Launch" +
                    " --version 1.12.2" +
                    " --gameDir" +
                    gamedir + "" +
                    " --assetsDir" +
                    gamedir + "\\assets" +
                    " --assetIndex 1.12" +
                    " --uuid 00000000-0000-0000-0000-000000000000" +
                    " --accessToken null" +
                    " --userProperties[] " +
                    " --userType legacy" +
                    //" --username" + nickname +
                    " --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker" +
                    " --versionType Forge" +
                    " --width 800" +
                    " --height 600" +
                    " -Djava.library.path=" +
                    gamedir + "\\versions\\ForgeOptiFine 1.12.2\\natives"));
                    Process.Start(mcStartInfo);
                this.Close();
            }
    Собственно, в чём причина проблемы понять не могу, т.к. эти же аргументы с этой же версией java в той же самой папке прекрасно работают при запуске через батник, а запускать батник через лаунчер я не собираюсь, т.к. тогда смысл в лаунчере пропадает...

    Кстати, как видно по коду, поле с ником я закомментировал, т.к. яначала подумал, что дело в нём, но ситуация не изменилась и пока я его трогать не стал. Ещё при переносе с батника в VS во многих местах аргументов появились пробелы, которые я убрал, опираясь на код в батнике. Вполне возможно, что тут сыграл злую шутку чисто человеческий фактор и я мог испортить название какого-то из аргументов, что и привело к неработоспособности игры, что вполне возможно...
     
    Последнее редактирование: 9 янв 2023
  2. HauserGrim

    HauserGrim Активный участник Пользователь

    Баллы:
    96
    Хз на сколько будет полезно, но для таких целей (лаунчер, джава и сборка в одной папке, лёгкая смена ника и памяти) использую TL (не TLauncher). Из минусов - долгий запуск (поиск обновлений) без интернета или в Украине и неиспользуемые функции. Иногда думаю написать свой или сильно порезать тот же TL, но ради использования где-то раз в год не хочется напрягаться.
     
  3. Автор темы
    Kostyan_Sigaev

    Kostyan_Sigaev Активный участник

    Баллы:
    60
    В ТЛ нужно в каждой сборке указывать путь к игре, особенно это бесит, когда запускаешь с флешки и на разных ПК у неё разная буква и в итоге при каждом запуске нужно указывать папку с игрой. Вот по этому и пишу лаунчер, который будет работать только с одной сборкой. Ну и да, у ТЛ реально долгая загрузка (мой лаунчер запускается менее 2 секунд)
     
  4. NuaN

    NuaN Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    NuaN
    А bat файл чем не устраивает?
     
  5. HauserGrim

    HauserGrim Активный участник Пользователь

    Баллы:
    96
    ./sborka
    Всё. Могу кинуть пример или рассказать подробнее.
     
  6. Автор темы
    Kostyan_Sigaev

    Kostyan_Sigaev Активный участник

    Баллы:
    60
    Я же писал уже в самом начале
     
  7. NuaN

    NuaN Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    NuaN
    Переменные можно создать в самом начале файла
     
  8. Автор темы
    Kostyan_Sigaev

    Kostyan_Sigaev Активный участник

    Баллы:
    60
    Да, но всё равно неудобно каждый раз открывать блокнотом батник, изменять значения на нужные, сохранять и запускать, тем более можно не глядя что-то случайно задеть и испортить батник, а хранить резервную копию не вариант, т.к. забывается легко. То ли дело запустил лаунчер, перед глазами поле с памятью и ником, изменил и нажаи играть и никаких заморочек...
     
  9. Автор темы
    Kostyan_Sigaev

    Kostyan_Sigaev Активный участник

    Баллы:
    60
    Сделал копию лаунчера, только теперь под 1.7.10, что так жже не работает, при этом эти же аргументы в батнике работают... Собственно, сам код запуска:
    Код:
    private void PlayButton_Click(object sender, EventArgs e)
            {
                string gamedir = Path.GetDirectoryName(Application.ExecutablePath);
    
                string nickname = NickBox.Text;
    
                ProcessStartInfo mcStartInfo = new ProcessStartInfo(gamedir + "\\jre_x64\\bin\\java.exe", string.Format(
                    " -Xmx768M" +
                    " -Dfile.encoding=UTF-8" +
                    " -Dfml.ignoreInvalidMinecraftCertificates=true" +
                    " -Dfml.ignorePatchDiscrepancies=true" +
                    " -Djava.net.useSystemProxies=true" +
                    " -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump" +
                    " -Djava.library.path=" +
                    gamedir + "\\versions\\Forge_1.7.10\\natives" +
                    " -Dminecraft.launcher.brand=java-minecraft-launcher" +
                    " -Dminecraft.launcher.version=1.6.84-j" +
                    " -Dminecraft.client.jar=" +
                    gamedir + "\\versions\\Forge_1.7.10\\Forge_1.7.10.jar" +
                    " -cp" +
                    gamedir + "\\libraries\\net\\minecraftforge\\forge\\1.7.10-10.13.4.1614-1.7.10\\forge-1.7.10-10.13.4.1614-1.7.10.jar;" +
                    gamedir + "\\libraries\\net\\minecraft\\launchwrapper\\1.12\\launchwrapper-1.12.jar;" +
                    gamedir + "\\libraries\\org\\ow2\\asm\\asm-all\\5.0.3\\asm-all-5.0.3.jar;" +
                    gamedir + "\\libraries\\com\\typesafe\\akka\\akka-actor_2.11\\2.3.3\\akka-actor_2.11-2.3.3.jar;" +
                    gamedir + "\\libraries\\com\\typesafe\\config\\1.2.1\\config-1.2.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-actors-migration_2.11\\1.1.0\\scala-actors-migration_2.11-1.1.0.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-compiler\\2.11.1\\scala-compiler-2.11.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\plugins\\scala-continuations-library_2.11\\1.0.2\\scala-continuations-library_2.11-1.0.2.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\plugins\\scala-continuations-plugin_2.11.1\\1.0.2\\scala-continuations-plugin_2.11.1-1.0.2.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-library\\2.11.1\\scala-library-2.11.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-parser-combinators_2.11\\1.0.1\\scala-parser-combinators_2.11-1.0.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-reflect\\2.11.1\\scala-reflect-2.11.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-swing_2.11\\1.0.1\\scala-swing_2.11-1.0.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-xml_2.11\\1.0.2\\scala-xml_2.11-1.0.2.jar;" +
                    gamedir + "\\libraries\\lzma\\lzma\\0.0.1\\lzma-0.0.1.jar;" +
                    gamedir + "\\libraries\\net\\sf\\jopt-simple\\jopt-simple\\4.5\\jopt-simple-4.5.jar;" +
                    gamedir + "\\libraries\\com\\google\\guava\\guava\\17.0\\guava-17.0.jar;" +
                    gamedir + "\\libraries\\org\\apache\\commons\\commons-lang3\\3.3.2\\commons-lang3-3.3.2.jar;" +
                    gamedir + "\\libraries\\net\\minecraftforge\\forge\\1.7.10-10.13.4.1614-1.7.10\\forge-1.7.10-10.13.4.1614-1.7.10.jar;" +
                    gamedir + "\\libraries\\net\\minecraft\\launchwrapper\\1.12\\launchwrapper-1.12.jar;" +
                    gamedir + "\\libraries\\org\\ow2\\asm\\asm-all\\5.0.3\\asm-all-5.0.3.jar;" +
                    gamedir + "\\libraries\\com\\typesafe\\akka\\akka-actor_2.11\\2.3.3\\akka-actor_2.11-2.3.3.jar;" +
                    gamedir + "\\libraries\\com\\typesafe\\config\\1.2.1\\config-1.2.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-actors-migration_2.11\\1.1.0\\scala-actors-migration_2.11-1.1.0.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-compiler\\2.11.1\\scala-compiler-2.11.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\plugins\\scala-continuations-library_2.11\\1.0.2\\scala-continuations-library_2.11-1.0.2.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\plugins\\scala-continuations-plugin_2.11.1\\1.0.2\\scala-continuations-plugin_2.11.1-1.0.2.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-library\\2.11.1\\scala-library-2.11.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-parser-combinators_2.11\\1.0.1\\scala-parser-combinators_2.11-1.0.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-reflect\\2.11.1\\scala-reflect-2.11.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-swing_2.11\\1.0.1\\scala-swing_2.11-1.0.1.jar;" +
                    gamedir + "\\libraries\\org\\scala-lang\\scala-xml_2.11\\1.0.2\\scala-xml_2.11-1.0.2.jar;" +
                    gamedir + "\\libraries\\lzma\\lzma\\0.0.1\\lzma-0.0.1.jar;" +
                    gamedir + "\\libraries\\net\\sf\\jopt-simple\\jopt-simple\\4.5\\jopt-simple-4.5.jar;" +
                    gamedir + "\\libraries\\com\\google\\guava\\guava\\17.0\\guava-17.0.jar;" +
                    gamedir + "\\libraries\\org\\apache\\commons\\commons-lang3\\3.3.2\\commons-lang3-3.3.2.jar;" +
                    gamedir + "\\libraries\\com\\mojang\\netty\\1.6\\netty-1.6.jar;" +
                    gamedir + "\\libraries\\com\\mojang\\realms\\1.3.5\\realms-1.3.5.jar;" +
                    gamedir + "\\libraries\\org\\apache\\commons\\commons-compress\\1.8.1\\commons-compress-1.8.1.jar;" +
                    gamedir + "\\libraries\\org\\apache\\httpcomponents\\httpclient\\4.3.3\\httpclient-4.3.3.jar;" +
                    gamedir + "\\libraries\\commons-logging\\commons-logging\\1.1.3\\commons-logging-1.1.3.jar;" +
                    gamedir + "\\libraries\\org\\apache\\httpcomponents\\httpcore\\4.3.2\\httpcore-4.3.2.jar;" +
                    gamedir + "\\libraries\\java3d\\vecmath\\1.3.1\\vecmath-1.3.1.jar;" +
                    gamedir + "\\libraries\\net\\sf\\trove4j\\trove4j\\3.0.3\\trove4j-3.0.3.jar;" +
                    gamedir + "\\libraries\\com\\ibm\\icu\\icu4j-core-mojang\\51.2\\icu4j-core-mojang-51.2.jar;" +
                    gamedir + "\\libraries\\net\\sf\\jopt-simple\\jopt-simple\\4.5\\jopt-simple-4.5.jar;" +
                    gamedir + "\\libraries\\com\\paulscode\\codecjorbis\\20101023\\codecjorbis-20101023.jar;" +
                    gamedir + "\\libraries\\com\\paulscode\\codecwav\\20101023\\codecwav-20101023.jar;" +
                    gamedir + "\\libraries\\com\\paulscode\\libraryjavasound\\20101123\\libraryjavasound-20101123.jar;" +
                    gamedir + "\\libraries\\com\\paulscode\\librarylwjglopenal\\20100824\\librarylwjglopenal-20100824.jar;" +
                    gamedir + "\\libraries\\com\\paulscode\\soundsystem\\20120107\\soundsystem-20120107.jar;" +
                    gamedir + "\\libraries\\io\\netty\\netty-all\\4.0.10.Final\\netty-all-4.0.10.Final.jar;" +
                    gamedir + "\\libraries\\com\\google\\guava\\guava\\15.0\\guava-15.0.jar;" +
                    gamedir + "\\libraries\\org\\apache\\commons\\commons-lang3\\3.1\\commons-lang3-3.1.jar;" +
                    gamedir + "\\libraries\\commons-io\\commons-io\\2.4\\commons-io-2.4.jar;" +
                    gamedir + "\\libraries\\commons-codec\\commons-codec\\1.9\\commons-codec-1.9.jar;" +
                    gamedir + "\\libraries\\net\\java\\jinput\\jinput\\2.0.5\\jinput-2.0.5.jar;" +
                    gamedir + "\\libraries\\net\\java\\jutils\\jutils\\1.0.0\\jutils-1.0.0.jar;" +
                    gamedir + "\\libraries\\com\\google\\code\\gson\\gson\\2.2.4\\gson-2.2.4.jar;" +
                    gamedir + "\\libraries\\com\\mojang\\authlib\\1.5.21\\authlib-1.5.21.jar;" +
                    gamedir + "\\libraries\\org\\apache\\logging\\log4j\\log4j-api\\2.0-beta9\\log4j-api-2.0-beta9.jar;" +
                    gamedir + "\\libraries\\org\\apache\\logging\\log4j\\log4j-core\\2.0-beta9\\log4j-core-2.0-beta9.jar;" +
                    gamedir + "\\libraries\\org\\lwjgl\\lwjgl\\lwjgl\\2.9.1\\lwjgl-2.9.1.jar;" +
                    gamedir + "\\libraries\\org\\lwjgl\\lwjgl\\lwjgl_util\\2.9.1\\lwjgl_util-2.9.1.jar;" +
                    gamedir + "\\libraries\\tv\\twitch\\twitch\\5.16\\twitch-5.16.jar;" +
                    gamedir + "\\versions\\Forge_1.7.10\\Forge_1.7.10.jar" +
                    "net.minecraft.launchwrapper.Launch" +
                    " --username Steve" +
                    " --version Forge_1.7.10" +
                    " --gameDir" +
                    gamedir +
                    " --assetsDir" +
                    gamedir + "\\assets" +
                    " --assetIndex 1.7.10" +
                    " --uuid 00000000-0000-0000-0000-000000000000" +
                    " --accessToken null" +
                    " --userProperties {}" +
                    " --userType legacy" +
                    " --tweakClass cpw.mods.fml.common.launcher.FMLTweaker" +
                    " --width 925" +
                    " --height 530"));
                Process.Start(mcStartInfo);
                this.Close();
            }
    Однако, в отличии от изначального лаунчера здесь при нажатии "играть" лаунчер зависает, а VS выдаёт такую ошибку:
    An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll
    Additional information: Входная строка имела неверный формат.

    И при этом ошибка выделяет жёлтым код начиная с ProcessStartInfo mcStartInfo и до " --height 530"));
    В общем, я в тупике...
     
  10. TaoGunner

    TaoGunner Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    TaoGunner
    Тут может быть всё, что угодно, начиная от кривой строки, заканчивая неверными аргументами.
    1. Выведи получившуюся лапшу в консоль и попробуй с её помощью запуститься через командную строку.
    2. Скидай все библиотеки в libraries (да, все jar-файлы в одну папку). И вместо 100500 путей укажи /libraries/* . Проверь заранее в батнике только, работает или нет.
    3. Много непонятных аргументов -Dfml. Если ты знаешь, для чего тебе каждый - честь и хвала.
    4. Вижу пробелы в путях.
     
  11. Автор темы
    Kostyan_Sigaev

    Kostyan_Sigaev Активный участник

    Баллы:
    60
    Начнём с конца.
    Я пересмотрел пути и вроде (вроде!) никаких пробелов не заметил, так что можешь конкретно носом ткнуть, где именно пробелы?
    По крайней мере все эти аргументы работают в батнике...
    Блин, ну гениально же! Надо попробовать...
    А с этим мне ещё заморачиваться и заморачиваться... (ещё не дорос, я только первобытный код на С# пишу)
     
  12. NuaN

    NuaN Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    NuaN
    Всм? :D
    Это же самые азы. Берешь свою строку запуска и выводишь через Console.Write("");
    Все то, что оно вывело - пихаешь в батник и смотришь на что оно ругается.
     
  13. TaoGunner

    TaoGunner Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    TaoGunner
    "\\versions\\ForgeOptiFine 1.12.2\\ForgeOptiFine1.12.2.jar" - вот тут пробел
     
  14. Автор темы
    Kostyan_Sigaev

    Kostyan_Sigaev Активный участник

    Баллы:
    60
    Ну так путь указан в кавычках, значит пробелы можно вводить. По крайней мере более новая версия java (точную версию не помню), на которой не стартовало всё это дело, была в папке "test java" и прекрасно запускалась, но потом сразу закрывалась, т.к. 1.12.2 на ней не работает даже при запуске чечрез разные лаунчеры
     
  15. TaoGunner

    TaoGunner Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    TaoGunner
    Точно, как же я сразу не заметил. Какой же "чудесный " язык этот C#, жаль в других языках так не работает. :good:
     
  16. Автор темы
    Kostyan_Sigaev

    Kostyan_Sigaev Активный участник

    Баллы:
    60
    Позавчера с ноутом произошел "казус", теперь исходника лаунчера 1.12.2 нет, но остался рабочий для 1.7.10. Так что пока разбираюсь, почему текст из поля не передаётся в аргументы. К примеру ник игрока пробовал и --username NickBox.Text, и " --username" + NickBox.Text, и --username + NickBox.Text. В итоге в игре ник был либо NickBox, либо NickBox.Text, либо вообще +. Ещё пробовал такой вариант:
    Код:
    В начале кода:
    string nickname = NickBox.Text;
    
    А в аргументах:
    " --username" + nickname +
    
    В итоге получал то просто nickname, то +, а то вообще Player со случайным номером...
    Текст бокс с ником игрока так и называется NickBox
     
  17. NuaN

    NuaN Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    NuaN
    Поэтому нужно использовать Git. Реально полезная вещь :good:
     

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