Перейти к содержимому

lwjgl3ify

Запусти Minecraft 1.7.10 с помощью LWJGL3 и современной Java (17 и новее)

Forge
Загрузчики
Forge
Скачиваний на Modrinth
37,8 тыс.
Подписчиков на Modrinth
31
версий
78
Обновлён
14 октября 202614 окт.
Опубликован
в 2024
Java 21 and LWJGL 3.3 shown in the F3 screen · свайп

Коротко о моде

Работает на Forge
Для Minecraft 1.7.10
Работает и в игре, и на сервере — ставьте, где нужен
Последняя версия — 3.0.39 от 14 октября 2026
Лицензия LGPL-3.0-only — бесплатно
Где нужен
В игренеобязателенНа серверенеобязателен

Работает и в игре, и на сервере — ставьте, где нужен

Версии игры1.7.10
Описание переведено автоматическиПоказать оригинал (EN)

LWJGL3ify

Приносит LWJGL3 и современные версии Java в Minecraft 1.7.10. Включает в себя RetroFuturaBootstrap как гибкую систему ранней загрузки плагинов.

Чтобы использовать, просто убедитесь, что основной jar находится в директории mods/, и настройте запуск с Java 8 как обычно. При запуске должно появиться окно с предложением выбрать современную версию Java для перезапуска и настройки JVM для этой установки Java. Если оно не появилось, скачайте современную версию Java у предпочитаемого вами поставщика и установите её; Java 17 и 21 — текущие рекомендуемые версии.

Совместимость

Хотя мод стремится к максимальной совместимости, неизбежно найдутся моды, которые на данный момент не работают с lwjgl3ify. Пожалуйста, проверьте, есть ли они в нашем трекере задач, и если нет — создайте задачу, приложив отчёт о краше (если есть), логи игры и информацию о том, что именно работает неправильно.

Настройка конфигов

Если вы хотите настроить параметры окна, сырой ввод мыши, свойства контекста OpenGL или другие более продвинутые настройки, загляните в файл конфигурации config/lwjgl3ify.cfg после первого запуска или в настройки мода lwjgl3ify прямо в игре.

Установка на сервер

Сначала установите работающий сервер Forge — из zip-архива модпака или с помощью установщика forge. Затем установите jar мода (а также unimixins, hodgepodge и gtnhlib при необходимости) в mods/, и скачайте jar forgePatches. Поместите jar forgePatches в ту же папку, где находятся ваши jar-файлы forge-universal и сервера minecraft. Серверы Thermos/Crucible/Hybrid не поддерживаются! Lwjgl3ify также зависит от Unimixins. Переименуйте jar forgePatches просто в lwjgl3ify-forgePatches.jar. Возьмите java9args.txt из исходников этого мода. Теперь вы можете запустить сервер командой вроде следующей, предполагая, что первый исполняемый файл java в вашем PATH — это java 17/21/новее:

java -Xmx6G -Xms6G @java9args.txt -jar lwjgl3ify-forgePatches.jar nogui

Как это работает? (Очень технические подробности)

Есть несколько компонентов для включения использования современной Java и LWJGL на старых версиях Minecraft, lwjgl3ify реализует их специально:

  • Перезапускатор игры для изменения списка библиотек, загружаемых в classpath Java — чтобы установить LWJGL3 и наш jar forgePatches, который включает такие библиотеки, как ASM 9 или новые Apache Commons.
  • Кастомный jar-лаунчер для сервера с изменённой записью Class-Path в META-INF манифесте (интегрирован в наш jar forgePatches)
  • Свободная и открытая замена launchwrapper с механизмом обнаружения classpath, совместимым с java 9+, и более широкими возможностями трансформеров на https://github.com/GTNewHorizons/RetroFuturaBootstrap.
  • Множество флагов add-opens для JVM, чтобы разрешить рефлексию во внутренности JVM. К сожалению, многие библиотеки и моды зависят от этого для работы, даже такие странные, как внутренности java.text или nio в случае с Netty.
  • Частично автогенерируемый шим совместимости, перенаправляющий вызовы api lwjgl2 в соответствующие вызовы lwjgl3 (в src/main/java/org/lwjglx, src/generated/java/org/lwjglx), генератор находится в src/util/java
  • Пустые классы org/lwjgl/*, соответствующие классам, удалённым из lwjgl3 (например, Display), для модов, которые полагаются на их нахождение по этому пути в classpath — например, для метаданных mixin
  • Замена поставщика информации о GL-вендоре для отчётов о крашах; старый вызывал краши JVM, если использовался из потока без действительного контекста OpenGL
  • Asm-трансформеры:

    • Asm-трансформер, переименовывающий любое обращение к org/lwjgl в org/lwjglx после того, как все остальные трансформации класса выполнены — в LwjglRedirectTransformer.java
    • Asm-трансформер javax/xml/bind -> jakarta/xml/bind/ и затенённая версия jakarta.xml.bind, потому что этот API был удалён из JRE 11
    • Трансформер расширяемых enum (скопирован под лицензией lgpl из Forge для minecraft 1.19.3) для замены множества использований EnumHelper
    • Разфинализатор object holders, чтобы убрать необходимость перезаписывать поля static final в Forge.
    • FixConstantPoolInterfaceMethodRefHelper — трансформер для исправления бага реобфускатора javac 8/asm 5.0, который генерировал неправильные записи в пуле констант, если использовались method handles для методов интерфейсов
  • Миксины:

    • Модификации object holder, чтобы больше не писать в поля static final
    • Изменение JarDiscoverer, чтобы игнорировать классы module-info.class и META-INF/versions/*, потому что он не знает о Java 9
    • PostMixinTransformInjector используется, чтобы переместить наш asm-трансформер на выполнение после обработки миксинов
  • Класс UnsafeHacks из современного forge, модифицированный для работы в большем числе случаев, для замены некоторых записей в static final там, где убрать final было нецелесообразно/сложно.
  • Патчи Forge — это модифицированные классы из Forge, которые нельзя трансформировать, потому что они загружаются слишком рано — поэтому мы загружаем jar forgePatches перед Forge в classpath, чтобы заменить их:

    • EventSubscriptionTransformer: формат дескрипторов аннотаций подклассов немного изменился в Java 17, это делает обнаружение аннотаций совместимым с обоими
    • TerminalTransformer: модифицирован для приёма classfiles новее, чем поддерживал asm5
    • ClassPatchManager: переключает реализацию Pack200 на Apache Commons Compress, потому что она была удалена из новых JDK
    • TracingPrintStream: commons-compress закрывает System.out, это блокирует такое поведение
    • CoreModManager: обход того факта, что системный загрузчик классов больше не является URLClassLoader
    • FMLSecurityManager: исправляет некоторые исключения выхода за границы массива; он также устарел в java 17 и потребует замены, как только появится новый API
    • EnumHelper: заменяет все api enumhelper новыми вариантами, использующими трансформер расширяемых enum и unsafe hacks.
  • Дополнительные миксины для повышения производительности, использующие возможности LWJGL3:

    • Загрузчик изображений на основе STB_image, намного быстрее, чем Image4J
  • Основанный на STB_rectpack упаковщик текстур, он почти мгновенно обрабатывает десятки тысяч текстур, в отличие от ванильного кода, которому требуются многие секунды, чтобы собрать такое количество текстур в атлас

Частые вопросы

Как установить lwjgl3ify?

Установите Forge под свою версию Minecraft, скачайте lwjgl3ify под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть lwjgl3ify?

У lwjgl3ify есть сборки для Minecraft 1.7.10.

Нужен ли lwjgl3ify на сервере?

Работает и в игре, и на сервере — ставьте, где нужен

Лицензия и источник
GNU Lesser General Public License v3.0 onlyможно использовать и распространять; изменённые версии — под той же лицензией и с исходным кодом
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее