HookLib with anchors

7,099
324
1,509
Это юзверю конечному еще чо-то настраивать надо буит
~~~
У Аргавэйна самое норм решение без including
 
1,200
37
237
Я бы попробовал для каждого мода, требующего хуки, сделать стандарт проверки на существование, а затем на установку нужной хуклибы рядом с forge, но мейби это ядрёный костыль.
 
7,099
324
1,509
Фича Shift.INSTEAD реализована!
 
7,099
324
1,509
Добавил возможность подключать хуклибу через gradle
 
7,099
324
1,509
Присваивание полю? А какой смысл генерировать этот код хуклибой, если можно написать руками прямо в хуке? Если поле приватное - можно юзать АТ
 

tox1cozZ

aka Agravaine
8,454
598
2,890
А как я якорем перед/вместо/после нужного поля ставлю хук?
Та и, например, нужно вместо этого присваивания вставить хук, а в хуке уже добавить какуе-то проверку и присвоить поле.
 
7,099
324
1,509
Ааа, это цель для якоря.
Типо есть
player.inventory.currentItem = x;
А применение хука делает
player.inventory.currentItem = hook(other, arguments... , x);
 
7,099
324
1,509
Выше приведен вариант вместо
 
7,099
324
1,509
Тогда хуку нужно будет вернуть player.inventory.currentItem - тоже самое значение
 
7,099
324
1,509
Конечно. Фича полезная
 
7,099
324
1,509
Кто-нить пользуется фичей приоритета? Не обязательно в моем форке
 
Типо есть
player.inventory.currentItem = x;
А применение хука делает
player.inventory.currentItem = hook(other, arguments... , x);
Добрый день. Насколько я понимаю, данная возможность еще не реализована? И, получается, нет возможности в примере ниже заменить вызов targetMethod на вызов моего метода, кроме как хукнуть весь someMethod, скопировав полностью его код и заменив нужную часть, верно?

Java:
public void someMethod() {
    ... // some code
    int i = targetMethod();
    ... // some code
}
 
7,099
324
1,509
Еще можно хукнуть targetMethod и заменить его возвращаемое значение
 
В таком случае во всех местах использования targetMethod будет другое значение, а нужно лишь в одном.
 
7,099
324
1,509
Можно сделать следующий дикий костыль:
Из Thread.currentThread().getStackTrace() определить, кто вызывает targetMethod
И возвращать свое значение только если вызывающий someMethod
 
Сверху