Доброго времени суток, посетители нашего сайта! Сегодня, я хочу вам рассказать не менее важную тему. Как создать свою сборку с модами? Многие видели, что существуют сборки Клиентов Minecraft различными модификациями, и хотели-бы создать что-нибудь своё. Давайте перейдём поближе к делу!
Инструкция:
1. Скачиваем клиент Minecraft (Желательно версию 1.5.2) и устанавливаем его.
2. Далее, нам нужно скачать необходимые вспомогательные модификации и установить их. За них — Мы возьмём: Minecraft Forge, Audio Mod, OptiFine.
3. Устанавливаем все необходимые моды, которые будут дополнять игру.
4. Устанавливаем дополнительные модификации. Это могут быть: Русификаторы, и прочие не важные модификации.
5. Запускаем клиент и радуемся игрой!
Скачивание Minecraft:
Скачивать Minecraft — Нужно непосредственно рабочий, правильный, что-бы с ним не-было никаких проблем. Сразу после скачивания — предварительно проверьте скачанный клиент на работоспособность. Рекомендуется выбирать версию Minecraft`a 1.5.2 — Это самый лучший вариант для новичков, эта версия более удобная для установки модов, она доступная.
Установка Minecraft:
Установить Minecraft Совсем просто! Сначала нужно установить Java или обновить до новой версии. Затем, скачать лаунчер и запустить его. А позже — Введите ник и нажмите «Играть». Готово!
Вспомогательные моды:
Вспомогательные модификации — необходимы для правильной работы игры и других модификаций. Рекомендуется сначала — установить все вспомогательные модификации, а заем уже основные.
Установка вспомогательных модификаций:
Практически все вспомогательные модификации — Устанавливаются через Minecraft.Jar. Всё что вам нужно сделать — Это скачать, и все файлы перетащить в Minecrft.jar. minecraft.jar — Находится: в C:UsersИмя ПользователяAppDataRoaming.minecraftbin.
Теперь, вы умеете создавать свои собственные клиенты Mineraft, Удачи!
-
Update: По многочисленным просьбам обновил битые ссылки (14.01.2018)!
Все файлы (class, src и т д тут) >>
https://www.dropbox.com/s/auui4xqclweqh4f/rubukkit-all-files-src-class.zip
Приветствую вас дорогие форумчане!
Как я и обещал, выкладываю видео уроки «Как сделать достойный клиент на 3 версии minecraft»
Материал собирался с rubukkit, затем я разбирался и научился делать все сам, за это я благодарю тех, кто выкладывает все это на этот форум.Вы научитесь делать клиент minecraft, а именно:
* Научитесь пользоваться MPC.
* Убирать копирайты forge (для 1.5.2) (для 1.6.2)
* Переименовывать копирайты mojang (для 1.5.2) (для 1.6.2)
* Удалять/выключать кнопку текстурпак (для 1.5.2) (для 1.6.2)
* Убрать лишние кнопки из раздела «сетевая игра» (для 1.5.2) (для 1.6.2)
* Убрать сообщение о том, что вышло обновление 1.6 и нужно обновится (для 1.5.2)
* Как убрать FML окошко Hello с обновлением lib файлов (для 1.5.2)
* Как изменить/удалить/cделать цветными кнопки в меню (для 1.5.2)
* Как сделать цветные копирайты mojang и forge (для 1.5.2)* Убираем кнопку mods и кнопку «языки» (для 1.5.2)Ну и конечно же:
* Редактирование привязки сервер-клиент (для 1.5.2) (для 1.6.2)
* Редактирование папок к скинам/плащам (для 1.5.2) (для 1.6.2)1.5.2
1.6.2
https://minecraft-ru.gamepedia.com/Minecraft_Coder_Pack — Отсюда качаем MCP
http://files.minecraftforge.net/ — Тут мы качаем Forge
https://notepad-plus-plus.org/ — Качаем Notepad++
https://www.dropbox.com/s/908ag6vut2y2q2k/class162.zip — Качаем готовые class файлы «848 версия forge»
Внимание! Если вы эти класс файлы перенесете в Forge выше/ниже версии 848, то есть вероятность что ваш клиент не запустится, но можете попробовать, попытка не пытка.https://www.dropbox.com/s/y8awcdryu6uno47/src152.zip — Качаем готовые java файлы «848 версия forge»
Файлы скинул для ознакомления.
6 минута 23 секунда
Редактируем значения для кнопки «сетевая игра»
В поиск нужно ввести словоpublic void loadServerList()
На 33 строке в файле ServerList.java мы найдем это значение.
Потом комментируем строчки
38, 40, 41, 42, 43, 45, 47, 48, 49, 50.
Для тех кто не знает, как комментировать строчки: Комментарий в java обозначается // двумя флешами.7 минута
Добавляем свой сервер
После значенияВставляем этот метод и редактируем на месте:
this.servers.add(new ServerData("Название сервера", "IP сервера"));
В название сервера используйте символ § и цыфру, дабы сделать цветным текст в Сетевой игре.
8 минута 17 секунда
Изменяем кнопки в сетевой игре
В поиске вводими мы переходим с вами в фаил GuiMultiplayer.java
Код который нам нужен расположен на строках 123 — 136
Заменяем на это:public void initGuiControls() { this.buttonList.add(this.field_96289_p = new GuiButton(7, this.width / 2 - 154, this.height - 28, 70, 20, I18n.func_135053_a(""))); this.buttonList.add(this.buttonDelete = new GuiButton(2, this.width / 2 - 74, this.height - 28, 70, 20, I18n.func_135053_a(""))); this.buttonList.add(this.buttonSelect = new GuiButton(1, this.width / 2 - 154, this.height - 52, 308, 20, I18n.func_135053_a("selectServer.select"))); this.buttonList.add(new GuiButton(8, this.width / 2 - 154, this.height - 28, 152, 20, I18n.func_135053_a("selectServer.refresh"))); this.buttonList.add(new GuiButton(0, this.width / 2 + 2, this.height - 28, 152, 20, I18n.func_135053_a("gui.cancel"))); boolean flag = this.selectedServer >= 0 && this.selectedServer < this.serverSlotContainer.getSize(); this.buttonSelect.enabled = flag; this.field_96289_p.enabled = flag; this.buttonDelete.enabled = flag; }
10 минута
Убираем «Поиск локальных серверов оОо» в сетевой игреНа 93 строке в файле GuiSlotServer.java мы находим метод
this.func_77249_c(par1, par2, par3, par4, par5Tessellator);
и комментируем его так:
//this.func_77249_c(par1, par2, par3, par4, par5Tessellator);10 минута 30 секунда
Редактируем надпись mojang
В поиске вводим mojang и мы находим их копирайт на 601 строке в классе GuiMainMenu.java
Редактируем на свое значение.10 минута 47 секунда
Убираем сообщение forge (сколько модов активно, сколько загружено, стоит у вас optifine или нет).В поиске набираем:
и находим класс FMLCommonHandler.java
В этом классе мы коммертируем значения от 236 строки до 254.
Тогда отображаться в левом углу forge больше не будет. Только будет надпись «Minecraft 1.6.2«
В прочем слово «Minecraft 1.6.2» вы тоже можете отредактировать в классе GuiMainMenu.java11 минута 29 секунда
Выключаем или удаляем кнопку «Текстур пак»
На 130 строке есть метод:this.mc.displayGuiScreen(new GuiScreenTemporaryResourcePackSelect(this, this.options));
Комментируем ее так:
//this.mc.displayGuiScreen(new GuiScreenTemporaryResourcePackSelect(this, this.options));
А если хотите вообще удалить кнопку, то вам строка 73:
this.buttonList.add(new GuiButton(105, this.width / 2 - 152, this.height / 6 + 144 - 6, 150, 20, I18n.func_135053_a("options.resourcepack")));
Заменяем на:
//this.buttonList.add(new GuiButton(105, this.width / 2 - 152, this.height / 6 + 144 - 6, 150, 20, I18n.func_135053_a("options.resourcepack")));
12 минута 18 секунда
Редактируем joinserver и checkserver
Делаем привязку server=client
Есть простой способ редактирования этих 2 файлов (In Class Translat), НО так как мы работаем через программу MCP, то почему бы нам не сделать все сразу?
PS: сразу скажу, что не знаю какой из них 1 фаил не нужно редактировать, по этому редактирую все 2 (joinserver и checkserver).
Фаил NetClientHandler.java
318 строка:
меняем значение на свое.Пример: http://вашсайт.ru/joinserver.php?user=
Фаил ThreadLoginVerifier.java 25 строка:
меняем значение на свое.Пример: http://вашсайт.ru/checkserver.php?user=
На счет скинов и плащей не делал, но вы можете отредактировать через In Class Translat
Спросите почему я все комментирую?
Потому что я заранее учу вас не удалять, а комментировать.
Вдруг вы не то удалите и у вас возникнут проблемы.
А так вы закомментировали, когда у вас вышла ошибка, сразу же откомметировали и исправили.Продолжение ниже…
Последнее редактирование: 14 янв 2018 -
Update: По многочисленным просьбам обновил битые ссылки (14.01.2018)!
Все файлы (class, src и т д тут) >>
https://www.dropbox.com/s/auui4xqclweqh4f/rubukkit-all-files-src-class.zip
***************************************************************************
https://minecraft-ru.gamepedia.com/Minecraft_Coder_Pack — Отсюда качаем MCP 751
http://files.minecraftforge.net/ — Тут мы качаем minecraftforge-src-1.5.2-7.8.1.738
https://notepad-plus-plus.org/ — Качаем Notepad++
https://www.dropbox.com/s/vo0j7zgks5ieyfc/class152.zip — Качаем готовые class файлы «848 версия forge»
Внимание! Если вы эти класс файлы перенесете в Forge выше/ниже версии 751, то есть вероятность что ваш клиент не запустится!https://www.dropbox.com/s/y8awcdryu6uno47/src152.zip — Качаем готовые java файлы «751 версии forge»
1 минута 51 секунда
Необходимо скачать lib файлы, если у вас выходит error при инсталяции forge.
https://www.dropbox.com/s/n5oywsfz7rru9er/lib152.zip3 минута 6 секунда
Убираем использование файла server.dat
В поиск нужно ввести словоpublic void loadServerList()
На 33 строке в файле ServerList.java мы найдем это значение.
Комментируем строки: 37,38,41,42,43,443 минута 34 секунда
Добавляем свой сервер.
После значенияВставляем этот метод и редактируем на месте:
this.servers.add(new ServerData("Название сервера", "IP сервера"));
В название сервера используйте символ § и цыфру, дабы сделать цветным текст в Сетевой игре.
4 минута 26 секунда
Изменяем кнопки и расположение кнопок в сетевой игре.
В поиске вводими мы переходим с вами в фаил GuiMultiplayer.java
Код который нам нужен расположен на строках 123 — 136
Заменяем на это:public void initGuiControls() { StringTranslate stringtranslate = StringTranslate.getInstance(); this.buttonList.add(this.field_96289_p = new GuiButton(7, this.width / 2 - 154, this.height - 28, 70, 20, stringtranslate.translateKey(""))); this.buttonList.add(this.buttonDelete = new GuiButton(2, this.width / 2 - 74, this.height - 28, 70, 20, stringtranslate.translateKey(""))); this.buttonList.add(this.buttonSelect = new GuiButton(1, this.width / 2 - 154, this.height - 52, 308, 20, stringtranslate.translateKey("selectServer.select"))); this.buttonList.add(new GuiButton(8, this.width / 2 - 154, this.height - 28, 152, 20, stringtranslate.translateKey("selectServer.refresh"))); this.buttonList.add(new GuiButton(0, this.width / 2 + 2, this.height - 28, 152, 20, stringtranslate.translateKey("gui.cancel"))); boolean flag = this.selectedServer >= 0 && this.selectedServer < this.serverSlotContainer.getSize(); this.buttonSelect.enabled = flag; this.field_96289_p.enabled = flag; this.buttonDelete.enabled = flag; }
5 минута 20 секунда
Убираем «Поиск локальных серверов оОо» в сетевой игре
На 93 строке в файле GuiSlotServer.java мы находим метод
this.func_77249_c(par1, par2, par3, par4, par5Tessellator);
и комментируем его так:
//this.func_77249_c(par1, par2, par3, par4, par5Tessellator);6 минута 32 секунда
Редактируем надпись mojang
В поиске вводим mojang и мы находим их копирайт на 601 строке в классеGuiMainMenu.java
Редактируем на свое значение.
Используйте символ § и цыфру, дабы сделать цветным текст вашего копирайта.7 минута 16 секунда
Убираем сообщение forge (сколько модов активно, сколько загружено, стоит у вас optifine или нет).
+ Добавляем свой цветной копирайт в место этого.
В поиске набираем:и находим класс FMLCommonHandler.java
В этом классе мы коммертируем значения от 236 строки до 254.
Тогда отображаться в левом углу forge больше не будет.8 минута
Добавляем в место копирайта forge свой цветной копирайт.
На 238 строке заменяем на:brd.add("§6сборка §4rubukkit.org");
9 минута 10 секунда
Выключаем или удаляем кнопку «Текстур пак»
На 132 строке есть метод:this.mc.displayGuiScreen(new GuiTexturePacks(this, this.options));
Комментируем ее так:
//this.mc.displayGuiScreen(new GuiTexturePacks(this, this.options));
А если хотите вообще удалить кнопку, то вам строка 75:
this.buttonList.add(new GuiButton(105, this.width / 2 - 152, this.height / 6 + 144 - 6, 150, 20, stringtranslate.translateKey("options.texture.pack")));
Заменяем на:
//this.buttonList.add(new GuiButton(105, this.width / 2 - 152, this.height / 6 + 144 - 6, 150, 20, stringtranslate.translateKey("options.texture.pack")));
9 минута 54 секунда
Убираем FML окошечко с названием Hello, которое выходит при загрузке клиента.
В поиске вводим:
и мы проходим в фаил FMLRelauncher.java, где мы видим 2 таких значения.
Меняем оба значения на:
11 минута 19 секунда
Убираем сообщение «Notice! Minecraft 1.6 is available for manual download.
Please click here for more information.»
с 19 строки по 51 находиться метод, который мы должны заменить на:
12 минута 14 секунда
Изменяем название окна клиента на свое.
Открываем minecraft.java
На 2316 строке мы найдем:frame.setTitle("minecraft");
заменяем на:
frame.setTitle("Игровой клиент foxycraft.ru");
13 минута
Изменение кнопок «Сетевая игра» «Одиночная игра» и меняем их цвет.
262 — 266 строка
Заменяем на:private void addSingleplayerMultiplayerButtons(int par1, int par2, StringTranslate par3StringTranslate) { this.buttonList.add(new GuiButton(1, this.width / 2 - 100, par1, par3StringTranslate.translateKey("§9Одиночная игра"))); this.buttonList.add(new GuiButton(2, this.width / 2 - 100, par1 + par2 * 1, par3StringTranslate.translateKey("§9Зайти на сервер"))); }
Русские слова меняем на свои.
В название кнопок можно применять символ § и цыфру, дабы сделать цветным текст в меню.13 минута 47 секунда
Убираем кнопку «mods»
GuiMainMenu.java
201 и 202 строку мы увидим:fmlModButton = new GuiButton(6, this.width / 2 - 100, i + 48, "Mods"); this.buttonList.add(fmlModButton);
Комментируем так:
//fmlModButton = new GuiButton(6, this.width / 2 - 100, i + 48, "Mods"); //this.buttonList.add(fmlModButton);
15 минута 15 секунда
Удаляем кнопку «выбор языка»
GuiMainMenu.java
216 и 217 строку мы увидим:this.buttonList.add(new GuiButtonLanguage(5, this.width / 2 - 124, i + 72 + 12)); Object object = this.field_104025_t;
Комментируем так:
//this.buttonList.add(new GuiButtonLanguage(5, this.width / 2 - 124, i + 72 + 12)); //Object object = this.field_104025_t;
Потом на 294-297 чтобы убрать кнопку в опциях:
if (par1GuiButton.id == 5) { this.mc.displayGuiScreen(new GuiLanguage(this, this.mc.gameSettings)); }
Комментируем так:
//if (par1GuiButton.id == 5) //{ //this.mc.displayGuiScreen(new GuiLanguage(this, this.mc.gameSettings)); //}
18 минута 12 секунда:
Редактируем Joinserver, checkserver, skins и cloack.
Делаем привязку server=client
Есть простой способ редактирования этих файлов — через (In Class Translat), НО так как мы работаем через программу MCP, то почему бы нам не сделать все сразу?
PS: сразу скажу, что не знаю какой из них 1 фаил не нужно редактировать, по этому редактирую все 2 (joinserver и checkserver).
Фаил NetClientHandler.java
303 строка:
меняем значение на свое.Пример: http://вашсайт.ru/joinserver.php?user=
Фаил ThreadLoginVerifier.java 25 строка:
меняем значение на свое.Пример: http://вашсайт.ru/checkserver.php?user=
На счет скинов и плащей не делал, но вы можете отредактировать через In Class Translat
Видеоурок не готов.
Обновление и что добавлено:
7 оттября 2013 22:56 — Добавлен материал к видеоуроку «Как сделать достойный клиент 1.5.2».
7 октября 2013 — Добавлено новое видео «Как сделать достойный клиент 1.5.2»
По просьбе «Иван Грозный» ник на rubukkit «bounze» Добавлены в видеоурок следующие разделы:
* Как убрать кнопку Mods.
* Как Убрать FML окошко hello c обновлением lib файлов.
* Как изменить цвет копирайтов forge и mojang.
* Как изменить надпись на кнопке одиночная игра и сетевая.
* Как убрать кнопку смены языка (кнопка в виде планеты).
* Как переименовать название окна клиента.
* Как убрать лишние кнопки из раздела «сетевая игра»
* Как убрать сообщение о том, что вышло обновление 1.6 и нужно обновится (для 1.5.2)
Всю ночь обрабатывал видео, пойду спать. Днем выложу туториал к видео.3 сентября 2013 — Создана тема. Добавлен видеоурок «Как сделать достойный клиент 1.6.2».
Вечером добавлен был туториал к видео.
Выложил class файлы на скачивание.Последнее редактирование: 14 янв 2018 -
Hugefort
Старожил
Пользователь- Баллы:
- 103
- Skype:
- hugefort
- Имя в Minecraft:
- Hugefort
Интересно ….
А и кстати, помоги найти мод на монеты и мод на щиты,кольца,перчатки, ожерелья и т.д.
falleny и Vedroyder нравится это.
-
granisto
Старожил
Пользователь- Баллы:
- 123
- Skype:
- granisto200
- Имя в Minecraft:
- Granisto
Монеты и щиты есть в CustomNPC, но этот мод имеет в три раза больше функционала. Кольца, перчатки, ожерелья можно найти в RPGInventory. Но хотя таких модов, вроде достаточно в minecraftforum.
-
Ну, если все как в описании, то будет круто. Жду.
-
Тему обновил, днем добавлю видео.
falleny и WCRAFT нравится это.
-
@exsperto1, Ты когда в фордже запускал файлик install у тебя скачалось 175мб, у меня же, буквально за минуту, 16мб и половины папок, что были у тебя, нет.
UPD начал извлекать на декстоп и скачались все 170мб.
HeyFOC и falleny нравится это.
-
Ну что, кому нибудь нужны видеоуроки для 1.4.7 и 1.5.2 ?
-
MegaAntoxa1
Старожил
Пользователь- Баллы:
- 173
- Skype:
- antonkretov.ru
- Имя в Minecraft:
- Anton_Kretov
Делайте, все равно кому-нибудь понадобятся.
-
Напиши как сделать норм клиент с нуля )) То есть когда ни чистого майна ни форжы.
-
Кстати в видео ты сказал что дашь шрифты ))
Но так и не дал.Может выложишь? Заодно с мануалом по установке.
-
Под видео посмотри, там шрифты лежат.
-
А можно как-то сделать просто по нажатию на кнопку етевая играа вход на сервер.
В идеале вообще было-бы сделать как на картинке =)Вложения:
-
-
ставлю в клиент и краш..
в чем трабла? вот краш репорт:---- Minecraft Crash Report ---- // Surprise! Haha. Well, this is awkward. Time: 17.09.13 0:52 Description: Initializing game java.lang.SecurityException: SHA1 digest error for assets/minecraft/lang/en_US.lang at sun.security.util.ManifestEntryVerifier.verify(Unknown Source) at java.util.jar.JarVerifier.processEntry(Unknown Source) at java.util.jar.JarVerifier.update(Unknown Source) at java.util.jar.JarVerifier$VerifierStream.read(Unknown Source) at java.io.FilterInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at org.apache.commons.io.IOUtils.readLines(IOUtils.java:1033) at org.apache.commons.io.IOUtils.readLines(IOUtils.java:987) at net.minecraft.client.resources.Locale.func_135021_a(SourceFile:68) at net.minecraft.client.resources.Locale.func_135028_a(SourceFile:63) at net.minecraft.client.resources.Locale.func_135022_a(SourceFile:35) at net.minecraft.client.resources.LanguageManager.func_110549_a(LanguageManager.java:84) at net.minecraft.client.resources.SimpleReloadableResourceManager.func_110544_b(SourceFile:99) at net.minecraft.client.resources.SimpleReloadableResourceManager.func_110541_a(SourceFile:87) at net.minecraft.client.Minecraft.func_110436_a(Minecraft.java:541) at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:463) at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:806) at net.minecraft.client.main.Main.main(SourceFile:101) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraft.launchwrapper.Launch.launch(Launch.java:57) at net.minecraft.launchwrapper.Launch.main(Launch.java:18) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Stacktrace: at sun.security.util.ManifestEntryVerifier.verify(Unknown Source) at java.util.jar.JarVerifier.processEntry(Unknown Source) at java.util.jar.JarVerifier.update(Unknown Source) at java.util.jar.JarVerifier$VerifierStream.read(Unknown Source) at java.io.FilterInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at org.apache.commons.io.IOUtils.readLines(IOUtils.java:1033) at org.apache.commons.io.IOUtils.readLines(IOUtils.java:987) at net.minecraft.client.resources.Locale.func_135021_a(SourceFile:68) at net.minecraft.client.resources.Locale.func_135028_a(SourceFile:63) at net.minecraft.client.resources.Locale.func_135022_a(SourceFile:35) at net.minecraft.client.resources.LanguageManager.func_110549_a(LanguageManager.java:84) at net.minecraft.client.resources.SimpleReloadableResourceManager.func_110544_b(SourceFile:99) at net.minecraft.client.resources.SimpleReloadableResourceManager.func_110541_a(SourceFile:87) at net.minecraft.client.Minecraft.func_110436_a(Minecraft.java:541) at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:463) -- Initialization -- Details: Stacktrace: at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:806) at net.minecraft.client.main.Main.main(SourceFile:101) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraft.launchwrapper.Launch.launch(Launch.java:57) at net.minecraft.launchwrapper.Launch.main(Launch.java:18) -- System Details -- Details: Minecraft Version: 1.6.2 Operating System: Windows 7 (x86) version 6.1 Java Version: 1.7.0_25, Oracle Corporation Java VM Version: Java HotSpot(TM) Client VM (mixed mode, sharing), Oracle Corporation Memory: 8520840 bytes (8 MB) / 57171968 bytes (54 MB) up to 518979584 bytes (494 MB) JVM Flags: 1 total; -Xmx512M AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used Suspicious classes: FML and Forge are installed IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0 FML: Launched Version: 1.6.2-Forge9.10.1.859 LWJGL: 2.9.0 OpenGL: AMD Radeon HD 6800 Series GL version 4.2.12217 Compatibility Profile Context 12.104.0.0, ATI Technologies Inc. Is Modded: Definitely; Client brand changed to 'fml,forge' Type: Client (map_client.txt) Resource Pack: Default Current Language: Русский (Россия) Profiler Position: N/A (disabled) Vec3 Pool Size: ~~ERROR~~ NullPointerException: null
-
Ругается на шрифт.
Может у вас что то стоит в клиенте?
попробуй загрузить мой assets с моего client3
похоже шрифт нужно вставлять еще в assets
лаунчер у меня на сайте.
falleny и WCRAFT нравится это.
-
CarloBLR
Активный участник
Пользователь- Баллы:
- 88
- Имя в Minecraft:
- CarloBLR
Как скоро сможешь сделать видео для 1.5.2 версии?
-
У меня чистый клиент загруженный лаунчером + установленная в него последняя фордж
-
up
Скоро будет видеоурок, как я изменяю скины через mcp и ставлю шрифт на клиент с модом «optifine».
falleny и WCRAFT нравится это.
-
bounze
Активный участник
ПользовательСделай скорее пожалуйста на 1.5.2 !
Очень прошу! -
Обновил тему.
Добавил новое видео «Как сделать достойный клиент 1.5.2»
Поделиться этой страницей
Список сокращений
Лаунчер — программа для загрузки и запуска игры;
ОС — операционная система;
JRE — Java Runtime Environment, программное обеспечение для запуска Java приложений;
Ассеты — игровые ресурсы;
Нативы — библиотеки для выполнения Java приложения на определенной платформе (семейство ОС);
Гб — гигабайт (1024 мегабайта);
Мб — мегабайт (1024 килобайта);
ОЗУ — Оперативно Запоминающее Устройство, если проще, оперативная память;
JVM — Виртуальная Машина Java, среда выполнения Java приложения;
Токен — ключ доступа, используемый для авторизации на серверах игры(доступ к скинам и Realms)
Вступ
Лаунчер занимается запуском игры, загрузкой игровых файлов, подключением скинов и тд. Здесь мы разберем конкретно процесс запуска и повторим его в простой оболочке — батнике (исполняемый скрипт для командной строки Windows). Для удобства давайте выстроим примерный процесс запуска игры с помощью лаунчера:
-
Получение нужной информации о системе (разрядность JRE, семейство ОС);
-
Аутентификация пользователя;
-
Получение идентификатора пользователя и токена;
-
Построение строки запуска;
-
Выполнение строки запуска и скрытие лаунчера (для логирования возможных ошибок);
-
Завершение процесса лаунчера после завершение процесса игры.
Далее разделим строку запуска. Она состоит из программных аргументов и аргументов JVM. Программные аргументы имеют вид --argument
а JVM аргументы, -argument
.
1. Базовая строка запуска
Откроем обычный блокнот и созданим в удобном месте файл с расширением .bat. Теперь, закроем блокнот и откроем созданный файл с помощью программы Notepad++. Перед дальнейшим редактированием советую отключить авто преобразование в UTF-8. Для этого снимем в настройках эту галочку:
Для удобства будем использовать переменные. Для создания переменной используем запись типа 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
. Вот пример:
. Мы разрешаем использование экспериментальных аргументов, активируем сборщик и говорим ему распределять по 20% кучи под новые данные и резерв, очистку проводить не дольше 50мс и работать в более эффективном для мультиядерных ЦП режиме.
-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M -XX:+ParallelRefProcEnabled
Также, для версий 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:
А вот составление аргумента игровых библиотек займет наибольшее количество времени. Аргумент имеет вид -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!
Вот примерный вид после оформления:
И его код:
@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 можно по ссылке:
Как создать клиент
✅КАК СДЕЛАТЬ СВОЙ МАЙНКРАФТ ЛАУНЧЕР — ПИРАТСКИЙ МАЙНКРАФТ ЛАУНЧЕР — СВОЙ ЛАУНЧЕР✅
Как создать свой лаунчер minecraft
#9 КАК СОЗДАТЬ ПРОЕКТ MINECRAFT 2019 СОЗДАНИЕ ЛАУНЧЕРА — ВИДЕО — УРОК
[2] Как создать свой проект майнкрафт — Клиент
Как создать проект майнкрафт? Создание лаунчера #3
Как сделать СВОЮ СБОРКУ Майнкрафт в TLauncher
Как создать проект Майнкрафт с модами 1.12.2 — Полное руководство
Админы, владеющие собственными серверами Minecraft, часто сталкиваются с проблемой сборки стабильного лаунчера, который позволит быстро и беспрепятственно скачивать обновления, моды, скины. В рамках данной статьи мы расскажем, как сделать свой лаунчер игры Майкрафт.
Содержание
- Что понадобится для создания лаунчера?
- Подготовка исходников
- Создание лаунчера для сервера
- Как добавить возможность авторизации?
Что понадобится для создания лаунчера?
Как известно, лаунчер представляет собой программный интерфейс, облегчающий подключение геймеров к серверу игры. Эти приложения автоматически скачивают необходимые файлы и софт.
Для создания качественного лаунчера для сервера потребуется:
- личный домен, сайт;
- исходники собственного портала;
- клиент программы NetBeans;
- файловый менеджер (не обязательно).
Кроме того, лаунчер должен иметь систему авторизации. Инструкцию о том, как ее добавить, найдете ниже.
Подготовка исходников
- Скачать NetBeans.
- Открываем новую программу, создаем новый проект.
- В новом окне нажать на интерфейс «Java», затем выбрать «Приложение Java».
- Поле «Имя проекта» должно быть заполнено по усмотрению пользователя.
- После ввода названия убрать галочку с пункта «Создание главного класса».
- Кликаем «Готово».
- Перейдите в «Свойства» только что созданного проекта.
- Формат исходного файла следует поменять на «JDK6».
- Рядом установить кодировку «Win1251».
Создание лаунчера для сервера
- В директории «Документы/NetBeans project/«Ваш проект» необходимо разместить все файлы исходника (SRC).
- В корне папки NetBeans (проект) находится каталог «Launcher run», уровнем ниже – файлик «Settings.java», который необходимо открыть редактором кода.
- В правой области окна появится участок с кодом страницы. Придайте лаунчеру и домену собственные наименования.
- В коде с настройками сервера установите корректный ID, порты и версию клиента игры.
- Ссылки «Регистрация» и «Авторизация» можно изменить.
Видео: Как сделать свой лаунчер.
При желании устанавливать моды на сервер рекомендуется проделать следующие манипуляции:
- В редакторе кода NetBeans найти строку «Public static bolean useModCheck».
- Изменить значение параметра на «True».
- Отыскать строку с параметром «Public static bolean useModsDelete».
- Присвоить значение «False».
Как добавить возможность авторизации?
- Найти строку «Public static bolean useAutoenter».
- Дописать значение данного параметра – «True».
Это позволит игрокам автоматически заходить на сервер без ввода логина и пароля.
Дальнейшие манипуляции с кодом можно производить по собственному усмотрению. При этом важно знать значения всех строк, поскольку нежелательные изменения могут привести к отказу лаунчера.
( 4 оценки, среднее 3.75 из 5 )