Jinput windows native jar

Лаунчер + система скинов + авторизация + привязка к клиента к серверу

Итак..Приступим!
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 туториале!
Компилируйте и делайте лаунчер, изменяя свои ссылки.

Читайте также:  Ноут выключается при загрузке windows

Теперь, в папку загрузки вашего клиента добавьте файл 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мс и работать в более эффективном для мультиядерных ЦП режиме.

Читайте также:  Lbp2900 driver 64 bit windows

Также, для версий 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;. »
Вот полный вид аргумента для всех библиотек:

Читайте также:  Android как веб камера для mac os

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

Главный класс, это как кнопка зажигания в машине, сам небольшой, но запускает все. Для чистой версии это 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!

«no jinput-dx8_64 in java.library.path» desipte the file being in the path #42

Comments

MightyElemental commented Jun 6, 2018

I get these errors when I launch my program.

java.lang.UnsatisfiedLinkError: no jinput-dx8_64 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at net.java.games.input.DirectInputEnvironmentPlugin.lambda$loadLibrary$0(DirectInputEnvironmentPlugin.java:73)
at java.security.AccessController.doPrivileged(Native Method)
at net.java.games.input.DirectInputEnvironmentPlugin.loadLibrary(DirectInputEnvironmentPlugin.java:67)
at net.java.games.input.DirectInputEnvironmentPlugin.(DirectInputEnvironmentPlugin.java:98)
at net.java.games.input.DirectAndRawInputEnvironmentPlugin.(DirectAndRawInputEnvironmentPlugin.java:45)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at net.java.games.input.DefaultControllerEnvironment.getControllers(DefaultControllerEnvironment.java:134)
at org.lwjgl.input.Controllers.create(Controllers.java:71)

java.lang.UnsatisfiedLinkError: no jinput-raw_64 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at net.java.games.input.RawInputEnvironmentPlugin.lambda$loadLibrary$0(RawInputEnvironmentPlugin.java:73)
at java.security.AccessController.doPrivileged(Native Method)
at net.java.games.input.RawInputEnvironmentPlugin.loadLibrary(RawInputEnvironmentPlugin.java:67)
at net.java.games.input.RawInputEnvironmentPlugin.(RawInputEnvironmentPlugin.java:98)
at net.java.games.input.DirectAndRawInputEnvironmentPlugin.(DirectAndRawInputEnvironmentPlugin.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at net.java.games.input.DefaultControllerEnvironment.getControllers(DefaultControllerEnvironment.java:134)
at org.lwjgl.input.Controllers.create(Controllers.java:71)

Thing is, the library path contains all the native files that it asks for. ‘jinput-dx8_64.dll’ and ‘jinput-raw_64.dll’.
LWGJL does not throw any errors and its natives are in the same path.
I’m using the latest version of windows 10 along with jinput 2.0.9.

The text was updated successfully, but these errors were encountered:

Оцените статью