Kostyan_Sigaev
Активный участник
- Баллы
- 60
Приветствую. Пришла в голову идея сделать небольшой лаунчер для сборки Minecraft 1.12.2 с модами. Сборка будет лежать на флешке, чтобы можно было играть на любом ПК. Сделал батник, всё работает, но т.к. 1.12.2 на последней версии java не запускается, пришлось скачать портативную j8u45 и использовать её в в сборке с игрой. Всё работает, вот только на разных ПК разный объём ОЗУ и сборок не одна, а десяток (разные тематики, в одной космос, в другой машины с городами, в третьей поезда, в другой зомби-апокалипсис и т.д.) и не очень удобно в каждом батнике каждый раз искать ник игрока и объём памяти, т.к. помимо меня на этих сборках играют и мои друзья вместе со мной и этот лаунчер захотели сразу все, т.к. другие готовые лаунчеры запускаются по 10-30 секунд (за запуск на HDD вообще молчу) и потребляют немало ОЗУ, что критично для некоторых другей (у одного всего 2 гб ОЗУ, но ему вполне хватает, чтобы выживать со мной на Марсе). Вот я и сделал в VS 2015 на скорую руку небольшой лаунчер:

В верхнем поле количество памяти для гры, во втором ник, кнопка запускает игру, а больше ничего и не нужно. Вот только поле с объёмом ОЗУ пока к коду не прикрутил, т.к. игра не запускается, а поле ника пришлось отключить по причине ниже.
Долго мучался с переносом аргументов из батника в код лаунчера, в итоге всё вроде как нормально, только когда жму "Запустить" на секунду вылазит командная строка и на этом всё... Судя по большому количеству тем здесь, я понял, что эта проблема частая, но конретного решения я не нашел. Код запуска прилагаю:
Собственно, в чём причина проблемы понять не могу, т.к. эти же аргументы с этой же версией java в той же самой папке прекрасно работают при запуске через батник, а запускать батник через лаунчер я не собираюсь, т.к. тогда смысл в лаунчере пропадает...
Кстати, как видно по коду, поле с ником я закомментировал, т.к. яначала подумал, что дело в нём, но ситуация не изменилась и пока я его трогать не стал. Ещё при переносе с батника в VS во многих местах аргументов появились пробелы, которые я убрал, опираясь на код в батнике. Вполне возможно, что тут сыграл злую шутку чисто человеческий фактор и я мог испортить название какого-то из аргументов, что и привело к неработоспособности игры, что вполне возможно...

В верхнем поле количество памяти для гры, во втором ник, кнопка запускает игру, а больше ничего и не нужно. Вот только поле с объёмом ОЗУ пока к коду не прикрутил, т.к. игра не запускается, а поле ника пришлось отключить по причине ниже.
Долго мучался с переносом аргументов из батника в код лаунчера, в итоге всё вроде как нормально, только когда жму "Запустить" на секунду вылазит командная строка и на этом всё... Судя по большому количеству тем здесь, я понял, что эта проблема частая, но конретного решения я не нашел. Код запуска прилагаю:
Код:
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();
}
Кстати, как видно по коду, поле с ником я закомментировал, т.к. яначала подумал, что дело в нём, но ситуация не изменилась и пока я его трогать не стал. Ещё при переносе с батника в VS во многих местах аргументов появились пробелы, которые я убрал, опираясь на код в батнике. Вполне возможно, что тут сыграл злую шутку чисто человеческий фактор и я мог испортить название какого-то из аргументов, что и привело к неработоспособности игры, что вполне возможно...
Последнее редактирование:
