HookLib avatar

HookLib [1.12.2]

Введение

Данный фреймворк предназначен для создания coremods в MinecraftForge.

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

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

Начало работы

Принцип работы хуков

Для изменения существующего кода (например, из 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 {
    runs {
        client {
            property "fml.coreMods.load", "gloomyfolken.hooklib.minecraft.MainHookLoader"
        }
        server {
            property "fml.coreMods.load", "gloomyfolken.hooklib.minecraft.MainHookLoader"
        }
    }
}
  • Обновите проект в IDE.

Дальнейшее обучение

Подробности API и расширенные методы описаны в официальной вики.

Планы развития

  • <s>Реализация загрузчика coremodов</s>
  • <s>Точки внедрения при вызове методов</s>
  • <s>Доступ к локальным переменным</s>
  • <s>Точки внедрения в выражения</s>
  • <s>Доступ к приватным полям</s>
  • Портирование на новые версии Minecraft
  • Аннотационная обработка для валидации на этапе компиляции
  • Конфигурации для coremods
  • Кэширование модифицированных классов

Скачать HookLib

 
Тип Скачать Версия Загрузчик Обновлено Размер
Releasehooklib-3.17.jar1.12.2Forge13 апреля 2025309 КБ
Betahooklib 3.41.12.2Forge24 октября 2024282,3 КБ
Releasehooklib 3.71.12.2Forge24 октября 2024292 КБ
Пожалуйста авторизуйтесь, чтобы оставить свой комментарий.