Как написать свой лаунчер для minecraft

Страница 1 из 16

  1. Вообщем, буду вас учить зарабатывать денюжки, или юзать СВОЙ лаунчер на Своём сервере)
    А внизу будут сорцы лаунчера авторизацией и запуском :)

    Топик я разобью по частям:
    1. Авторизация
    2. Запуск Minecraft
    3. Остальное(Потом допишем :) )

    Видео-уроки(Болело горло, извиняйте):

    Начнём с 1 части…

    1 ЧАСТЬ:
    Код авторизации:

    string username = Login.Text;
                string pattern = @"d*:w*:w*:w*";
                Regex regex = new Regex(pattern);
                WebRequest request = WebRequest.Create([COLOR=#ff0000]"http://clannr.org/scripts/login/auth.php"[/COLOR]);
                request.Method = "POST";
                string postData = [COLOR=#ff0000]"user=" + Login.Text + "&password=" + Password.Text + "&version=13"[/COLOR];
                byte[] byteArray = Encoding.UTF8.GetBytes(postData);
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = byteArray.Length;
                Stream dataStream = request.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();
                WebResponse response = request.GetResponse();
                Console.WriteLine(((HttpWebResponse)response).StatusDescription);
                dataStream = response.GetResponseStream();
                StreamReader reader = new StreamReader(dataStream);
                string responseFromServer = reader.ReadToEnd();
                string s = sr.ReadToEnd();

    P.S Я тут своё юзал, так что не обижайтесь, если что-то не подходит именно вам…

    string username = Login.Text; — Login.Text — textBox называется Login
    string pattern = @»d*:w*:w*:w*»; — Строка, проверка ответа с сервера, пока не нужна
    2 строка(тут мне было лень копировать каждую строку) —
    3 строка — регекс и тд — Тот же самый паттерн(использование)
    4 строка — Создание запроса(Заканчивается аж на… 15 строчке(код до конца)

    Теперь рассмотрим строчку WebRequest request =… :

    Что туда писать? Ссылку на авторизацию…

    Далее, строка string postData = «user=»… :
    Строка, отвечающая за аргументы запроса, т.е ник, пароль, версия лаунчера.

    Далее, я думаю, разъяснять не нужно, потому что вы и так читать не любите :DD

    Запрос авторизации готов! Что теперь? Теперь нужно проверить ответ с сервера!:

                if (responseFromServer.Contains(" Bad login"))
                {
                    MessageBox.Show("Неправильный логин/пароль!");
                }
                else if (responseFromServer.Contains(" Old version"))
                {
                    MessageBox.Show("Обновите лаунчер!(Скачайте новую версию с сайта clanNr.org)");
                }

    Смотрим…

    if — переводится как ЕСЛИ, т.е перевод скриптового языка: если ответ с сервера равен » Bad Login», то показывает окно с текстом, неправильный логин или пароль

    else if — ИНАЧЕ ЕСЛИ, т.е перевод: Иначе если 1 ЕСЛИ не равняется, то проверка: ответ с сервера равен » Old Version» то выскакивает окошко…. ну дальше понятно…

    Авторизация готова!

    ЧАСТЬ 2
    Запуск Minecraft после успешной авторизации с парсингом сессии

    После авторизации, прямо сразу же пишем:

    else if (match.Success)
    {
    string input = responseFromServer;
                            string[] split = input.Split(':');
                            string final = split[3];
                            ProcessStartInfo mcStartInfo = new ProcessStartInfo("javaw", "-Xms1G -Xmx1G -cp "" + appData + "\.ClanNR\bin\minecraft1.jar;" + appData + "\.ClanNR\bin\jinput.jar;" + appData + "\.ClanNR\bin\lwjgl.jar;" + appData + "\.ClanNR\bin\lwjgl_util.jar " -Djava.library.path="" + appData + "\.ClanNR\bin\natives" net.minecraft.client.Minecraft" + " " + username;
                            Process.Start(mcStartInfo);
                            this.Close();
                            reader.Close();
                            dataStream.Close();
                            response.Close();
    }

    Разбираем:
    string[] split =… — проверка сессии, так же, как и 2 строка
    ProcessStartInfo… — Аргументы запуска. Изменяйте как пожелаете
    Process.Start… — Запуск Minecraft

    Остальные строчки закрывают запрос (Не позволяют запрос оставаться даже после успешного входа)

    Вход готов! Тестируйте!

    Оказывается, тут нашёлся ещё 1 C#-дев, вот вам строка, ускоряющая процесс POST-запроса(Авторизации)(Спасибо Raptor2108):

    request.Proxy = new WebProxy();

    ДОПОЛНЯЖЖКИ:
    Делаем показ скина:

    1. Изменяем кнопку с текстом Старт! на «Вход!»
    2. Добавляем точно такую же(копию) кнопку, и размещаем её точно так же, как и кнопка входа
    3. Добавим свойства(в свойствах формы, т.е. в граф. редакторе):
    Кнопка Старт! — Visible = False
    Кнопка Вход! — Visible = True

    Далее смотрим по видео, тут описывать долго и нудно :)

  2. Быстрая раскрутка сервера Minecraft


  3. tipson

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

    Баллы:
    153
    Skype:
    T-oleg98
    Имя в Minecraft:
    Tipson

    Кстати если бы ты весь свой гайд не писал,а все рассказал в видео было бы лучше и понятнее

  4. У меня с микро проблемы, только автоматическая настройка микро в скайпе помогает, а так фонит просто ужас, я бы заснял)


  5. tipson

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

    Баллы:
    153
    Skype:
    T-oleg98
    Имя в Minecraft:
    Tipson

    Эх микро,микро проблема людей 21 века

  6. Раньше нормально работал, сейчас — хоть выкидывай


  7. tipson

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

    Баллы:
    153
    Skype:
    T-oleg98
    Имя в Minecraft:
    Tipson

    вот вот такая же проблема пришлось наушники с микрофоном покупать


  8. dark32

    dark32
    А где твой ТЗ?
    Пользователь

    Будут ли разработки на C++ QT?
    C# — хорошо, но страдает кросплатформенность.


  9. Jers

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

    Да, думаю я выложу как нибудь, скоро.


  10. Dr.Death

    Dr.Death
    Старожил
    Пользователь

    Баллы:
    153
    Skype:
    asn008
    Имя в Minecraft:
    DrDeath

    Пересобрать под линуксом. Моно же


    LeftMyHouse нравится это.

  11. hame

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

    Баллы:
    88
    Skype:
    ssshamesss
    Имя в Minecraft:
    hame

    @arteZ, У меня вопрос, чем же этот лаунчер индивидуален? Тем, что у него есть система «Авторизации»?

  12. Багнутый. Я ему не доверяю) Собирайте сами, где желаете
    То, что он не будет похож на другие(Дизайн, месторасположение), свобода выбора!

  13. Вы вообще должны радоваться такому…


  14. hame

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

    Баллы:
    88
    Skype:
    ssshamesss
    Имя в Minecraft:
    hame


  15. Jers

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

      if (responseFromServer.Contains(" Bad login"))
     
                {
     
                    MessageBox.Show("Неправильный логин/пароль!");
     
                }
     
                else if (responseFromServer.Contains(" Old version"))
     
                {
     
                    MessageBox.Show("Обновите лаунчер!(Скачайте новую версию с сайта clanNr.org)");
     
                }

    А если какая другая ошибка? Ничего не покажет и пользователь будет сидеть сто раз набирать данные!

    if (responseFromServer.Contains(" Bad login"))
                {
                    MessageBox.Show("Неправильный логин/пароль!");
                }
                else if (responseFromServer.Contains(" Old version"))
                {
     
                    MessageBox.Show("Обновите лаунчер!(Скачайте новую версию с сайта clanNr.org)");
     
                }else{
    MessageBox.Show("Неизвестная ошибка!");
    }

  16. OveRKinG

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

    Баллы:
    68
    Имя в Minecraft:
    _OveRKinG

    Лаунчер на С# это конечно хорошо и красиво,но(!) заставлять пользователя качать Фреймворк ради того что бы поиграть…(PS:Только не надо говорить что у всех в наше время есть фреймворк,это не так :3)

  17. Код похож таки на стандарт, ибо C# все таки родня яве)
    А чтобы поиграть в Minecraft, нам нужна Java.
    C#, как и Java больше относится к интерпретируемым языкам, для работы которых нужно нечто внешнее. Хотя и оба этих языка назвать полностью ни компилируемыми, ни интерпретируемыми нельзя. Компилируется в них байт код — нечто промежуточное между машинным кодом и синтаксисом языка. А вот байт код уже интерпретируется в виртуальной машине.


    Сникерсни и arteZ нравится это.
  18. Согласен…

    А вообще, фреймворк нужен для работы некоторых игр, приложений… Даже MMO-игр(Пример: PW, но у них там по-моему автоматическая установка)

    Других нету, проверял уже)

  19. Пишу видео :)


  20. tipson

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

    Баллы:
    153
    Skype:
    T-oleg98
    Имя в Minecraft:
    Tipson

Страница 1 из 16

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

Русское сообщество Bukkit

Bukkit по-русски - свой сервер Minecraft

Список сокращений

Лаунчер — программа для загрузки и запуска игры;
ОС — операционная система;
JRE — Java Runtime Environment, программное обеспечение для запуска Java приложений;
Ассеты — игровые ресурсы;
Нативы — библиотеки для выполнения Java приложения на определенной платформе (семейство ОС);
Гб — гигабайт (1024 мегабайта);
Мб — мегабайт (1024 килобайта);
ОЗУ — Оперативно Запоминающее Устройство, если проще, оперативная память;
JVM — Виртуальная Машина Java, среда выполнения Java приложения;
Токен — ключ доступа, используемый для авторизации на серверах игры(доступ к скинам и Realms)

Вступ

Лаунчер занимается запуском игры, загрузкой игровых файлов, подключением скинов и тд. Здесь мы разберем конкретно процесс запуска и повторим его в простой оболочке — батнике (исполняемый скрипт для командной строки Windows). Для удобства давайте выстроим примерный процесс запуска игры с помощью лаунчера:

  1. Получение нужной информации о системе (разрядность JRE, семейство ОС);​

  2. Аутентификация пользователя;​

  3. Получение идентификатора пользователя и токена;​

  4. Построение строки запуска;​

  5. Выполнение строки запуска и скрытие лаунчера (для логирования возможных ошибок);​

  6. Завершение процесса лаунчера после завершение процесса игры.​

Далее разделим строку запуска. Она состоит из программных аргументов и аргументов JVM. Программные аргументы имеют вид --argument а JVM аргументы, -argument.

1. Базовая строка запуска

Откроем обычный блокнот и созданим в удобном месте файл с расширением .bat. Теперь, закроем блокнот и откроем созданный файл с помощью программы Notepad++. Перед дальнейшим редактированием советую отключить авто преобразование в UTF-8. Для этого снимем в настройках эту галочку:

Screenshot_2.png

Для удобства будем использовать переменные. Для создания переменной используем запись типа set имя=значение. Создадим переменные с папками игры:

set dir=%AppData%.minecraft
set ast=%AppData%.minecraftassets
set nat=%AppData%.minecraftnatives
set lib=%AppData%.minecraftlibraries

Теперь построим базовую строку запуска:
javaw аргументы[I]jvm главный[/I]класс программные_аргументы
Первое слово указывает запускаемое приложение из системных переменных(устанавливаются с установкой JRE), потом идут все JVM аргументы, указывается главный класс и в конце программные аргументы.

1. 1. 1. Аргументы JVM. Куча

Куча — это та область оперативной памяти компьютера, которая может быть использована Java приложением. Её размер задается двумя аргументами. Один задает её начальный размер, а второй, максимальный. Также, важно отметить, что лучше делать её фиксированной, ибо когда приложению не хватает начального объема, оно увеличивает его на какое-то значение, вплоть до максимально, что часто вызывает подлагивание. Начальный размер определяется аргументом -Xms4G а максимальный -Xmx4G. Буква G обозначает гигабайты, M — мегабайты. Ещё можно также этот объём памяти зарезервировать в самой ОС с помощью аргумета -XX:+AlwaysPreTouch Получается мы делаем фиксированную кучу равной 4Гб ОЗУ и сразу же резервируем данный объём на уровне ОС. Теперь наша строка выглядит так:
javaw -Xms4G -Xmx4G -XX:+AlwaysPreTouch

1. 1. 2. Аргументы JVM. Сборщик мусора

Сборщик мусора — это компонент JVM, который высвобождает ОЗУ методом очистки неиспользуемых данных, таких как промежуточные результаты вычислений. Сборщики мусора есть разные. разберем два самых популярных, они же ConcMarkSweepGC и G1GC. Не будем подробно вдаваться в принципы их работы, но уточню, что первый более эффективен для работы с малыми объёмами кучи в 1Гб и меньше. Второй более эффективен для кучи размером в 2Гб и больше. Эти сборщики мусора также имеют свои настройки.
Для первого ключевыми настройками есть пауза перед очистками и количество используемых потоков (процессорных) для очистки. Пауза задается миллисекундами и более эффективное значение определяется путем проб, но обычно используется диапазон 250-1000мс. Потоки же настраиваются автоматически. Вот пример настройки первого сборщика мусора: -XX:+UseConcMarkSweepGC -XX:MaxGCPauseMillis=1000. Мы настроили его так, что очистка производится не больше раза в секунду и использет все доступные процессорные потоки.
Второй же сборщик мусора более сложно настроить. Дело в том, что если первый сборщик, грубо говоря просто очищает мусор, то этот разделяет всю кучу на блоки, и очищает мусор с каждого блока, а при очистке приложение останавливается. Для этого сборщика мы настраиваем:

  • Процент кучи под новые данные​

  • Процент кучи для резерва​

  • Максимальное время для сборки мусора​

  • Размер блоков, не больше 32М​

Для новых данных нужно выделять не меньше 20% кучи, так как игра очень быстро создаёт новые данные. Однако вы можете увеличить это значение до 50-60% при размере кучи от 10Гб. Однако можете экспериментировать для лучшего распределения ОЗУ. Максимальное время сборки обычно выставляется на 30-50мс, значения больше не рекомендуются во избежание увеличения задержек внутреннего сервера, а меньшие значения могут попросту не давать сборщику успевать очищать мусор. Размер блоков обычно зависит от размера данных отдельного чанка. В более старых версиях игры, к примеру до 1.13 исключительно, данные чанка не превышали 16Мб в случае чистой игры и 32Мб на версиях 1.14 и новее. При игре с модификациями данные чанка могут быть увеличены, а это значит, что размер блоков нужно увеличить. Также не забываем, что размер блоков нельзя выставить больше 32Мб. Также, если ваш процессор имеет 4 и больше ядер, есть смысл в указании сборщику работать в режиме, оптимизированном под мультиядерные ЦП. Для этого указываем аргумент -XX:+ParallelRefProcEnabled. Вот пример:
-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M -XX:+ParallelRefProcEnabled
. Мы разрешаем использование экспериментальных аргументов, активируем сборщик и говорим ему распределять по 20% кучи под новые данные и резерв, очистку проводить не дольше 50мс и работать в более эффективном для мультиядерных ЦП режиме.

Также, для версий Minecraft 1.14+ и версий Java 11+ есть смысл попробовать новые сборщики мусора. Они работают совсем по другим принцыпам нежели ConcMark или G1 и могут обеспечить более эффективную очистку мусора с меньшим влиянием на FPS/TPS. Первый это -XX:+UseShenandoahGC, который по моим наблюдениям является достаточно эффективнее G1. Второй это -XX:+UseZGC, который является экспериментальным и его рекомендуется использовать с самыми новыми версиями Java. Он пока не показал себя намного эффективнее G1, но он скорее как «задел на будущее». Сами аргументы для активации этих сборщиков считаются экспериментальными, а значит без -XX:+UnlockExperimentalVMOptions не обойтись. Незабудьте, эти сборщики совсем другие нежели ConcMark или G1, так что при их ипользовании очистите остальные аргументы, которые могут касатся сборщиков мусора. Также, в последних версиях Oracle Java они могут быть вырезаны/деактивированы, поэтому можете попробовать Adopt Open JDK.

1. 2. Аргументы JVM. Дополнительно

Есть некоторые дополнительные аргументы, такие как указание названия лаунчера и его версии, указание версии и имени подсистемы DOS для управления файловой системой(иногда убирает проблему записи файлов сохранений):

-XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe.heapdump — позволяет корректно записывать файлы дампов памяти при краше игры и адекватно переключатся игре на дискретную графику;
-Dos.name=»Windows 10″ — указание имени подсистемы DOS;
-Dos.version=10.0 — указание версии подсистемы DOS;
-Dminecraft.launcher.brand=my-best-launcher — название лаунчера;
-Dminecraft.launcher.version=2.0 — версия лаунчера;
-XX:+AggressiveOpts — использовать экспериментальные функции оптимизации.

Пример строки для Windows 10:

-Xms4G -Xmx4G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe.heapdump -Dos.name="Windows 10" -Dos.version=10.0 -Dminecraft.launcher.brand="console-minecraft-starter" -Dminecraft.launcher.version=2.5

1. 3. Аргументы JVM. Библиотеки

Теперь нужно указать пути к файлу конфигурации логирования (как не странно, не используется в пиратских лаунчерах), нативам и библиотекам игры. Тут мы и будем использовать установленные ранее переменные записью %имя_переменной%.

Файл конфигурации устанавливается аргументом -Dlog4j.configurationFile=»%ast%log_configsclient-1.12.xml», но если у вас нету этого файла, просто не используйте этот аргумент. Он настраивает логирование и архивацию устаревших логов.

Путь к нативам указывается через -Djava.library.path=»%nat%». Но эти нативы нужно достать. Обычно, они хранятся в библиотеках игры и распаковываются во временную папку перед каждым запуском. Сами нативы это dll библиотеки от игрового движка LWJGL и нарратора(в новых версиях). Просто распакуйте их в папку C:UsersпользовательAppDataRoaming.minecraftnatives а jar-ники с ними обычно находятся по путям librariescommojangtext2speech и librariesorglwjgl. Вот нативы для версии игры 1.14.4:

Screenshot_1.png

А вот составление аргумента игровых библиотек займет наибольшее количество времени. Аргумент имеет вид -Cр «всепутибиблиотек». В скобках нужно указать через двоеточие пути ко всем jar-никам игры (их достаточно много). К примеру так: -Cp "%lib%comgooglecodegsongson2.8.0gson-2.8.0.jar;%lib%comgoogleguavaguava21.0guava-21.0.jar;..."
Вот полный вид аргумента для всех библиотек:

-cp "%lib%comgooglecodegsongson2.8.0gson-2.8.0.jar;%lib%comgoogleguavaguava21.0guava-21.0.jar;%lib%comibmicuicu4j-core-mojang51.2icu4j-core-mojang-51.2.jar;%lib%commojangauthlib1.5.25authlib-1.5.25.jar;%lib%commojangauthlib1.5.25authlib-1.5.25.jar;%lib%commojangbrigadier1.0.17brigadier-1.0.17.jar;%lib%commojangdatafixerupper2.0.24datafixerupper-2.0.24.jar;%lib%commojangjavabridge1.0.22javabridge-1.0.22.jar;%lib%commojangpatchy1.1patchy-1.1.jar;%lib%commojangtext2speech1.11.3text2speech-1.11.3.jar;%lib%commons-codeccommons-codec1.10commons-codec-1.10.jar;%lib%commons-iocommons-io2.5commons-io-2.5.jar;%lib%commons-loggingcommons-logging1.1.3commons-logging-1.1.3.jar;%lib%ionettynetty-all4.1.25.Finalnetty-all-4.1.25.Final.jar;%lib%itunimidsifastutil8.2.1fastutil-8.2.1.jar;%lib%netjavadevjnajna4.4.0jna-4.4.0.jar;%lib%netjavadevjnaplatform3.4.0platform-3.4.0.jar;%lib%netjavajinputjinput2.0.5jinput-2.0.5.jar;%lib%netjavajutilsjutils1.0.0jutils-1.0.0.jar;%lib%netsfjopt-simplejopt-simple5.0.3jopt-simple-5.0.3.jar;%lib%optifinelaunchwrapper-of2.1launchwrapper-of-2.1.jar;%lib%optifineOptiFine1.14.4_HD_U_F5OptiFine-1.14.4_HD_U_F5.jar;%lib%orgapachecommonscommons-compress1.8.1commons-compress-1.8.1.jar;%lib%orgapachecommonscommons-lang33.5commons-lang3-3.5.jar;%lib%orgapachehttpcomponentshttpclient4.3.3httpclient-4.3.3.jar;%lib%orgapachehttpcomponentshttpcore4.3.2httpcore-4.3.2.jar;%lib%orgapachelogginglog4jlog4j-api2.8.1log4j-api-2.8.1.jar;%lib%orgapachelogginglog4jlog4j-core2.8.1log4j-core-2.8.1.jar;%lib%orglwjgllwjgl3.2.2lwjgl-3.2.2.jar;%lib%orglwjgllwjgl-glfw3.2.2lwjgl-glfw-3.2.2.jar;%lib%orglwjgllwjgl-jemalloc3.2.2lwjgl-jemalloc-3.2.2.jar;%lib%orglwjgllwjgl-openal3.2.2lwjgl-openal-3.2.2.jar;%lib%orglwjgllwjgl-opengl3.2.2lwjgl-opengl-3.2.2.jar;%lib%orglwjgllwjgl-stb3.2.2lwjgl-stb-3.2.2.jar;%lib%oshi-projectoshi-core1.1oshi-core-1.1.jar;%lib%netminecraftclient1.14.4-OptiFine_HD_U_F51.14.4-OptiFine_HD_U_F5.jar"

(может отличатся в зависимости от типа установки игры).

2. Главный класс

Главный класс, это как кнопка зажигания в машине, сам небольшой, но запускает все. Для чистой версии это net.minecraft.client.main.Main а для модифицированной (с OptiFine или Forge) это net.minecraft.launchwrapper.Launch.

3. Программные аргументы

Программные аргументы задают путь для хранения сохранений (миры, настройки, ресурспаки и тд.) путь к ассетам, их индекс и тд. Кроме твикера все они нужны. Обычно запись идет в виде --имя_аргумента значение. Вот список аргументов:

  • —username никнейм

  • —version версия_игры

  • —gameDir папка_сохранений

  • —assetsDir папка_ассетов

  • —assetIndex индекс_ассетов (типа 1.14, 1.13, 1.12 и тд.)​

  • —uuid идентификатор_пользователя (если нету, указывайте null)​

  • —accessToken токен (если нету, указывайте null)​

  • —userType тип_пользователя (на что влияет не понятно, но надо)​

  • —versionType тип_версии (может влиять на надпись версии в главном меню игры)​

  • —tweakClass класс_твикер (в чистой версии не используется, а для OptiFine это optifine.OptiFineTweaker)​

Вот пример готовой строки запуска:

javaw -Xms4G -Xmx4G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe.heapdump -Dos.name="Windows 10" -Dminecraft.launcher.brand="cms" -Dminecraft.launcher.version=2.3 -Dlog4j.configurationFile="%ast%log_configsclient-1.12.xml" -Djava.library.path="%nat%" -cp "%lib%comgooglecodegsongson2.8.0gson-2.8.0.jar;%lib%comgoogleguavaguava21.0guava-21.0.jar;%lib%comibmicuicu4j-core-mojang51.2icu4j-core-mojang-51.2.jar;%lib%commojangauthlib1.5.25authlib-1.5.25.jar;%lib%commojangauthlib1.5.25authlib-1.5.25.jar;%lib%commojangbrigadier1.0.17brigadier-1.0.17.jar;%lib%commojangdatafixerupper2.0.24datafixerupper-2.0.24.jar;%lib%commojangjavabridge1.0.22javabridge-1.0.22.jar;%lib%commojangpatchy1.1patchy-1.1.jar;%lib%commojangtext2speech1.11.3text2speech-1.11.3.jar;%lib%commons-codeccommons-codec1.10commons-codec-1.10.jar;%lib%commons-iocommons-io2.5commons-io-2.5.jar;%lib%commons-loggingcommons-logging1.1.3commons-logging-1.1.3.jar;%lib%ionettynetty-all4.1.25.Finalnetty-all-4.1.25.Final.jar;%lib%itunimidsifastutil8.2.1fastutil-8.2.1.jar;%lib%netjavadevjnajna4.4.0jna-4.4.0.jar;%lib%netjavadevjnaplatform3.4.0platform-3.4.0.jar;%lib%netjavajinputjinput2.0.5jinput-2.0.5.jar;%lib%netjavajutilsjutils1.0.0jutils-1.0.0.jar;%lib%netsfjopt-simplejopt-simple5.0.3jopt-simple-5.0.3.jar;%lib%optifinelaunchwrapper-of2.1launchwrapper-of-2.1.jar;%lib%optifineOptiFine1.14.4_HD_U_F5OptiFine-1.14.4_HD_U_F5.jar;%lib%orgapachecommonscommons-compress1.8.1commons-compress-1.8.1.jar;%lib%orgapachecommonscommons-lang33.5commons-lang3-3.5.jar;%lib%orgapachehttpcomponentshttpclient4.3.3httpclient-4.3.3.jar;%lib%orgapachehttpcomponentshttpcore4.3.2httpcore-4.3.2.jar;%lib%orgapachelogginglog4jlog4j-api2.8.1log4j-api-2.8.1.jar;%lib%orgapachelogginglog4jlog4j-core2.8.1log4j-core-2.8.1.jar;%lib%orglwjgllwjgl3.2.2lwjgl-3.2.2.jar;%lib%orglwjgllwjgl-glfw3.2.2lwjgl-glfw-3.2.2.jar;%lib%orglwjgllwjgl-jemalloc3.2.2lwjgl-jemalloc-3.2.2.jar;%lib%orglwjgllwjgl-openal3.2.2lwjgl-openal-3.2.2.jar;%lib%orglwjgllwjgl-opengl3.2.2lwjgl-opengl-3.2.2.jar;%lib%orglwjgllwjgl-stb3.2.2lwjgl-stb-3.2.2.jar;%lib%oshi-projectoshi-core1.1oshi-core-1.1.jar;%lib%netminecraftclient1.14.4-OptiFine_HD_U_F51.14.4-OptiFine_HD_U_F5.jar" net.minecraft.launchwrapper.Launch --username "%usr%" --version 1.14.4-OptiFine_HD_U_F5 --gameDir "%dir%" --assetsDir "%ast%" --assetIndex 1.14 --uuid null --accessToken null --userType mojang --versionType release --tweakClass optifine.OptiFineTweaker

Можете сохранить батник, и при его запуске вы увидите саму команду запуска и через пару секунд ваша игра запустится.

4. Оформление батника

Можно сделать наш лаунчер более интерактивным и привлекательным.
Строка title Launcher установит имя окна с командами, запись @echo off отключит вывод команды (не её результат). Также, командой echo ... вы можете выводить свои сообщения, а с помощью cls очищать их. Хотите оформление? Используйте color 0a чтобы задать цвет фона первой цифрой и цвет символов второй буквой. Для установки переменной вводом используйте запись типа set /p usr=^>(вот справка по кодам, тык)!

Также, можно сделать авто скрытие лаунчера после ввода нужных данных. Для этого нужна утилита CMDOW, которая позволяет управлять самим окном консоли. Узнать более подробно о её функционале и скачать её можно здесь. В скачанном архиве по пути binrelease понадобится сама утилита (да, вся утилита это один файл). Файл для удобства можно переместить в папку игры в папку bin к примеру. Для скрытия окна консоли используйте команду cmdow.exe @ /HID предварительно указав путь в переменных. Скрытие делайте до строки запуска, ибо в батнике одна строка выполняется только после конца работы той, что перед ней. А также рекомендуется, после выполнения строки запуска и выхода из игры (завершения работы строки запуска) завершить процесс cmd командой exit.

Важно! Для корректного отображения кириллицы установите кодировку батника на OEM-866!

Вот примерный вид после оформления:

Screenshot_3.png

И его код:

@echo off
color 0a
title Minecraft Launcher
set dir=%AppData%.minecraft
set bin=%AppData%.minecraftbin
set run=%AppData%.minecraftruntimebin
set nat=%AppData%.minecraftnatives
set ast=%AppData%.minecraftassets
set lib=%AppData%.minecraftlibraries
echo Какой никнейм желаете использовать?
set /p usr=^>
cls
echo Сколько гигабайт ОЗУ желаете выделить игре?
set /p ram=^>
cls
"%bin%cmdow.exe" @ /HID
"%run%javaw.exe" -Xms%ram%G -Xmx%ram%G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe.heapdump -Dos.name="Windows 10" -Dminecraft.launcher.brand="cms" -Dminecraft.launcher.version=2.3 -Dlog4j.configurationFile="%ast%log_configsclient-1.12.xml" -Djava.library.path="%nat%" -cp "%lib%comgooglecodegsongson2.8.0gson-2.8.0.jar;%lib%comgoogleguavaguava21.0guava-21.0.jar;%lib%comibmicuicu4j-core-mojang51.2icu4j-core-mojang-51.2.jar;%lib%commojangauthlib1.5.25authlib-1.5.25.jar;%lib%commojangauthlib1.5.25authlib-1.5.25.jar;%lib%commojangbrigadier1.0.17brigadier-1.0.17.jar;%lib%commojangdatafixerupper2.0.24datafixerupper-2.0.24.jar;%lib%commojangjavabridge1.0.22javabridge-1.0.22.jar;%lib%commojangpatchy1.1patchy-1.1.jar;%lib%commojangtext2speech1.11.3text2speech-1.11.3.jar;%lib%commons-codeccommons-codec1.10commons-codec-1.10.jar;%lib%commons-iocommons-io2.5commons-io-2.5.jar;%lib%commons-loggingcommons-logging1.1.3commons-logging-1.1.3.jar;%lib%ionettynetty-all4.1.25.Finalnetty-all-4.1.25.Final.jar;%lib%itunimidsifastutil8.2.1fastutil-8.2.1.jar;%lib%netjavadevjnajna4.4.0jna-4.4.0.jar;%lib%netjavadevjnaplatform3.4.0platform-3.4.0.jar;%lib%netjavajinputjinput2.0.5jinput-2.0.5.jar;%lib%netjavajutilsjutils1.0.0jutils-1.0.0.jar;%lib%netsfjopt-simplejopt-simple5.0.3jopt-simple-5.0.3.jar;%lib%optifinelaunchwrapper-of2.1launchwrapper-of-2.1.jar;%lib%optifineOptiFine1.14.4_HD_U_F5OptiFine-1.14.4_HD_U_F5.jar;%lib%orgapachecommonscommons-compress1.8.1commons-compress-1.8.1.jar;%lib%orgapachecommonscommons-lang33.5commons-lang3-3.5.jar;%lib%orgapachehttpcomponentshttpclient4.3.3httpclient-4.3.3.jar;%lib%orgapachehttpcomponentshttpcore4.3.2httpcore-4.3.2.jar;%lib%orgapachelogginglog4jlog4j-api2.8.1log4j-api-2.8.1.jar;%lib%orgapachelogginglog4jlog4j-core2.8.1log4j-core-2.8.1.jar;%lib%orglwjgllwjgl3.2.2lwjgl-3.2.2.jar;%lib%orglwjgllwjgl-glfw3.2.2lwjgl-glfw-3.2.2.jar;%lib%orglwjgllwjgl-jemalloc3.2.2lwjgl-jemalloc-3.2.2.jar;%lib%orglwjgllwjgl-openal3.2.2lwjgl-openal-3.2.2.jar;%lib%orglwjgllwjgl-opengl3.2.2lwjgl-opengl-3.2.2.jar;%lib%orglwjgllwjgl-stb3.2.2lwjgl-stb-3.2.2.jar;%lib%oshi-projectoshi-core1.1oshi-core-1.1.jar;%lib%netminecraftclient1.14.4-OptiFine_HD_U_F51.14.4-OptiFine_HD_U_F5.jar" net.minecraft.launchwrapper.Launch --username "%usr%" --version 1.14.4-OptiFine_HD_U_F5 --gameDir "%dir%" --assetsDir "%ast%" --assetIndex 1.14 --uuid null --accessToken null --userType mojang --versionType release --tweakClass optifine.OptiFineTweaker
del "%dir%logs*.gz"
exit

(У вас может отличатся)

5. Компиляция в .exe

Возможно вы хотите не запукать какой-то там батник? Можем преобразовать его в обычный .exe с помощью программы Bat To Exe Converter. Можете скачать её здесь. Можете открыть свой батник, немного подредактировать и задать ему иконку или информацию о версии. Если увидите вместо русских надписей кракозябры, не волнуйтесь, после компиляции будет нормально. Когда завершили правки, просто нажмите на компиляцию и укажите путь сохранения и имя файла. Вуаля, теперь наш лаунчер — обычный исполняемый файл.

Админы, владеющие собственными серверами Minecraft, часто сталкиваются с проблемой сборки стабильного лаунчера, который позволит быстро и беспрепятственно скачивать обновления, моды, скины. В рамках данной статьи мы расскажем, как сделать свой лаунчер игры Майкрафт.

Содержание

  1. Что понадобится для создания лаунчера?
  2. Подготовка исходников
  3. Создание лаунчера для сервера
  4. Как добавить возможность авторизации?

Что понадобится для создания лаунчера?

возможности программы NetBeans

NetBeans – самый оптимальный помощник в создании лаунчера.

Как известно, лаунчер представляет собой программный интерфейс, облегчающий подключение геймеров к серверу игры. Эти приложения автоматически скачивают необходимые файлы и софт.

Для создания качественного лаунчера для сервера потребуется:

  • личный домен, сайт;
  • исходники собственного портала;
  • клиент программы NetBeans;
  • файловый менеджер (не обязательно).

Кроме того, лаунчер должен иметь систему авторизации. Инструкцию о том, как ее добавить, найдете ниже.

Подготовка исходников

  1. Скачать NetBeans.
  2. Открываем новую программу, создаем новый проект.
  3. В новом окне нажать на интерфейс «Java», затем выбрать «Приложение Java».
  4. Поле «Имя проекта» должно быть заполнено по усмотрению пользователя.
  5. После ввода названия убрать галочку с пункта «Создание главного класса».
  6. Кликаем «Готово».
  7. Перейдите в «Свойства» только что созданного проекта.
  8. Формат исходного файла следует поменять на «JDK6».
  9. Рядом установить кодировку «Win1251».

Создание лаунчера для сервера

  1. В директории «Документы/NetBeans project/«Ваш проект» необходимо разместить все файлы исходника (SRC).
  2. В корне папки NetBeans (проект) находится каталог «Launcher run», уровнем ниже – файлик «Settings.java», который необходимо открыть редактором кода.
  3. В правой области окна появится участок с кодом страницы. Придайте лаунчеру и домену собственные наименования.
  4. В коде с настройками сервера установите корректный ID, порты и версию клиента игры.
  5. Ссылки «Регистрация» и «Авторизация» можно изменить.

Видео: Как сделать свой лаунчер. 

При желании устанавливать моды на сервер рекомендуется проделать следующие манипуляции:

  1. В редакторе кода NetBeans найти строку «Public static bolean useModCheck».
  2. Изменить значение параметра на «True».
  3. Отыскать строку с параметром «Public static bolean useModsDelete».
  4. Присвоить значение «False».

Как добавить возможность авторизации?

  1. Найти строку «Public static bolean useAutoenter».
  2. Дописать значение данного параметра – «True».

Это позволит игрокам автоматически заходить на сервер без ввода логина и пароля.

Дальнейшие манипуляции с кодом можно производить по собственному усмотрению. При этом важно знать значения всех строк, поскольку нежелательные изменения могут привести к отказу лаунчера.

( 4 оценки, среднее 3.75 из 5 )

Привет всем!

Сегодня мы напишем простенький лаунчер для игры Minecraft. Реализовывать мы это будем с помощью CMD в Win 7, и поместим это все в файл расширения «.bat». Далее пот катом.

Поехали!

Скажу сразу: «Все манипуляции производятся с версией Minecraft 1.5.2, т.к в других версиях — другая система сборки и запуска».

Для начала, скачаем утилиту — «cmdow», она нужна для управления окнами.

Кидаем ее в папку нашего «запускатора», затем создаем исходный файл самого нашего «запускатора». Назовем его — «Minecraft.bat».

Далее нам нужны *jar файлы нашего Minecraft, а конкретно: «jinput.jar, lwjgl.jar, lwjgl_util.jar, minecraft.jar», также не забываем перекинуть папку «natives» в папку нашего лаунчера.
Теперь, самое интересное. Открываем наш «Minecraft.bat», и начинаем писать код. Туда мы вставляем следующее:

cmdow @ /HID
javaw -Xms256m -Xmx1024m -Djava.library.path=natives -cp "minecraft.jar;jinput.jar;lwjgl.jar;lwjgl_util.jar;" net.minecraft.client.Minecraft "Имя_Игрока" "Сессия ( можно оставить пустым )"

Теперь, если вы все сделали правильно, то при запуске нашего «Minecraft.bat», у нас запуститься Minecraft.

Прокачаем наш «запускатор» и сделаем не большой лаунчер!

Вставляем туда следующий код:

echo off
set APPDATA=%~dp0
title minecraft
color 0d
cls
echo Enter name:
set /p name=^>
cls
Echo Welcome to minecraft
cd .minecraft/bin
javaw -Xms256m -Xmx1024m -Djava.library.path=natives -cp "minecraft.jar;jinput.jar;lwjgl.jar;lwjgl_util.jar;" net.minecraft.client.Minecraft "%name%" ""
exit

Заключение

Мы написали почти что настоящий лаунчер для игры Minecraft. Гарантированная работоспособность на Win7 x64.

Если вы создаете свои собственные сервера в майнкрафте и хотите заметно упростить жизнь живущим там крафтерам (речь идет об обновлениях) тогда вы зашли именно по теме! Сегодня мы рассмотрим вместе с вами подробно тему о создании сборки (лаунчера) в minecraft самостоятельно. Тогда ваши гости и пользователи без труда смогут скачать необходимые обновления, а также подборки мобов. Более того, вам больше не нужно рассылать сообщения каждому игроку со ссылкой на скачивание.

Что нам нужно

Для начала свой собственный сайт. Да-да, вы не ослышались, вам необходимый свой сайт/площадка для закачивания файлов. Можно попробовать и бесплатные хостинги, но учтите при этом их минусы. Также вам нужны уже ваши знания определенных кодов майнкрафт + особые программы для работы с некоторыми файлами minecraft. Одну из таких можно скачать по ссылке ниже под статьей.

В чем заключается основной принцип собственного лаунчера? В том, что все необходимое, в том числе и «пакеты» заложены в едином всем известном файле minecraft.jar (архив). Займемся далее самим поиском этого архива. Нашли? Откройте его в любой папке и ищите далее файл — вот с таким названием — GameUpdater.class (он нужен для изменения данных). Откройте его с помощью стандартного редактора: идем на строку http://. Тут-то самое главное. Удалите адрес какого-то старого урла, а после вставьте свой (тот самый новый адрес сайта). Почти готово!


Переходим в админку сайта, а затем в файловый менеджер. Закиньте туда необходимые обновленные файлы для майнкрафта. Вот собственно все. Однако, конечно же, есть другие способы. Они не сильно отличаются друг от друга, но требуют разных «технических» знаний, касающихся не только мира игры.

Еще один подобный способ

  1. Закачиваем на свой компьютер любой пиратский клиент.
  2. Смотрим папки, в том числе скрытые с такими же файлами.
  3. Находим, как и в предыдущем методе, архив minecraft.jar находящийся поблизости с MineCraft_Start.exe
  4. Открываем далее директорию программы minecraftGameUpdater с расширением class
  5. Меняем именно в нем строчку старого сайта на ваш новый (ссылку).
  6. Архивируем все обратно, в единый архив. Это несложно: можно сделать с любым человеческим архиватором на компьютере.
  7. Помещаем в нужную директорию файлы из bin + вставляем все файлы из полученного архива.
  8. Наш момент истины настал! Жмем заветный файл загрузки MineCraft_Start.exe, нажимаем все галочки — наш лаунчер в действии и полностью готов к работе.

Лаунчер Minecraft — специально разработанный интерфейс для входа игрока в аккаунт и загрузки клиента игры. Лаунчер автоматически загружает java-пакеты, в том числе и minecraft.jar с основным кодом и ресурсами игры. В этой статье мы расскажем вам, как создать Майнкрафт лаунчер.

Создание лаунчера

Перед тем как создать свой лаунчер Minecraft, вам понадобится предварительно сделать свой сайт и сервер, а также скачать исходники. Исходников существует масса, поэтому качайте любые понравившиеся вам. Также необходимо скачать и установить программу NetBeans , при помощи которой вы будете править код.

  1. Запустите программу NetBeans. В верхнем правом углу программы нажмите на кнопку «Файл» и в выпадающем списке выберите пункт «Создать проект». В появившемся окне слева нажмите «Java», затем справа «Приложение Java» и нажмите кнопку «Далее». В графе «Имя проекта» введите название, уберите галочку с пункта «Создать главный класс» и нажмите «Готово». В NetBeans в поле проектов кликните правой кнопкой мыши по созданному вами проекту и выберите «Свойства». Выставьте формат исходного файла на JDK 6 и выберите из выпадающего списка кодировку Win1251.
  2. Откройте папку Мои документы/NetBeans prodject /Название вашего проекта/src и перекиньте все файлы из папки с исходниками (src).
  3. В NetBeans в корневой папке проекта откройте «launcher run» и нажмите на файл «Settings.java».
  4. В коде, появившемся в правой части интерфейса программы, измените название лаунчера и адрес домена (ваш сайт). В настройках сервера введите ID, порт и версию клиента. Замените ссылки «Регистрация», «Вспомнить пароль» и «Сайт» на нужные.

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

Для того чтобы на вашем сервере можно было установить моды, выставьте значение строки «Public static bolean useModCheck» — true, а «Public static bolean useModsDelete» — false.

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

Чтобы при входе игрока происходила автоматическая авторизация, выставьте значение «Public static bolean useAutoenter» — true.

Вы можете править практически весь имеющийся в исходнике код, кроме жизненно важного, из-за изменений которого программа будет «обрушиваться».

Конечно, без знаний элементарных основ программирования вам будет довольно трудно понять, как создать свой лаунчер в Майнкрафт, но вы можете попробовать.

Дополнительную информацию о популярной игре читайте в разделе .

Понравилась статья? Поделить с друзьями:
  • Как написать свой криптор
  • Как написать свой космический адрес
  • Как написать свой конфиг для cs go
  • Как написать свой компилятор на python
  • Как написать свой компилятор java