Lillero is a lightweight and simple ASM patching framework, empowering you to easily modify block game (byte)code, dunking on all the naysayers who said you absolutely had to use Mixin
This library provides the core interface, `IInjector`, as well as a small set of utils to make your life easier. All patches should implement `IInjector` and be declared as [services](https://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html).
The following `IInjector` methods *must* be implemented
*`targetClass()`: returns the *fully qualified name* of the class to patch (example: `net.minecraft.client.Minecraft`).
*`methodName()`: returns the "Searge name" of the method to patch.
*`methodDesc()`: returns descriptor (arguments and return type) of method to patch.
*`inject(ClassNode clazz, MethodNode method)`: will be invoked providing you the ClassNode and MethodNode you requested. This is where the actual patching will happen.
There's some more optional methods you *don't have to* implement, but really should because they will make your life considerably easier when it's time to debug:
Finally, you should mark your classes as service providers, by creating a text file called `ftbsc.lll.IInjector` in `src/main/resources/META-INF/services` on your project. Inside, put the fully qualified names of your patches (example: `ftbsc.bscv.asm.patches.TestPatch$TickPatch`).
If you use Gradle (you do) don't forget to add this library as a dependency in your `build.gradle`:
**You are going to need a loader to use patches created with this library**. You can use our [lillero-loader](https://git.fantabos.co/lillero-loader/) or write your own: as long as it uses `IInjector` as patch interface, it won't break compatibility.