NilLoader

NilLoader (ØL или 0L) — это минимальная, простая в установке и независимая от приложения система для применения патчей во время выполнения программ, написанных на Java, совместимая с любым лаунчером, который позволяет изменять аргументы JVM.

Она основана на нативной системе Java-агентов, но предоставляет полноценный и удобный API для определения патчей классов и точек входа поверх неё. Дополнительно NilLoader предлагает систему работы с обфусцированными средами, не заставляя вас писать код с использованием обфусцированных имён. (Обратите внимание, что NilLoader не предоставляет «высокоуровневую» систему патчинга байткода, как Mixin; вам нужно писать сырые патчи байткода напрямую, используя Mini или ASM.)

Мод NilLoader включает в себя полную копию NilLoader внутри себя, что позволяет использовать мод NilLoader напрямую как Java-агент. Однако вы также можете загрузить NilLoader отдельно как Java-агент, и он автоматически обнаружит совместимые с NilLoader jar-файлы в подкаталоге mods, или nilmods, если вместе с NilLoader используется другой загрузчик, который может запутаться из-за наличия jar-файлов NilLoader в каталоге mods. Копии NilLoader, содержащиеся в этих модах, будут игнорироваться загрузчиком классов, что предотвращает конфликты версий.

NilLoader + Minecraft

NilLoader был изначально разработан для Minecraft, как и многие другие фреймворки для патчинга байткода Java. В среде Minecraft он совместим со всеми текущими и прошлыми загрузчиками и может патчить любую версию игры — от Cave Game Test до последних снапшотов. Однако, поскольку NilLoader очень универсален, он не предлагает многих удобств, которые есть у других загрузчиков, таких как промежуточные отображения, кросс-версионная совместимость или какой-либо API. NilLoader позволяет делать всего две вещи: патчить классы и получать уведомление при запуске JVM до выполнения какого-либо кода.

Тем не менее, имея эти две возможности, вы можете реализовать практически всё, что захотите. Обратите внимание, что NilLoader не является заменой Fabric или Forge, это дополнительный вариант для поддержки нестандартных версий или выполнения задач, которые другие загрузчики не позволяют. Кто-то вполне может создать целый API поверх NilLoader, но этим человеком не буду я, и я не планирую, чтобы это происходило.

NilLoader берет своё начало в кросс-версионном фреймворке патчинга, созданном для мода Ears и использовавшемся в его портах на Beta 1.7, ранние версии Forge, NFC и др. То есть, примерно, это его основное назначение.

Использование NilLoader

Более подробная документация появится скоро, а пока ознакомьтесь с NilExample для написания модов и используйте этот JSON-компонент для Prism Launcher, чтобы установить NilLoader. (Нажмите «Add Empty» в разделе версий, введите «NilLoader» и «com.unascribed.nilloader», затем нажмите Edit справа и замените содержимое файла на данный JSON.)

Для других лаунчеров скачайте последнюю версию NilLoader из релизов, положите её в папку .minecraft, переименуйте в NilLoader.jar и добавьте в аргументы JVM строку -javaagent:NilLoader.jar

Скачать NilLoader на Майнкрафт:

На все версии:

Короткая ссылка