Я пытаюсь изменить код времени выполнения с помощью ByteBuddy. Проблема, с которой я столкнулся, заключается в том, что когда я пытаюсь перебазировать метод, чтобы добавить вызов перехвата в конце, весь метод заменяется, и после этого не объявляется и не вызывается какой-либо метод $original().
Это код, который я использую для правильного преобразования
ByteBuddy()
.rebase(clazz)
.method(ElementMatchers.named("onEnable"))
.intercept(MethodDelegation.to(TestInjector()))
.make()
.saveIn(dataFolder)
clazz и dataFolder определены выше и не являются источником проблемы.
Это подпись метода инжектора:
public void intercept(@This JavaPlugin pl)
При анализе выводимого кода класс идентичен классу до преобразования, но весь код, который вызывался в методе onEnable, был удален и заменен делегатом одного метода. Есть ли способ, используя такой метод, сохранить существующее тело метода, но добавить вызов делегата в заголовок метода?