-
Notifications
You must be signed in to change notification settings - Fork 1
Developer API

Integration guide for Bukkit-side plugins that need to interact with RedstoneReboot state or trigger restart actions.
The documented integration path accesses the RedstoneRebootPlugin instance exposed at runtime on Bukkit, Paper, and Folia servers.
Add RedstoneReboot as a soft dependency in your plugin.yml:
softdepend: [RedstoneReboot]Fetch the plugin instance at runtime:
import dev.demonz.redstonereboot.bukkit.RedstoneRebootPlugin;
import org.bukkit.plugin.java.JavaPlugin;
public final class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {
if (!getServer().getPluginManager().isPluginEnabled("RedstoneReboot")) {
return;
}
RedstoneRebootPlugin reboot = (RedstoneRebootPlugin) getServer()
.getPluginManager()
.getPlugin("RedstoneReboot");
if (reboot != null) {
getLogger().info("Hooked into RedstoneReboot " + reboot.getDescription().getVersion());
}
}
}RedstoneRebootPlugin#getRestartManager() provides access to the shared restart controller.
import dev.demonz.redstonereboot.common.manager.RestartReason;
RedstoneRebootPlugin reboot = getRebootPlugin();
boolean scheduled = reboot.getRestartManager().scheduleRestart(
300,
RestartReason.API,
"MyPlugin"
);boolean cancelled = reboot.getRestartManager().cancelRestart();boolean inProgress = reboot.getRestartManager().isRestartInProgress();
int secondsLeft = reboot.getRestartManager().getSecondsUntilRestart();
var nextRestart = reboot.getRestartManager().getNextScheduledRestart();
var info = reboot.getRestartManager().getRestartInfo();Available reasons include:
SCHEDULEDSCHEDULED_APIMANUALEMERGENCY_TPSEMERGENCY_MEMORYAPIUNKNOWN
RedstoneRebootPlugin#getServerLoadMonitor() exposes the health monitor when monitoring is enabled.
var monitor = reboot.getServerLoadMonitor();
if (monitor != null) {
double tps = monitor.getLastTPS();
double memory = monitor.getLastMemoryUsage();
boolean healthy = monitor.isHealthy();
}RedstoneRebootPlugin#getAlertManager() can be used to send player-facing notifications.
import dev.demonz.redstonereboot.common.manager.RestartReason;
var alerts = reboot.getAlertManager();
alerts.sendRestartAlert(60, RestartReason.API);
alerts.sendFinalRestartAlert(RestartReason.API);
alerts.sendRestartCancelledAlert();
alerts.sendEmergencyAlert("Custom emergency condition");
alerts.sendAlert(
"§cCustom warning message",
"§cRestart Alert",
"§eCustom subtitle"
);RedstoneRebootPlugin#getPermissionManager() exposes permission check helpers.
var permissions = reboot.getPermissionManager();
boolean canRestartNow = permissions.canRestartNow(player);
boolean canSchedule = permissions.canScheduleRestart(player);
boolean canCancel = permissions.canCancelRestart(player);
boolean canReload = permissions.canReloadConfig(player);
boolean canViewStatus = permissions.canViewStatus(player);
boolean isAdmin = permissions.hasAdminPermission(player);
boolean receivesNotifications = permissions.shouldReceiveNotifications(player);
boolean hasLuckPerms = permissions.isLuckPermsAvailable();RedstoneRebootPlugin#getConfigManager() exposes the plugin configuration wrapper.
var config = reboot.getConfigManager();
String timezone = config.getTimezone();
boolean monitoringEnabled = config.isMonitoringEnabled();
boolean emergencyEnabled = config.isEmergencyRestartEnabled();
int warningTime = config.getScheduledWarningTime();- The API is available on Bukkit, Paper, and Folia server runtimes.
- Fabric, Forge, and NeoForge builds operate as standalone server mod modules.
- Always null-check the plugin instance before accessing managers if RedstoneReboot is an optional soft dependency.