lillero-processor/README.md

50 lines
1.7 KiB
Markdown
Raw Permalink Normal View History

2023-02-27 10:42:05 +01:00
# Lillero-processor
Lillero-processor is an annotation processor made to simplify development of [Lillero](https://git.fantabos.co/lillero) patches, minimising the amount of boilerplate code needed.
## How to use
First things first, add the processor and its dependencies to your `build.gradle`:
```groovy
dependencies {
implementation 'ftbsc.lll:processor:0.1.0'
annotationProcessor 'com.squareup:javapoet:1.13.0'
annotationProcessor 'ftbsc:lll:0.2.1'
annotationProcessor 'ftbsc.lll:processor:0.1.0'
}
```
That's about all the effort you need to put in! Now, this:
```java
package example.patches;
import net.minecraft.client.Minecraft;
import ftbsc.lll.processor.annotations.*;
@Patch(value = Minecraft.class, reason = "crash the game as soon as it loads")
public class SamplePatch implements Opcodes {
@Target
2023-02-27 10:45:21 +01:00
public void tick() {}; //stub representing the target method, its modifiers are irrelevant
2023-02-27 10:42:05 +01:00
@Injector
public static void yourCustomInjector(ClassNode clazz, MethodNode main) {
InsnList insnList = new InsnList();
insnList.add(new InsnNode(POP));
main.instructions.insert(insnList);
}
}
```
will automatically generate:
```java
package example.patches;
import ftbsc.lll.IInjector;
public class SamplePatchInjector implements IInjector {
public String name() { return "SamplePatch"; }
public String reason() { return "crash the game as soon as it loads"; }
public String targetClass() { return "net.minecraft.client.Minecraft"; }
public String methodName() { return "func_71407_l"; } // tick()
public String methodDesc() { return "()V"; } // void, no args
public void inject(ClassNode clazz, MethodNode main) {
SamplePatch.yourCustomInjector(clazz, main);
}
}
```
Happy patching!