feat: add maintenance mode
This commit is contained in:
@@ -42,6 +42,7 @@ public final class CommandRegistry {
|
||||
register("repair", "essentialsc.command.repair", ModuleManager.PLAYER, "cn.infstar.essentialsC.commands.RepairCommand", "rep");
|
||||
register("tpsbar", "essentialsc.command.tpsbar", ModuleManager.TPSBAR, "cn.infstar.essentialsC.commands.TpsBarCommand");
|
||||
register("mobdrops", "essentialsc.mobdrops.enderman", ModuleManager.MOB_DROPS, "cn.infstar.essentialsC.commands.MobDropCommand");
|
||||
register("maintenance", "essentialsc.command.maintenance", ModuleManager.MAINTENANCE, "cn.infstar.essentialsC.commands.MaintenanceCommand", "maint");
|
||||
registerSubCommand("admin", "essentialsc.command.admin", ModuleManager.ADMIN_MODE, "cn.infstar.essentialsC.commands.AdminCommand");
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,9 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
EssentialsC.getLangManager().reload();
|
||||
plugin.getModuleManager().reload();
|
||||
CommandRegistry.clearCache();
|
||||
if (plugin.getMaintenanceManager() != null && plugin.getModuleManager().isEnabled(ModuleManager.MAINTENANCE)) {
|
||||
plugin.getMaintenanceManager().reload();
|
||||
}
|
||||
TpsBarService tpsBarService = plugin.getTpsBarManager();
|
||||
if (tpsBarService != null) {
|
||||
if (plugin.getModuleManager().isEnabled(ModuleManager.TPSBAR)) {
|
||||
@@ -65,6 +68,9 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
EssentialsC.getLangManager().reload();
|
||||
plugin.getModuleManager().reload();
|
||||
CommandRegistry.clearCache();
|
||||
if (plugin.getMaintenanceManager() != null && plugin.getModuleManager().isEnabled(ModuleManager.MAINTENANCE)) {
|
||||
plugin.getMaintenanceManager().reload();
|
||||
}
|
||||
TpsBarService tpsBarService = plugin.getTpsBarManager();
|
||||
if (tpsBarService != null) {
|
||||
if (plugin.getModuleManager().isEnabled(ModuleManager.TPSBAR)) {
|
||||
@@ -201,6 +207,10 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
otherCommands.append(lang.getString("help.commands.tpsbar")).append("\n");
|
||||
hasOtherCommands = true;
|
||||
}
|
||||
if (CommandRegistry.isAvailable("maintenance") && player.hasPermission("essentialsc.command.maintenance")) {
|
||||
otherCommands.append(lang.getString("help.commands.maintenance")).append("\n");
|
||||
hasOtherCommands = true;
|
||||
}
|
||||
|
||||
if (hasOtherCommands) {
|
||||
sendPrefixed(player, lang.getString("help.section-other"));
|
||||
@@ -272,6 +282,8 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
{"repair", "essentialsc.command.repair"},
|
||||
{"rep", "essentialsc.command.repair"},
|
||||
{"tpsbar", "essentialsc.command.tpsbar"},
|
||||
{"maintenance", "essentialsc.command.maintenance"},
|
||||
{"maint", "essentialsc.command.maintenance"},
|
||||
{"mobdrops", "essentialsc.mobdrops.enderman"},
|
||||
{"admin", "essentialsc.command.admin"},
|
||||
{"version", null},
|
||||
@@ -324,6 +336,11 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
}
|
||||
return players;
|
||||
}
|
||||
|
||||
if ((subCmd.equals("maintenance") || subCmd.equals("maint"))
|
||||
&& sender.hasPermission("essentialsc.command.maintenance")) {
|
||||
return completeMaintenanceArgs(args[1]);
|
||||
}
|
||||
}
|
||||
|
||||
return new ArrayList<>();
|
||||
@@ -339,4 +356,15 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
}
|
||||
return completions;
|
||||
}
|
||||
|
||||
private List<String> completeMaintenanceArgs(String partialInput) {
|
||||
List<String> completions = new ArrayList<>();
|
||||
String partial = partialInput.toLowerCase();
|
||||
for (String option : List.of("on", "off", "status", "reload")) {
|
||||
if (option.startsWith(partial)) {
|
||||
completions.add(option);
|
||||
}
|
||||
}
|
||||
return completions;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
package cn.infstar.essentialsC.commands;
|
||||
|
||||
import cn.infstar.essentialsC.maintenance.MaintenanceManager;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MaintenanceCommand extends BaseCommand implements TabCompleter {
|
||||
|
||||
public MaintenanceCommand() {
|
||||
super("essentialsc.command.maintenance");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean execute(Player player, String[] args) {
|
||||
return executeCommand(player, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean executeConsole(CommandSender sender, String[] args) {
|
||||
return executeCommand(sender, args);
|
||||
}
|
||||
|
||||
private boolean executeCommand(CommandSender sender, String[] args) {
|
||||
MaintenanceManager maintenanceManager = plugin.getMaintenanceManager();
|
||||
if (maintenanceManager == null) {
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.module-disabled"));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args.length == 0 || args[0].equalsIgnoreCase("status")) {
|
||||
sendStatus(sender, maintenanceManager);
|
||||
return true;
|
||||
}
|
||||
|
||||
switch (args[0].toLowerCase()) {
|
||||
case "on", "enable", "enabled" -> {
|
||||
maintenanceManager.setEnabled(true);
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.enabled"));
|
||||
return true;
|
||||
}
|
||||
case "off", "disable", "disabled" -> {
|
||||
maintenanceManager.setEnabled(false);
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.disabled"));
|
||||
return true;
|
||||
}
|
||||
case "reload" -> {
|
||||
maintenanceManager.reload();
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.reloaded"));
|
||||
return true;
|
||||
}
|
||||
default -> {
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.usage"));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void sendStatus(CommandSender sender, MaintenanceManager maintenanceManager) {
|
||||
String status = getLang().getString(maintenanceManager.isEnabled()
|
||||
? "maintenance.status.enabled"
|
||||
: "maintenance.status.disabled");
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.status",
|
||||
java.util.Map.of("status", status)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
|
||||
if (args.length != 1 || !sender.hasPermission(getPermission())) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
String partial = args[0].toLowerCase();
|
||||
List<String> completions = new ArrayList<>();
|
||||
for (String option : List.of("on", "off", "status", "reload")) {
|
||||
if (option.startsWith(partial)) {
|
||||
completions.add(option);
|
||||
}
|
||||
}
|
||||
return completions;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user