GithubHelp home page GithubHelp logo

partial-modification-loader's Introduction

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.

partial-modification-loader's People

Contributors

theweatherpony avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.