Как создать свой клиент майнкрафт

Обновлено: 03.07.2024

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

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

Screenshot_2.jpg

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

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

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

Также, для версий 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.

Есть некоторые дополнительные аргументы, такие как указание названия лаунчера и его версии, указание версии и имени подсистемы 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:

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

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

Путь к нативам указывается через -Djava.library.path="%nat%". Но эти нативы нужно достать. Обычно, они хранятся в библиотеках игры и распаковываются во временную папку перед каждым запуском. Сами нативы это dll библиотеки от игрового движка LWJGL и нарратора(в новых версиях). Просто распакуйте их в папку C:\Users\пользователь\AppData\Roaming\.minecraft\natives а jar-ники с ними обычно находятся по путям libraries\com\mojang\text2speech\ и libraries\org\lwjgl . Вот нативы для версии игры 1.14.4:

Screenshot_1.jpg

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

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

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

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

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

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

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

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

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

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

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

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

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

Начало работы

  1. Качаем данный архив с программой, картинками и портативным лаунчером -
    installer.zip [7,49 Mb]
  2. Создаем где-нибудь новую папку (рабочий стол, например) и скидываем туда всё, что есть в архиве
  3. Устанавливаем программу, находящуюся в папке "Smart Install Maker".

Создание качественных сборок на маинкрафт [Guide]

Создание качественных сборок на маинкрафт [Guide]


Начнём пожалуй с того, что такое сборка в принципе. Изначально, когда сборки только зарождались, они были все однотипны. Так продолжалось вплоть до 1.4.7, когда был первый всплеск качественных сборок. Именно тогда моды начали интегрировать друг с другом. Не умело, пробуя перо, но интегрировать. Затем началась эпоха FTB , которая длится и по сей день, однако неумолиомо идёт на спад (фантан иссяк). Уже тогда сваливать моды в кучу стало дурным тоном. Не так давно, как вы наверняка знаете, вышла сборка Sevtech Ages от Darkosto . Она вывела сборки майнкрафт на совершенно другой уровень. Теперь, как вы понимаете, свалки модов не в почёте и если вы хотите создать достойную сборку, то вам придётся немало попотеть.


Итак. Какой же должна быть современная сборка? Попробуем разобраться в этом.

1) Нужно чётко определиться с жанром сборки. Будет ли это industrial, magic, magitech, AFN(all from nothing или всё из ничего), а может RPG.


Вы спросите. А как же SevTech? Ведь там есть и магия и технологии и приключения. Я вам отвечу. Это межжанровая сборка, но на её создание было убито огромное количество сил и времени! Да и делал её профессионал! Поэтому это исключение из правил и вам не стоит ровняться на этот стиль!

2) Вы должны… Нет… Вы ОБЯЗАНЫ идеально знать все моды, которые вы хотите включить в вашу сборку! Причём очень желательно хотя бы приблизительно понимать, как они работают (потом поможет избежать проблем в стиле «Я хотел сделать так, а оно работает не так, что делать?») Если вы ну совсем не можете читать исходный код, то рекомендую вам пройти майнкрафт с каждым из модов, которые вы хотите воткнуть в сборку по отдельности или сгрупировав их по 2-3 штуки (не считая JEI, WAILA, Minimap и т. д.)

Наверняка многие господа младше 14 лет начнут кричать «НО ВЕДЬ ЛОЛОЛОШКА ВСЕГДА ИГРАЕТ С МОДАМИ КОТОРЫЕ ОН ВООБЩЕ НЕ ЗНАЕТ И ЭТО КЛАССНО!». Забудьте о Роминых сборках. Этому есть несколько причин. Первая: он уже несколько лет на ютубе и может себе позволить халтуру, бо всё равно ведь схавают. Вторая: он развлекает аудиторию стримов и видосов, а не привлекает игроков. На его сборках играет меньше 5% его зрителей! Третья: вы даже не представляете, сколько работы он проводит, чтобы собирать такие гигантские сборки с НИКОМУ не знакомыми модами, чтобы было интересно!

3) Моды должны быть настроены и интегрированы. Не бойтесь отключать половину контента модов. Главное чтобы всё было гармонично и вписывалось в общую концепцию!

4) Если моды всем хорошо знакомы, то придумывайте игроку цели, которых трудно будет достичь!

5) Сборка должна быть оптимизирована. Желательно под максимум 4 ГБ ОЗУ


Что нам потребуется для создания качественной сборки:

  1. Forge.
  2. Exel (как бы это странно не звучало, но он вам очень пригодится для балансировки)
  3. CraftTweaker с аддонами (менять рецепты, удалять предметы)
  4. BetterFPS
  5. FoamFix (желательно)
  6. Если есть лицензия маинкрафт, то TwitchApp (ускорит процесс создания сборки в 1.5 раз)
  7. JEI или аналог. Просто must have если открытие крафтов не является частью игрового опыта
  8. 7-10 основных модов, которые игрок будет развивать в течении игры
  9. Любой мод для добавления кастомных ачивок/квестов


Что не стоит добавлять в вашу сборку:

  1. Optifine. Если вы будете выкладывать сборку с установленным оптифайном на Curseforge, Minecraft forrum и другие комьюнити сервисы, то вас могут забанить за нарушение авторских прав.
  2. Better Foliage. Очень сильно нагружает видео карту и совместим не со всеми модами. Если добавляете, то отключайте в настройках по умолчанию всё, что только можно.
  3. Greg Tech. Если вы не умеете читать код, то даже не пробуйте ставить этот лагодром в вашу сборку. Вы огребёте с ним огромное количество проблем!
  4. Драконик. Я уже слышу, как рвёт пуканы у школьников. Драконик — ужасный и совершенно не сбалансированный мод! Если вы его ставите в сборку и он вам ну оооочень нужен, то усложните его до предела и вырежте из него все источники энергии (или сделайте их крафт настолько сложным, чтобы пролучить их можно было только в самом конце). Хороший пример интеграции этого мода — FTB Infinity Evolved
  5. Моды аналоги. Например AE2 и RefindStorage.

Пожалуй на этом с вводной статьёй всё. Если она вам понравилась, но напишите в комментариях, о чём вы хотели бы прочитать. Я учту это при написании статьи — гайда.

Создаем установщик для своей сборки + портативный клиент на основе tLauncher [Guide]

Создаем установщик для своей сборки + портативный клиент на основе tLauncher [Guide]

Итак, для начала начнём с подготовки нашего рабочего места. Наливаем чай, включаем музыку и начинаем творить.

Создание и подготовка клиента

  1. logs
  2. saves (если нет специальной карты под клиент)
  3. server-resource-packs
  4. fonts
  5. mod-config ( не config )
  1. launcher_profiles.json
  2. servers.dat ( если клиент не под специальный сервер )
  3. tlauncher_profiles.json

Создаем установщик для своей сборки + портативный клиент на основе tLauncher [Guide]


Примерно так будет выглядеть папка клиента после очистки

Программа установлена, клиент создан - а значит можно приступать к созданию установщика!

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

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

Создание установщика


Создаем установщик для своей сборки + портативный клиент на основе tLauncher [Guide]

  1. Имя программы - собственно, название вашего клиента
  2. Версия - версия вашего клиента
  3. Имя компании - будет показываться внизу установщика
  4. Интернет-сайт - толком ничего не делает
  5. Поддержка - ваши контакты (e-mail)
  6. Сохранить как - путь, где будет созданный установщик

Создаем установщик для своей сборки + портативный клиент на основе tLauncher [Guide]

Здесь нам требуется добавить свою сборку в установщик. Нажимаем на кнопку "Добавить файлы из папки" и в появившимся диалоговом окне выбираем папку, где находится наша сборка.

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

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

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

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

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

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

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

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

Читайте также: