mirror of
https://github.com/zaaarf/lillero-processor.git
synced 2024-11-22 14:44:51 +01:00
doc: added readme
This commit is contained in:
parent
4fcba147cb
commit
cfeb940561
1 changed files with 50 additions and 0 deletions
50
README.md
Normal file
50
README.md
Normal file
|
@ -0,0 +1,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() {};
|
||||||
|
@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!
|
Loading…
Reference in a new issue