Learn how to create plugins using the SimplePlugin base class and understand the plugin lifecycle
The SimplePlugin class is the foundation of every plugin built with Foundation. It extends JavaPlugin and provides enhanced functionality, automatic registration, and a well-defined lifecycle.
The SimplePlugin class provides static shortcuts for common operations:
// Get plugin versionString version = SimplePlugin.getVersion(); // "1.0.0"// Get plugin nameString name = SimplePlugin.getNamed(); // "MyPlugin"// Get plugin data folderFile dataFolder = SimplePlugin.getData();// Get plugin JAR fileFile jarFile = SimplePlugin.getSource();// Check if reloadingboolean reloading = SimplePlugin.isReloading();
@Overrideprotected void onReloadablesStart() { // Register a single listener registerEvents(new MyListener()); // Register all listeners extending a class registerAllEvents(MyBaseListener.class);}
@Overrideprotected void onReloadablesStart() { // Register a single command registerCommand(new MyCommand()); // Register a command group registerCommands(new MyCommandGroup()); // Register all commands extending a class registerAllCommands(MyBaseCommand.class);}
Components registered in onReloadablesStart() are automatically managed and cleaned up during reloads.
@Overridepublic MinecraftVersion.V getMinimumVersion() { return MinecraftVersion.V.v1_8; // Require MC 1.8+}@Overridepublic MinecraftVersion.V getMaximumVersion() { return MinecraftVersion.V.v1_20; // Support up to MC 1.20}
// Reload the plugin programmaticallySimplePlugin.getInstance().reload();// Check if currently reloadingif (SimplePlugin.isReloading()) { // Handle reload state}
During reload, all reloadable components (events, commands, tasks) are automatically unregistered and re-registered. Make sure to register them in onReloadablesStart().