Лаунчер + система скинов + авторизация + привязка к клиента к серверу
Итак..Приступим!
1 ЧАСТЬ
Скачиваем NetBeans
Скачали, установили….
Жмём: Создать проект, дальше жмём Далее, убираем галочку с «Создать главный класс»
Создаём проект!
Сделано….
Теперь жмём правой кнопкой по проекту, и кликаем на Свойства.
Справа будет выведен список исходников….
Удаляем исходник, и добавляем тот, что мы скачали.Жмём ОК.
Открываем проект, и находим net.minecraft
Первое,что мы будем редактировать, это GameUpdater.java
Находим 170 строчку.
Ссылку меняем на ссылку к загрузке файлов lwjgl.jar, jinput.jar, lwjgl_util.jar, minecraft.jar и windows_natives.jar.lzma
Теперь находим LoginForm.java. 188 строка
Меняем на свою ссылку на файл news.php (новости)
Официальная ссылка на новости: http://mcupdate.tumblr.com/news.php
Дальше на 299 строке ищем:
Меняем на свою ссылку к регистрации…
И последний класс, это LauncherFrame.java
На 101 строке находим:
Тут меняем ссылку на auth.php файл
Готово…Жмём правой кнопкой по проекту>>Почистить и построить проект
Далее Выполнить…ВЫБИРАЕМ ГЛАВНЫЙ КЛАСС: Net.MinecraftLauncher.
Ваш лаунчер находится в папке dist вашего проекта!
Вроде всё готово..теперь надо сделать систему скинов + авторизацию…
2 ЧАСТЬ
Создаём на сайте папку cpanel
В неё заливаем систему скинов byxar’а
Залили, настраиваем файл connect.php
Там настраиваем…всё расписано понятно!
Дальше нам надо будет зайти в вашу БД
Зашли…Теперь надо залить файлы…
Жмём Import.В папке системы скинов byxar’а есть папка sql
Все файлы,которые имеются там, заливаем в БД.
3 ЧАСТЬ
Итак…У нас есть лаунчер….Теперь нам нужно отредактировать клиент, и сервер.
Начнём с Системы Скинов
Нам нужна программа InClassTranslator.
Извлекаем из minecraft.jar файлы(а не папки):
Редактируем в InClassTranslator’е эти файлы…
Ищем в классах строки, где есть ссылки на скины…Их и меняем на свои=)
Потом эти файлы обратно заливаем в minecraft.jar
С системой скинов закончили, Congratulations!
4 часть(вроде последняя)
1 вариант
Нужен InClassTranslator.
Открываем minecraft.jar и заходим в net/minecraft/abm.class (для версии 1.2.3)
Меняем http://session.minecraft.net/game/joinserver.jsp?user=
на
http://ваш_путь_к_файлам_авторизации/joinserver.php?user=
Открываем ваше ядро сервера, то есть bukkit.jar и переходим к net/minecraft/server/ThreadLoginVerifier.class
Находим в нём http://session.minecraft.net/game/checkserver.jsp?user=
меняем на
http://ваш_путь_к_файлам_авторизации/checkserver.php?user=
2 вариант
Откройте папку MCP и закиньте клиентскую папку bin и ваше bukkit ядро в папку jars. Теперь В папке MCP запускаем батник Decompile.bat и ждём, пока всё декомпилируется.Потом откройте src\minecraft\net\minecraft\src\NetClientHandler.java в любом текстовом редакторе и замените
http://session.minecraft.net/game/joinserver.jsp?user=
на ссылку к файлу joinserver.php и обязательно оставьте ?user= в конце
Потом откройте src\minecraft_server\net\minecraft\src\ThreadLoginVerifier.java в любом текстовом редакторе и
замените
http://session.minecraft.net/game/checkserver.jsp?user=
на ссылку к файлу checkserver.php и обязательно оставьте ?user= в конце
Запускаем батник recompile.bat и reobfuscate.bat. Теперь закиньте файл в папке reobf\minecraft в minecraft.jar и файл в папке reobf\minecraft_server в Ваш(теперь Ваш) баккит. Все, запускайте сервер c параметром online-mode=true и пробуйте.
1 часть второго Туториала.
Сейчас нам понадобится вот этот исходник.
Редактирование самого лаунчера такое же, как и в 1 туториале!
Компилируйте и делайте лаунчер, изменяя свои ссылки.
Теперь, в папку загрузки вашего клиента добавьте файл client.zip
А в этот архив залейте папки, файлы и прочие фигнистики, которые вы используете
То есть, этот файл будет распаковывать папки и файлы, которые вы указали!
Например, я в него залью папку saves и файл ModLoader.txt…
И эта папка и файл будет скачиваться в вашу папку!
Дополнения:
Убираем пароль в авторизации:
249 строка:
Свой лаунчер на основе батника
Лаунчер — программа для загрузки и запуска игры;
ОС — операционная система;
JRE — Java Runtime Environment, программное обеспечение для запуска Java приложений;
Ассеты — игровые ресурсы;
Нативы — библиотеки для выполнения Java приложения на определенной платформе (семейство ОС);
Гб — гигабайт (1024 мегабайта);
Мб — мегабайт (1024 килобайта);
ОЗУ — Оперативно Запоминающее Устройство, если проще, оперативная память;
JVM — Виртуальная Машина Java, среда выполнения Java приложения;
Токен — ключ доступа, используемый для авторизации на серверах игры(доступ к скинам и Realms)
Далее разделим строку запуска. Она состоит из программных аргументов и аргументов JVM. Программные аргументы имеют вид —argument а JVM аргументы, -argument .
Для удобства будем использовать переменные. Для создания переменной используем запись типа set имя=значение . Создадим переменные с папками игры:
Теперь построим базовую строку запуска:
javaw аргументы[I]jvm главный[/I]класс программные_аргументы
Первое слово указывает запускаемое приложение из системных переменных(устанавливаются с установкой JRE), потом идут все JVM аргументы, указывается главный класс и в конце программные аргументы.
Куча — это та область оперативной памяти компьютера, которая может быть использована Java приложением. Её размер задается двумя аргументами. Один задает её начальный размер, а второй, максимальный. Также, важно отметить, что лучше делать её фиксированной, ибо когда приложению не хватает начального объема, оно увеличивает его на какое-то значение, вплоть до максимально, что часто вызывает подлагивание. Начальный размер определяется аргументом -Xms4G а максимальный -Xmx4G . Буква G обозначает гигабайты, M — мегабайты. Ещё можно также этот объём памяти зарезервировать в самой ОС с помощью аргумета -XX:+AlwaysPreTouch Получается мы делаем фиксированную кучу равной 4Гб ОЗУ и сразу же резервируем данный объём на уровне ОС. Теперь наша строка выглядит так:
javaw -Xms4G -Xmx4G -XX:+AlwaysPreTouch
Для новых данных нужно выделять не меньше 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.
Есть некоторые дополнительные аргументы, такие как указание названия лаунчера и его версии, указание версии и имени подсистемы DOS для управления файловой системой(иногда убирает проблему записи файлов сохранений):
-XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe.heapdump — позволяет корректно записывать файлы дампов памяти при краше игры и адекватно переключатся игре на дискретную графику;
-Dos.name=»Windows 10″ — указание имени подсистемы DOS;
-Dos.version=10.0 — указание версии подсистемы DOS;
-Dminecraft.launcher.brand=my-best-launcher — название лаунчера;
-Dminecraft.launcher.version=2.0 — версия лаунчера;
-XX:+AggressiveOpts — использовать экспериментальные функции оптимизации.
Пример строки для Windows 10:
Теперь нужно указать пути к файлу конфигурации логирования (как не странно, не используется в пиратских лаунчерах), нативам и библиотекам игры. Тут мы и будем использовать установленные ранее переменные записью %имя_переменной% .
Файл конфигурации устанавливается аргументом -Dlog4j.configurationFile=»%ast%\log_configs\client-1.12.xml», но если у вас нету этого файла, просто не используйте этот аргумент. Он настраивает логирование и архивацию устаревших логов.
Путь к нативам указывается через -Djava.library.path=»%nat%». Но эти нативы нужно достать. Обычно, они хранятся в библиотеках игры и распаковываются во временную папку перед каждым запуском. Сами нативы это dll библиотеки от игрового движка LWJGL и нарратора(в новых версиях). Просто распакуйте их в папку C:\Users\пользователь\AppData\Roaming\.minecraft\natives а jar-ники с ними обычно находятся по путям libraries\com\mojang\text2speech\ и libraries\org\lwjgl . Вот нативы для версии игры 1.14.4:
А вот составление аргумента игровых библиотек займет наибольшее количество времени. Аргумент имеет вид -Cр «всепутибиблиотек». В скобках нужно указать через двоеточие пути ко всем jar-никам игры (их достаточно много). К примеру так: -Cp «%lib%\com\google\code\gson\gson\2.8.0\gson-2.8.0.jar;%lib%\com\google\guava\guava\21.0\guava-21.0.jar;. »
Вот полный вид аргумента для всех библиотек:
(может отличатся в зависимости от типа установки игры).
Главный класс, это как кнопка зажигания в машине, сам небольшой, но запускает все. Для чистой версии это net.minecraft.client.main.Main а для модифицированной (с OptiFine или Forge) это net.minecraft.launchwrapper.Launch .
Можете сохранить батник, и при его запуске вы увидите саму команду запуска и через пару секунд ваша игра запустится.
Можно сделать наш лаунчер более интерактивным и привлекательным.
Строка title Launcher установит имя окна с командами, запись @echo off отключит вывод команды (не её результат). Также, командой echo . вы можете выводить свои сообщения, а с помощью cls очищать их. Хотите оформление? Используйте color 0a чтобы задать цвет фона первой цифрой и цвет символов второй буквой. Для установки переменной вводом используйте запись типа set /p usr=^> (вот справка по кодам, тык)!
Также, можно сделать авто скрытие лаунчера после ввода нужных данных. Для этого нужна утилита CMDOW, которая позволяет управлять самим окном консоли. Узнать более подробно о её функционале и скачать её можно здесь. В скачанном архиве по пути bin\release понадобится сама утилита (да, вся утилита это один файл). Файл для удобства можно переместить в папку игры в папку bin к примеру. Для скрытия окна консоли используйте команду cmdow.exe @ /HID предварительно указав путь в переменных. Скрытие делайте до строки запуска, ибо в батнике одна строка выполняется только после конца работы той, что перед ней. А также рекомендуется, после выполнения строки запуска и выхода из игры (завершения работы строки запуска) завершить процесс cmd командой exit .
Важно! Для корректного отображения кириллицы установите кодировку батника на OEM-866!
Скачка нескольких фаилов через 1 WebClient
Как скачивать несколько файлов через WebClient по очереди, через DownloadFileAsync
Доброй ночи. Столкнулся с проблемой по скачиванию нескольких файлов друг за другом. Фулл код как.
Кеширование результата работы Webclient.DownloadStringAsync() (Windows Phone 8 Webclient)
Всем привет. Приложение для Windows Phone 8. Запускаю под дебагом. Обращаюсь на локальный.
Ссылки для скачивания с помощью WebClient.DownloadFile и WebClient.DownloadFileAsync
Ссылки какие должны быть, для скачивания webClient.DownloadFile и webClient.DownloadFileAsync Не.
Парсинг через WebClient
Мне нужно парсить эту страницу.
Блин уже часа 4 мучаюсь всё перепробывал
Добавлено через 37 секунд
Спасибо сейчас попробую
Добавлено через 2 минуты
Сейчас проверил, когда пытаюсь скачать 1 фаил всё норм когда все 5 ничего не выходит
Это я уже знаю) спасибо
Добавлено через 4 минуты
Кстати пока не ушёл, есть одна проблема почем то nod32 блочит все джарнки, ты не знаешь в чём дело??
Тематические курсы и обучение профессиям онлайн Профессия С#-разработчик (Skillbox) Архитектор ПО (Skillbox) Профессия Тестировщик (Skillbox) |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Не скачивает файл через WebClient (502 Недопустимый шлюз), но скачивает через браузер
Добрый день! При попытке скачать файл с помощью Webclient выдает ошибку: Удаленный сервер.
Загрузка фотографий (> 2000) через WebClient
Добрый вечер, форумчане! public async Task DownloadManyFiles(Dictionary files) <.
Получен код другой страницы через WebClient
Visual Studio 2008. Windows XP, SP-2. Написал небольшую программку для чтения кода html страницы, а.
Загрузка файлов через WebClient с отображением процентов
Здравствуйте, не очень понимаю, как сделать вывод процентов загрузки. Хочу сделать ProgressBar на.