模块 mxlib.common.plugin.class_definer

Plugin Class bytecode overrider.

If you want to use this module. Let MXLib load first. (Rename MXBukkitLib.jar to 0.MXBukkitLib.jar)
Then let your plugin load after MXLib. (Rename YourPlugin.jar to 1.YourPlugin.jar)
Use it in static{} block. NOT onEnable() OR onLoad() block.


      BukkitHookToolkit.PluginPreLoadEvent.handlers.register(event->{
          System.out.println("Plugin load: " + event.getTarget());
          event.getJar().getJarStreamGetEventHandlers().register(resourceLoadEvent->{
              if(resourceLoadEvent.getPath().getName().endsWith(".class")) {
                  resourceLoadEvent.resolve(source->{
                      // @NotNull InputStream resolve(@NotNull InputStreamSuppler stream) throws IOException;

                      ClassReader reader = new ClassReader(source);
                      ClassWriter writer = new ClassWriter(0);

                      // Do class editing here.

                      return new ByteArrayInputStream(writer.toByteArray());
                  });
              }
          });
      });