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

HookLib

Фреймворк для кормодов

Forge
Загрузчики
Forge
Скачиваний на Modrinth
648
Подписчиков на Modrinth
0
версии
3
Обновлён
11 февраля 202611 февр.
Опубликован
в 2024
Это библиотека — она нужна другим модам и сама ничего не добавляет в игруНужна 1 модам. Скачайте её, если этого требует другой мод.

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

Библиотека — нужна другим модам: её требуют 1
Работает на Forge
Для Minecraft 1.12.2
Работает и в игре, и на сервере — ставьте, где нужен
Последняя версия — 3.28 от 11 февраля 2026
Лицензия MIT — бесплатно
Где нужен
В игренеобязателенНа серверенеобязателен

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

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

Введение

Это фреймворк для кормодов на MinecraftForge.

В основном полезен разработчикам модов.

Цель проекта — дать простой способ изменять существующую логику, не трогая напрямую её код, а дописывая свой.

Не требует знания байткода JVM.

Ну да, я слегка опоздал с публикацией проекта, потому что Mixins захватили мир, но мне HookLib показался удобнее, и у меня всё ещё есть нереализованные хорошие идеи, которые сделают его ещё лучше. Так что, может, смысл есть

С чего начать

Понимание хуков

Когда есть какой-то код, который ты хочешь изменить, но он часть Minecraft или другого мода, можно написать что-то вроде:

@HookContainer public class MyHooks { @Hook @OnBegin public static void resize(Minecraft mc, int x, int y) { System.out.println("Resize, x=" + x + ", y=" + y); } }

HookLib найдёт метод с именем resize с двумя аргументами int в классе Minecraft и вставит вызов MyHooks#resize в начало найденного
целевого метода.

Затем ты увидишь в консоли сообщение при изменении размера окна.

Добавление в проект

  • Добавь зависимость в build.gradle:

    repositories { maven { url "https://cursemaven.com" } } dependencies { implementation "curse.maven:hooklib:12345" }

  • Добавь VM-опцию -Dfml.coreMods.load=gloomyfolken.hooklib.minecraft.MainHookLoader

Это можно сделать и через gradle:

minecraft { mappings channel: 'snapshot', version: '20171003-1.12'

runs { client { workingDirectory project.file('run') property "fml.coreMods.load", "gloomyfolken.hooklib.minecraft.MainHookLoader" //here }

server { workingDirectory project.file('run') property "fml.coreMods.load", "gloomyfolken.hooklib.minecraft.MainHookLoader" //here } } }

  • Выполни Gradle Refresh в своей IDE

Дальнейшее изучение

Смотри нашу вики для деталей API и продвинутых техник

Планы

  • сделать HookLib загрузчиком для кормодов
  • точка инъекции при вызове метода
  • способ вывести возможные аргументы @LocalVariable
  • точка инъекции в выражении
  • способ доступа к приватным переменным

  • порт на новые версии Minecraft
  • аннотационный процессор для проверки во время компиляции
  • конфиги для кормодов
  • кэширование целевых классов с применёнными хуками

Благодарности

  • Спасибо @GloomyFolken за разработку оригинального HookLib!
  • Спасибо @Foreck за крутой логотип!

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

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

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

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

У HookLib есть сборки для Minecraft 1.12.2.

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

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

Лицензия и источник
MIT Licenseможно свободно использовать и распространять с указанием автора
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

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