
HookLib
Активный0.0
Установок
Последнее обновление
Версии
HookLib
HookLib представляет собой специализированный фреймворк для создания кор-модов в среде MinecraftForge. Данное решение ориентировано в первую очередь на разработчиков модификаций и предоставляет удобный инструментарий для изменения существующей логики игры без необходимости прямого редактирования исходного кода.
Основные возможности
Главная цель проекта — предложить простой способ модификации существующего функционала через написание дополнительного кода. Преимущество HookLib заключается в том, что для работы с ним не требуется глубоких знаний о байт-коде JVM.
Как работают хуки
Когда возникает необходимость изменить определенный участок кода (будь то код Minecraft или другого мода), можно использовать следующий подход:
@HookContainer
public class MyHooks {
@Hook
@OnBegin
public static void resize(Minecraft mc, int x, int y) {
System.out.println("Изменение размера, 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 параметра
Добавьте 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"
}
server {
workingDirectory project.file('run')
property "fml.coreMods.load", "gloomyfolken.hooklib.minecraft.MainHookLoader"
}
}
}
После внесения изменений выполните обновление Gradle в вашей IDE.
Дальнейшее изучение
Для получения подробной информации о API и продвинутых техниках работы рекомендуется ознакомиться с документацией проекта.
Планы развития
- [x] Создание HookLib как загрузчика кор-модов
- [x] Точка внедрения при вызове метода
- [x] Возможность вывода доступных аргументов @LocalVariable
- [x] Точка внедрения на уровне выражений
- [x] Доступ к приватным переменным
- [ ] Портируемость на новые версии Minecraft
- [ ] Аннотационный процессор для проверки на этапе компиляции
- [ ] Конфигурации для кор-модов
- [ ] Кэширование целевых классов с примененными хуками