diff options
-rw-r--r-- | README.md | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..9719ba9 --- /dev/null +++ b/README.md @@ -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!
\ No newline at end of file |