- Загрузчики
- Forge
- Скачиваний на Modrinth
- 648
- Подписчиков на Modrinth
- 0
- версии
- 3
- Обновлён
- 11 февраля 202611 февр.
- Опубликован
- в 2024
Коротко о моде
Работает и в игре, и на сервере — ставьте, где нужен
Введение
Это фреймворк для кормодов на 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 на сервере?
Работает и в игре, и на сервере — ставьте, где нужен