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

Обсудим Лепим пиратский лаунчер

Тема в разделе "Управление сервером Bukkit", создана пользователем Oinvizion Craft, 27 сен 2016.

  1. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    И так, я решил написать лаунчер для майнкрафта, как бы это ужасно не звучало...... на c#. (Только не обвиняйте меня в этом)
    На 18 стр я решил написать пробную команду запуска на жаве, но её там дико обосрали, хотя это пробник пробником (это можно сказать, лишь сама команда), но уже прекрасно запускающий майн.
    Моя первая идея (ужасная), это взять любой пиратский лаунчер с консолью и в настройках включить полную команду запуска майна, затем просто стащить эту команду
    C:\Program Files\Java\jre1.8.0_66\bin\javaw.exe -XX:HeapDumpPath=ThisTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx7000M -Djava.library.path=C:\Users\Имя_пользователя\AppData\Roaming\minecraft\versions\Forge 1.7.2\natives -cp C:\Users\Имя_пользователя\AppData\Roaming\minecraft\libraries\fyberoptic\forgefix\1.7.2\forgefix-1.7.2.jar;C:\Users\Имя_пользователя\AppData\Roaming\minecraft\libraries\net\minecraftforge\forge\1.7.2-10.12.2.1147\forge-1.7.2-10.12.2.1147.jar;

    тут уйма всяких библиотек

    C:\Users\Имя_пользователя\AppData\Roaming\minecraft\libraries\net\minecraft\launchwrapper\1.9\launchwrapper-1.9.jar;C:\Users\Имя_пользователя\AppData\Roaming\minecraft\versions\Forge 1.7.2\Forge 1.7.2.jar -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true -Xms256M -XX:+UseG1GC -XX:ConcGCThreads=4 -Xms7000m -Xmx7000m net.minecraft.launchwrapper.Launch --username player --version Forge 1.7.2 --gameDir C:\Users\Имя_пользователя\AppData\Roaming\minecraft --assetsDir C:\Users\Имя_пользователя\AppData\Roaming\minecraft\assets\virtual\legacy --uuid 00000000-0000-0000-0000-000000000000 --accessToken null --tweakClass cpw.mods.fml.common.launcher.FMLTweaker --width 1670 --height 980
    Или как-нибудь этот код получить самому.
    Как можно переделать, чтобы оно запускалось на c#?
    Спасибо!
     
    Последнее редактирование: 4 апр 2017
  2. Хостинг MineCraft
    <
  3. KobaltMr

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

    Баллы:
    88
    Skype:
    mr.dill9
    Я просто брал команду запуска из TLauncher и в лаунчере выполнял её как обычную cmd команду
     
  4. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Я просто парсю папку бин и набираю из нее класспатч, аргументы запуска определяю по наличию или отсутствию классов форджа и лайтлоадера. В труелаунчере, я парсю json файл version и беру с него класспатч и аргументы запуска.
    А тс больной на всю башку видимо. Как и чел постом выше.
     
    Последнее редактирование: 27 сен 2016
  5. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    В этом-то вся и фишка! Так можно запустить только Vanilla-клиент, а Forge оно не запускает, я сам хз почему!
    Пробовал сначала через обычный батник по этому принципу:
    Код:
    javaw.exe команда_запуска_майна
    Запускает только без Forge! А с Forge просто пропускает команду и всё!
    Я беру команду запуска любой версии без Forge, всё норм, а всё тоже самое, но для Forge... НИФИГА!
    Тогда уже другой вопрос, как запустить Forge при помощи cmd команды??
    И кстати, за то что напомнил про запуск через cmd команду, огромное спасибо тебе!
     
  6. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Там запуск отличается же. Другой главный класс и твик класс.
     
  7. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Ну твика на vanilla вообще нет! Может его как-то надо по-другому прописывать? А не просто:
    --tweakClass cpw.mods.fml.common.launcher.FMLTweaker[DOUBLEPOST=1474987137,1474986958][/DOUBLEPOST]Я беру команду целиком, просто копирую из консольки тлаунчера и в батник! С чистыми, без Forge версиями всё норм! А вот если взять команду для Forge, он её тупо посылает!
     
  8. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Весь запуск и класспатч прописан в json файле. Читаешь его и берешь с него запуск.
     
  9. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Для меня JSON как китайский язык! Объясни, почему нельзя просто стащить команду запуска из консоли TLauncher-а?[DOUBLEPOST=1474988256,1474988188][/DOUBLEPOST]Ведь чистые версии она при переносе в cmd запускает прекрасно! А вот с Forge - нихрена![DOUBLEPOST=1474988404][/DOUBLEPOST]
     
  10. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    А ты хоть пробовал? Уверен что на шарпе полно примеров как его читать. И тебе все равно придется учится его парсить. Иначе так до старости будешь искать строку запуска под все новые версии.
     
  11. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Хорошо, допустим мы его прочитали.
    И какая должна быть структура выходной команды в шарпе?[DOUBLEPOST=1474989174,1474989017][/DOUBLEPOST]И какие именно параметры нужны из JSON-а для запуска майна, а то как я понял такие параметры, как
    "time": "2016-07-17T05:18:17-05:00",
    "releaseTime": "2013-10-25T08:00:00-05:00"
    не нужны =D, какие именно брать? И как их составить для запуска майна
     
  12. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    1) Ну первое, аргументы запуска minecraftArguments:
    2) Главный класс mainClass:
    3) Библиотеки libraries: тут придется подумать, чтобы собрать путь до джарника.
    4) inheritsFrom: если есть, 2й файл от куда нужно добавить libraries:
    5) jar: если есть, из какой папки брать джарник клиента.
     
  13. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Теперь буду гуглить про чтение JSON-ов!
    Эх и долгое это будет занятие............
     
  14. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Там нет ничего сложного, по сути те же самые объекты String, int, ArrayList, HashMap и тп. Переменная - значение.
     
  15. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Да уже понял, только вот сам метод чтения...[DOUBLEPOST=1474992593,1474990460][/DOUBLEPOST]Ну всё! Принцип считывания я понял, сейчас сделаю считывание всего того, что ты написал, но вопрос, что потом делать с этими переменными, и ещё если можно про считывание либраинсов по-подробнее.
     
  16. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Ну тебе нужно привести args.args:args1:args2 к такому виду args/args/args1/args2/args1-args2.jar
     
  17. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Слушай, я уже весь мозг сломал, помоги, как пропарсить либрариансы?[DOUBLEPOST=1474996616,1474996531][/DOUBLEPOST]Я так понял это что-то типа цикла должно быть?[DOUBLEPOST=1474999445][/DOUBLEPOST]Ура! Нарыл я способ считать все библиотеки! Короче всё! У меня имеется читатель JSON, что теперь делать с этими данными?
    Вот результат считывания:
    Либрариансы: tlauncher.forge.config:FixSplashScreen:1.0; net.minecraftforge:forge:1.7.10-10.13.4.1558-1.7.10; net.minecraft:launchwrapper:1.12; org.ow2.asm:asm-all:5.0.3; com.typesafe.akka:akka-actor_2.11:2.3.3; com.typesafe:config:1.2.1; org.scala-lang:scala-actors-migration_2.11:1.1.0; org.scala-lang:scala-compiler:2.11.1; org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2; org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2; org.scala-lang:scala-library:2.11.1; org.scala-lang:scala-parser-combinators_2.11:1.0.1; org.scala-lang:scala-reflect:2.11.1; org.scala-lang:scala-swing_2.11:1.0.1; org.scala-lang:scala-xml_2.11:1.0.2; lzma:lzma:0.0.1; net.sf.jopt-simple:jopt-simple:4.5; com.google.guava:guava:17.0; org.apache.commons:commons-lang3:3.3.2; com.mojang:realms:1.3.5; org.apache.commons:commons-compress:1.8.1; org.apache.httpcomponents:httpclient:4.3.3; commons-logging:commons-logging:1.1.3; org.apache.httpcomponents:httpcore:4.3.2; java3d:vecmath:1.3.1; net.sf.trove4j:trove4j:3.0.3; com.ibm.icu:icu4j-core-mojang:51.2; net.sf.jopt-simple:jopt-simple:4.5; com.paulscode:codecjorbis:20101023; com.paulscode:codecwav:20101023; com.paulscode:libraryjavasound:20101123; com.paulscode:librarylwjglopenal:20100824; com.paulscode:soundsystem:20120107; io.netty:netty-all:4.0.10.Final; com.google.guava:guava:15.0; org.apache.commons:commons-lang3:3.1; commons-io:commons-io:2.4; commons-codec:commons-codec:1.9; net.java.jinput:jinput:2.0.5; net.java.jutils:jutils:1.0.0; com.google.code.gson:gson:2.2.4; com.mojang:authlib:1.5.21; org.apache.logging.log4j:log4j-api:2.0-beta9; org.apache.logging.log4j:log4j-core:2.0-beta9; org.lwjgl.lwjgl:lwjgl:2.9.1; org.lwjgl.lwjgl:lwjgl_util:2.9.1; org.lwjgl.lwjgl:lwjgl-platform:2.9.1; net.java.jinput:jinput-platform:2.0.5; tv.twitch:twitch:5.16; tv.twitch:twitch-platform:5.16; tv.twitch:twitch-external-platform:4.5; minecraftArguments: --username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userProperties ${user_properties} --userType ${user_type} --tweakClass cpw.mods.fml.common.launcher.FMLTweaker Главный гласс: net.minecraft.launchwrapper.Launch
    [DOUBLEPOST=1475000541][/DOUBLEPOST]Если что, вот сам JSON: https://yadi.sk/d/tFnZGACDvoxoF
     
    Последнее редактирование: 27 сен 2016
  18. GoodCoder

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

    Баллы:
    76
    Что тут не понятно? ${assets_root} - это как бы переменные. Через string replace заменяешь их на значения. Разве это так сложно?
     
  19. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    "jar": "1.7.10" путь до джарника versions/1.7.10/1.7.10.jar
    "minecraftArguments": тут проверяешь наличие аргументов и подменяешь их значения --username ${auth_player_name}
    "mainClass": Майн класс с которого запускается клиент.
    "assets": "1.7.10" имя файла в папке assets/indexes/1.7.10.json
    "libraries": [ класспатч всех джарников.
    "name": "net.minecraftforge:forge:1.7.10-10.13.4.1558-1.7.10",
    name: тут путь до джарника, писал выше как юзать.
    natives: означает что тут джаркик внутри которого dll шки, ${arch} архитектура 32 или 64.
    Полные нативы качай с сайта lwjgl под 32 и 64. Только версию не перепутай.
     
  20. MySt1k

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

    Баллы:
    173
    Хотел скинуть код, но не смог, ибо данные на убитом HDD :(
    На C# реализовывал запуск майна через JNI с помощью библиотеки от @HoShiMin.
    Думаю, ТС`у это было бы полезней, чем просто голый стартер майна.
     
  21. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Пусть сперва json осилит, чтоб хоть как то запустить.
     

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