blob: 2c5e7032ce61c2e2d8e818acc4d95b9b0f17f637 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# 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
public void tick() {}; //stub representing the target method, its modifiers are irrelevant
@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!
|