Custom Modules

How to create custom Mineplex Studio Modules.

Creating your own custom MineplexModules is almost effortless! Simply create a class that implements the MineplexModule interface, then register it as a MineplexModule when your project starts up using the registerModule(T) method in the MineplexModuleManager. Once your MineplexModule is registered, it is able to function as a Listener, and/or perform any custom behavior you decide to implement, either independently or in concert with other MineplexModules.

MineplexModule Interface 🔗

setup() and teardown() Methods 🔗

These methods are responsible for creating and configuring any additional resources needed by your custom MineplexModule, and for destroying and cleaning up these resources, respectively. NOTE: You do NOT need to register/unregister your MineplexModule as a Listener in these methods!

Example 🔗

Creating a MineplexModule 🔗

Let's build a very basic custom module that registers an additional Listener with itself.

@MineplexModuleImplementation(MyCustomModule.class)
public class MyCustomModule implements MineplexModule {
    private final JavaPlugin myProjectPlugin;
    private MySignListener mySignListener;

    public MyCustomModule(final JavaPlugin myProjectPlugin) {
        this.myProjectPlugin = myProjectPlugin;
    }

    @Override
    public void setup() {
        mySignListener = new MySignListener();
        Bukkit.getPluginManager().registerEvents(mySignListener, myProjectPlugin);
    }

    @Override
    public void teardown() {
        HandlerList.unregisterAll(mySignListener);
        mySignListener = null;
    }
}

Registering your MineplexModule 🔗

Now that we've created our module, we need to register it from our project class.

public class MyProject extends JavaPlugin {
    @Override
    public void onEnable() {
        MineplexModuleManager.getInstance().registerModule(new MyCustomModule(this));
    }

    @Override
    public void onDisable() {
        MineplexModuleManager.getInstance().destroyModule(MyCustomModule.class);
    }
}