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

Доброго времени суток, посетители нашего сайта! Сегодня, я хочу вам рассказать не менее важную тему. Как создать свою сборку с модами? Многие видели, что существуют сборки Клиентов 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, Удачи!

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

  1. 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.java

    11 минута 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
  2. Быстрая раскрутка сервера Minecraft

  3. 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.zip

    3 минута 6 секунда
    Убираем использование файла server.dat

    В поиск нужно ввести слово

    public void loadServerList()

    На 33 строке в файле ServerList.java мы найдем это значение.
    Комментируем строки: 37,38,41,42,43,44

    3 минута 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

  4. Hugefort

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

    Баллы:
    103
    Skype:
    hugefort
    Имя в Minecraft:
    Hugefort

    Интересно ….
    А и кстати, помоги найти мод на монеты и мод на щиты,кольца,перчатки, ожерелья и т.д.


    falleny и Vedroyder нравится это.

  5. granisto

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

    Баллы:
    123
    Skype:
    granisto200
    Имя в Minecraft:
    Granisto

    Монеты и щиты есть в CustomNPC, но этот мод имеет в три раза больше функционала. Кольца, перчатки, ожерелья можно найти в RPGInventory. Но хотя таких модов, вроде достаточно в minecraftforum.

  6. Ну, если все как в описании, то будет круто. Жду.

  7. Тему обновил, днем добавлю видео.


    falleny и WCRAFT нравится это.
  8. @exsperto1, Ты когда в фордже запускал файлик install у тебя скачалось 175мб, у меня же, буквально за минуту, 16мб и половины папок, что были у тебя, нет.
    UPD начал извлекать на декстоп и скачались все 170мб.


    HeyFOC и falleny нравится это.
  9. Ну что, кому нибудь нужны видеоуроки для 1.4.7 и 1.5.2 ?


  10. MegaAntoxa1

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

    Баллы:
    173
    Skype:
    antonkretov.ru
    Имя в Minecraft:
    Anton_Kretov

    Делайте, все равно кому-нибудь понадобятся.

  11. Напиши как сделать норм клиент с нуля )) То есть когда ни чистого майна ни форжы.

  12. Кстати в видео ты сказал что дашь шрифты ))
    Но так и не дал.

    Может выложишь? Заодно с мануалом по установке.

  13. Под видео посмотри, там шрифты лежат.

  14. А можно как-то сделать просто по нажатию на кнопку етевая играа вход на сервер.
    В идеале вообще было-бы сделать как на картинке =)

    Вложения:

    • IMG_15052013_011147.png
  15. ставлю в клиент и краш..
    в чем трабла? вот краш репорт:

    ---- 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
  16. Ругается на шрифт.
    Может у вас что то стоит в клиенте?
    попробуй загрузить мой assets с моего client3
    похоже шрифт нужно вставлять еще в assets
    лаунчер у меня на сайте.


    falleny и WCRAFT нравится это.

  17. CarloBLR

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

    Баллы:
    88
    Имя в Minecraft:
    CarloBLR

    Как скоро сможешь сделать видео для 1.5.2 версии?

  18. У меня чистый клиент загруженный лаунчером + установленная в него последняя фордж

  19. up
    Скоро будет видеоурок, как я изменяю скины через mcp и ставлю шрифт на клиент с модом «optifine».


    falleny и WCRAFT нравится это.

  20. bounze

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

    Сделай скорее пожалуйста на 1.5.2 !
    Очень прошу!

  21. Обновил тему.
    Добавил новое видео «Как сделать достойный клиент 1.5.2»

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

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

Русское сообщество 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 можно по ссылке:

Как создать клиент

✅КАК СДЕЛАТЬ СВОЙ МАЙНКРАФТ ЛАУНЧЕР — ПИРАТСКИЙ МАЙНКРАФТ ЛАУНЧЕР — СВОЙ ЛАУНЧЕР✅

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

#9 КАК СОЗДАТЬ ПРОЕКТ MINECRAFT 2019 СОЗДАНИЕ ЛАУНЧЕРА — ВИДЕО — УРОК

[2] Как создать свой проект майнкрафт — Клиент

Как создать проект майнкрафт? Создание лаунчера #3

Как сделать СВОЮ СБОРКУ Майнкрафт в TLauncher

Как создать проект Майнкрафт с модами 1.12.2 — Полное руководство

Админы, владеющие собственными серверами 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 )

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