chore: minor documentation improvements

This commit is contained in:
zaaarf 2023-02-07 03:01:28 +01:00
parent be0f5c58ea
commit 57ff40491b
No known key found for this signature in database
GPG key ID: AD8563472FD43386

View file

@ -3,6 +3,12 @@ package ftbsc.lll;
import org.objectweb.asm.tree.ClassNode; import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.MethodNode; import org.objectweb.asm.tree.MethodNode;
/**
* Patch classes should implement this interface and be declared as services in
* the META-INF/services folder (or through modules in Java 9+, but only Java 8
* is officially supported).
*/
public interface IInjector { public interface IInjector {
/** /**
@ -11,46 +17,46 @@ public interface IInjector {
String name(); String name();
/** /**
* @return reason for patching for this injector, for loggin * @return reason for this patch, for logging
*/ */
default String reason() { return ""; } default String reason() { return ""; }
/** /**
* This is used by the Launch Plugin to identify which classes should be * This is used by the Launch Plugin to identify which classes should be
* altered, and on which classes this injector should operate. * altered, and on which classes should this injector operate.
* * Class name should be dot-separated, for example "net.minecraft.client.Minecraft".
* Class name should be dot-separated, for example "net.minecraft.client.Minecraft" * @return class to transform
*
* @return target class to operate onto
*/ */
String targetClass(); String targetClass();
/** /**
* This is used by the Launch Plugin to identify which methods to provide * This is used by the Launch Plugin to identify the method to transform within
* to this injector for patching. It should return the Searge name of wanted function. * the class. It should return the Searge name of target.
* example: "func_71407_l", which is "tick()" on "Minecraft" class in 1.16.5 * Example: "func_71407_l", which is "tick()" on "Minecraft" class in 1.16.5
* *
* @return target method name to operate onto * @return method to transform
*/ */
String methodName(); String methodName();
/** /**
* This is used by the Launch Plugin to identify which methods to provide * This should return the target method's descriptor.
* to this injector for patching. It should return the method descriptor, with * Methods in Java may have the same name but different parameters: a descriptor
* parameters and return types. example: "()V" for void parameters and return. * compiles that information, as well as the return type, in as little space as
* * possible.
* TODO better example... * Examples:
* * (IF)V - returns void, takes in int and float
* @return target method name to operate onto * (Ljava/lang/Object;)I - returns int, takes in a java.lang.Object
* (ILjava/lang/String;)[I - returns int[], takes in an int and a String
* See <a>https://asm.ow2.io/asm4-guide.pdf</a> for a more detailed explanation.
* @return descriptor of method to target.
*/ */
String methodDesc(); String methodDesc();
/** /**
* Once the Launch Plugin has identified classes and methods for injectors, * This method will be called once the Launch Plugin has identified the right class and
* this method will be called providing the correct class and method nodes for patching. * method to patch. Override this for the actual patching.
* * @param clazz class node currently being patched
* @param clazz class node which is being patched * @param method node of method currently being patched
* @param method main method node of requested function for patching
*/ */
void inject(ClassNode clazz, MethodNode method); void inject(ClassNode clazz, MethodNode method);
} }