
gudASM
Модификация, которая привносит совершенно новый подход к созданию Fabric-модов - работу с байткодом на низком уровне.
В двух словах
Этот инструмент предоставляет возможность прямого манипулирования байткодом и стремится сделать этот процесс максимально простым. Рекомендуется использовать его только в тех случаях, когда стандартные миксины не способны решить поставленную задачу.
Возможности
С gudASM вы получаете практически безграничные возможности, поскольку можете редактировать классы на самом фундаментальном уровне. Главное - внимательно следить за тем, какие классы вы загружаете, и тогда всё будет работать стабильно.
Основные функции
- Прямое преобразование классов
- Обширная коллекция вспомогательных методов
- Аннотации @ForceBootstrap и @ForceInline для ситуаций, когда требуется максимальная производительность
- Настраиваемая точка входа
Как начать работу
Создайте класс, реализующий интерфейс AsmInitializer
, и укажите его в конфигурационном файле вашего мода в качестве точки входа:
{
...
"entrypoints": {
"gud_asm": [
"com.example.mod.ILikeBreakingThings"
]
},
...
}
Затем реализуйте метод AsmInitializer.onInitializeAsm()
следующим образом:
package com.example.mod;
import net.gudenau.asm.api.v0.AsmInitializer;
import net.gudenau.asm.api.v0.AsmRegistry;
public class ILikeBreakingThings implements AsmInitializer{
@Override
public void onInitializeAsm(){
AsmRegistry.getInstance().registerTransformer(new AmazingTransformer());
}
}
Дальнейшие шаги достаточно интуитивно понятны.
Важное замечание: не рекомендуется совмещать использование AsmInitializer
с другими инициализаторами, так как это может привести к нестабильной работе и сбоям.