mirror of
https://github.com/zaaarf/lillero.git
synced 2024-11-24 16:34:48 +01:00
docs: updated readme
This commit is contained in:
parent
89b657d397
commit
35e958455c
1 changed files with 10 additions and 9 deletions
19
README.md
19
README.md
|
@ -1,9 +1,8 @@
|
||||||
# Lillero
|
# Lillero
|
||||||
|
|
||||||
Lillero is a lightweight and simple Java ASM patching framework built on top of [ObjectWeb's ASM library](https://asm.ow2.io/).
|
Lillero is a lightweight and simple Java ASM patching framework built on top of [ObjectWeb's ASM library](https://asm.ow2.io/).
|
||||||
|
|
||||||
## How
|
## How
|
||||||
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).
|
This library provides the core interface, `IInjector`, as well as a small set of utils to make your life easier. Your patches should implement `IInjector`.
|
||||||
|
|
||||||
Some methods *must* be implemented, specifying which class and method will be patched:
|
Some methods *must* be implemented, specifying which class and method will be patched:
|
||||||
* `targetClass()`: returns the *fully qualified name* of the class to patch (example: `net.minecraft.client.Minecraft`).
|
* `targetClass()`: returns the *fully qualified name* of the class to patch (example: `net.minecraft.client.Minecraft`).
|
||||||
|
@ -17,8 +16,7 @@ There's some more optional methods you *don't have to* implement, but really sho
|
||||||
|
|
||||||
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`).
|
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`:
|
Add this library into your build system of choice (Gradle is shown, but anything supporting Maven repositories will do):
|
||||||
|
|
||||||
```groovy
|
```groovy
|
||||||
repositories {
|
repositories {
|
||||||
maven { url = 'https://maven.fantabos.co' }
|
maven { url = 'https://maven.fantabos.co' }
|
||||||
|
@ -30,13 +28,16 @@ dependencies {
|
||||||
|
|
||||||
You are going to need an appropriate loader to use Lillero patches: **this is just a library and does nothing by itself**. You need to make it work by loading services implementing the `IInjector` interface, and by calling their `inject(ClassNode, MethodNode)` methods with the appropriate parameters.
|
You are going to need an appropriate loader to use Lillero patches: **this is just a library and does nothing by itself**. You need to make it work by loading services implementing the `IInjector` interface, and by calling their `inject(ClassNode, MethodNode)` methods with the appropriate parameters.
|
||||||
|
|
||||||
Finally, know that you can spare yourself some trouble, by using this [annotation processor](https://github.com/zaaarf/lillero-processor/) to reduce boilerplate to a minimum.
|
It should also be noted that this library will be required at runtime for your patches to function. You will either have to bundle it using [Shadow](https://github.com/johnrengelman/shadow) or similar, or get this into your runtime classpath by some other means (our [loader](https://github.com/zaaarf/lillero-loader/), for instance, takes care of this for you).
|
||||||
|
|
||||||
|
Finally, know that you can spare yourself some trouble, by using this [annotation processor](https://github.com/zaaarf/lillero-processor/) to reduce boilerplate code to a minimum.
|
||||||
|
|
||||||
#### Tips specific to Minecraft patching
|
#### Tips specific to Minecraft patching
|
||||||
* You want to be using Notch (fully obfuscated) names whenever you are told to reference a class or method by name, since those are the ones that exist at runtime.
|
* In "raw" environments, you want to be using Notch (fully obfuscated) names whenever you are told to reference a class or method by name, since those are the ones that exist at runtime.
|
||||||
- Use MCP (AKA unobfuscated) names if you are running from ForgeGradle's runClient task.
|
- Use deobfuscated names if you are running from ForgeGradle's or loom's runClient task.
|
||||||
- If you are using our loader (see below), use Searge (obfuscated but unique) names in every place you are told to use a name - ModLauncher will do the rest.
|
- If you are using our loader (see below), use intermediary (unreadable but unique) names in every place you are told to use a name - ModLauncher will do the rest.
|
||||||
* Use our [loader](https://github.com/zaaarf/lillero-loader/) that hooks into Forge's ModLauncher if you're writing a Forge mod.
|
- If you are loading this through (Fabric-ASM)[https://github.com/Chocohead/Fabric-ASM], use intermediary representation.
|
||||||
|
* Use our [loader](https://github.com/zaaarf/lillero-loader/) that hooks into Forge's ModLauncher if you're writing a modern Forge mod.
|
||||||
* Make sure to dunk on all the naysayers who tried to force you to use Mixin!
|
* Make sure to dunk on all the naysayers who tried to force you to use Mixin!
|
||||||
|
|
||||||
#### Example Minecraft patch
|
#### Example Minecraft patch
|
||||||
|
|
Loading…
Reference in a new issue