Partial Modification Loader (PML) is a plugin loader designed for Minecraft, but could be adapted for use with other pure-Java codebases. At it's core, PML dynamically generates hooks based on what it's loaded plugins request, which reduces runtime overhead compared to more traditional mod/plugin APIs while potentially providing many times the number of hooks. For a PML plugin to request a hook, only basic information about the method to be altered is needed (class name, method name, method signature). Plugins aren't required to provide all of the basic information when registering a hook, and can choose to only give some of it, which can be used to make quick, general edits or to gloss over minor implementation issues in the base code. PML can even inject dummy methods and hooks in subclasses, upon request, to provide even more hook opportunities. As the essential point behind injecting hooks in a method is often to alter the logic, PML provides plugins with the ability to reference super methods and non-visible class members, as if their changes were a part of the original code, while having more compatibility than most alternatives. Furthermore, PML's hook system is inspired by scripting languages in general, and figuring out how they're used is relatively intuitive. If the codebase gets obfuscated, such as with Minecraft, PML can be given obfuscation mappings - it will figure everything out, letting plugin makers focus on writing more code instead of concerning about obfuscations. PML can even work through multiple layers of obfuscations, and lets it's plugins register their own obfuscation mappings. None of the obfuscation mappings need to be complete, which provides many opportunities to implementers/users.
In it's current state, PML can alter any non-initialization method (class initializers and instance initializers), and works on both static and instance methods.