Skip to content

Commit

Permalink
添加重载配置文件命令
Browse files Browse the repository at this point in the history
  • Loading branch information
stevei5mc committed Jun 22, 2024
1 parent ff127a2 commit 08a51dd
Show file tree
Hide file tree
Showing 9 changed files with 272 additions and 9 deletions.
14 changes: 13 additions & 1 deletion src/main/java/cn/stevei5mc/autorestart/AutoRestartPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import cn.nukkit.level.Sound;
import cn.lanink.gamecore.utils.Language;
import cn.nukkit.command.CommandSender;
import cn.stevei5mc.autorestart.command.AutoRestartCommand;

import java.util.*;

Expand All @@ -15,20 +16,27 @@ public class AutoRestartPlugin extends PluginBase {
private Language language;
private String defaultLanguage;
private final HashMap<String, Language> languageMap = new HashMap<>();
private static AutoRestartPlugin instance;
private Config config;

public Config getConfig() {
return this.config;
}

public static AutoRestartPlugin getInstance() {
return instance;
}

public void onLoad() {
instance = this;
saveDefaultConfig();
saveLanguageFile();
this.config = new Config(this.getDataFolder() + "/config.yml", Config.YAML);
}

public void onEnable() {
if (this.getServer().getPluginManager().getPlugin("MemoriesOfTime-GameCore") != null) {
this.getServer().getCommandMap().register("", new AutoRestartCommand());//注册命令
restartTime = config.getInt("restart_time", 2);// 设置重启前的延迟时间(单位:分钟)
loadLanguage();
scheduleRestart();// 当插件被启用时,计划自动重启任务
Expand All @@ -37,7 +45,7 @@ public void onEnable() {
getLogger().info("§a开源链接和使用方法: §bhttps://github.com/stevei5mc/AutoRestart");
} else {
//不存在作为卸载该插件
this.getLogger().warning("§c未检测到前置插件§aTips§c,请安装§aMemoriesOfTime-GameCore§c再试!!!");
this.getLogger().warning("§c未检测到前置插件§aMemoriesOfTime-GameCore§c,请安装后再试!!!");
this.getLogger().warning("§b下载地址: §ehttps://motci.cn/job/GameCore/");
this.onDisable();
}
Expand Down Expand Up @@ -131,4 +139,8 @@ public Language getLang(CommandSender sender) {
}
return this.languageMap.get(this.defaultLanguage);
}

public void reload() {
this.config = new Config(this.getDataFolder() + "/config.yml", Config.YAML);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package cn.stevei5mc.autorestart.command;

import cn.nukkit.Player;
import cn.nukkit.command.CommandSender;
import cn.stevei5mc.autorestart.command.BaseCommand;
import cn.stevei5mc.autorestart.command.sub.Reload;
import cn.lanink.gamecore.utils.Language;
import cn.stevei5mc.autorestart.AutoRestartPlugin;
//import cn.stevei5mc.autorestart.utils.FormHelper;

/**
* @author LT_Name
*/
public class AutoRestartCommand extends BaseCommand {
protected AutoRestartPlugin main = AutoRestartPlugin.getInstance();
public AutoRestartCommand() {
super("autorestart", "AutoRestart Command");
this.setPermission("autorestart.admin");

this.addSubCommand(new Reload("reload"));
}

@Override
public void sendHelp(CommandSender sender) {
Language lang = main.getLang(sender);
sender.sendMessage("§b=== AutoRestart Command List ===");
sender.sendMessage("§a/autorestart reload "+lang.translateString("command_help_reload"));
}

/* @Override
public void sendUI(Player player) {
FormHelper.sendMain(player);
} */

}
100 changes: 100 additions & 0 deletions src/main/java/cn/stevei5mc/autorestart/command/BaseCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
package cn.stevei5mc.autorestart.command;

import cn.nukkit.Player;
import cn.nukkit.command.Command;
import cn.nukkit.command.CommandSender;
import cn.nukkit.command.data.CommandParameter;
import cn.stevei5mc.autorestart.AutoRestartPlugin;
import cn.lanink.gamecore.utils.Language;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.concurrent.ConcurrentHashMap;

/**
* @author SmallasWater
*/
public abstract class BaseCommand extends Command {

private final ArrayList<BaseSubCommand> subCommand = new ArrayList<>();
private final ConcurrentHashMap<String, Integer> subCommands = new ConcurrentHashMap<>();
protected AutoRestartPlugin main = AutoRestartPlugin.getInstance();

public BaseCommand(String name, String description) {
super(name,description);
}

/**
* 判断权限
* @param sender 玩家
* @return 是否拥有权限
*/
public boolean hasPermission(CommandSender sender) {
return sender.hasPermission(this.getPermission());
}

@Override
public boolean execute(CommandSender sender, String s, String[] args) {
Language lang = main.getLang(sender);
if(hasPermission(sender)) {
if(args.length > 0) {
String subCommand = args[0].toLowerCase();
if (subCommands.containsKey(subCommand)) {
BaseSubCommand command = this.subCommand.get(this.subCommands.get(subCommand));
if (command.canUser(sender)) {
return command.execute(sender, s, args);
}else if (sender.isPlayer()) {
sender.sendMessage(lang.translateString("command_not_permission"));
}else {
sender.sendMessage(lang.translateString("command_in_game_run"));
}
}else {
this.sendHelp(sender);
}
}else {
/* if (sender.isPlayer()) {
this.sendUI((Player) sender);
}else { */
this.sendHelp(sender);
// }
}
return true;
}
sender.sendMessage(lang.translateString("command_not_permission"));
return true;
}

/**
* 发送帮助
* @param sender 玩家
* */
public abstract void sendHelp(CommandSender sender);

/**
* 发送UI
* @param player 玩家
*/
//public abstract void sendUI(Player player);

protected void addSubCommand(BaseSubCommand cmd) {
this.subCommand.add(cmd);
int commandId = (this.subCommand.size()) - 1;
this.subCommands.put(cmd.getName().toLowerCase(), commandId);
for (String alias : cmd.getAliases()) {
this.subCommands.put(alias.toLowerCase(), commandId);
}
this.loadCommandBase();
}

private void loadCommandBase(){
this.commandParameters.clear();
for(BaseSubCommand subCommand : this.subCommand) {
LinkedList<CommandParameter> parameters = new LinkedList<>();
parameters.add(CommandParameter.newEnum(subCommand.getName(), new String[]{subCommand.getName()}));
parameters.addAll(Arrays.asList(subCommand.getParameters()));
this.commandParameters.put(subCommand.getName(),parameters.toArray(new CommandParameter[0]));
}
}

}
56 changes: 56 additions & 0 deletions src/main/java/cn/stevei5mc/autorestart/command/BaseSubCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package cn.stevei5mc.autorestart.command;

import cn.nukkit.command.CommandSender;
import cn.nukkit.command.data.CommandParameter;
import cn.stevei5mc.autorestart.AutoRestartPlugin;


/**
* @author SmallasWater
*/
public abstract class BaseSubCommand {

protected AutoRestartPlugin main = AutoRestartPlugin.getInstance();

private final String name;

protected BaseSubCommand(String name) {
this.name = name.toLowerCase();
}

/**
* @param sender CommandSender
* @return boolean
*/
public abstract boolean canUser(CommandSender sender);

/**
* 获取名称
* @return string
*/
public String getName(){
return name;
}

/**
* 获取别名
* @return string[]
*/
public abstract String[] getAliases();

/**
* 命令响应
* @param sender the sender - CommandSender
* @param args The arrugements - String[]
* @param label label..
* @return true if true
*/
public abstract boolean execute(CommandSender sender, String label, String[] args);

/**
* 指令参数.
* @return 提示参数
* */
public abstract CommandParameter[] getParameters();

}
37 changes: 37 additions & 0 deletions src/main/java/cn/stevei5mc/autorestart/command/sub/Reload.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package cn.stevei5mc.autorestart.command.sub;

import cn.nukkit.command.CommandSender;
import cn.nukkit.command.data.CommandParameter;
import cn.stevei5mc.autorestart.command.BaseSubCommand;

/**
* @author LT_Name
*/
public class Reload extends BaseSubCommand {

public Reload(String name) {
super(name);
}

@Override
public boolean canUser(CommandSender sender) {
return sender.hasPermission("autorestart.admin.reload");
}

@Override
public String[] getAliases() {
return new String[0];
}

@Override
public boolean execute(CommandSender sender, String label, String[] args) {
this.main.reload();
sender.sendMessage(main.getLang(sender).translateString("msg_command_reload_success"));
return true;
}

@Override
public CommandParameter[] getParameters() {
return new CommandParameter[0];
}
}
6 changes: 4 additions & 2 deletions src/main/resources/language/en_US.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ plugin_language=language code en_US
server_msg_restart_time=§f服务器将于 §a%1%§f 分钟后重启
restart_task_cancel=自动重启任务已取消
restart_task_rerun=自动重启任务已重新运行
restart_msg_titleeServer Restarting
restart_msg_titlecServer Restarting
restart_msg_subtitle=§eThe server restart in §6%1% §eseconds
restrat_msg_tip=§eThe server restart in §6%1% §eseconds
kick_player_msg=Server restarting, See you later
Expand All @@ -11,4 +11,6 @@ form_button_restart_cancel=取消自动重启任务
form_button_restart_run=执行自动重启任务
form_button_reload=重载配置文件
command_not_permission=§c你没有权限使用此命令!
command_in_game_run=§c请在游戏内使用此命令!
command_in_game_run=§c请在游戏内使用此命令!
command_help_reload=§e重载配置
msg_command_reload_success=§a已重载配置!
8 changes: 5 additions & 3 deletions src/main/resources/language/zh_CN.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ plugin_language=language code zh_CN
server_msg_restart_time=§f服务器将于 §a%1%§f 分钟后重启
restart_task_cancel=自动重启任务已取消
restart_task_rerun=自动重启任务已重新运行
restart_msg_titlee即将重启
restart_msg_titlec即将重启
restart_msg_subtitle=§e本分支服将在 §6%1% §e秒后重启
restrat_msg_tip=§e本分支服将在 §6%1% §e秒后重启
kick_player_msg=§e服务器重启中 稍后再会
form_title=Auto Rstart system
form_button_restart_cancel=取消自动重启任务
form_button_restart_run=执行自动重启任务
form_button_reload=重载配置文件
form_button_reload=重载配置
command_not_permission=§c你没有权限使用此命令!
command_in_game_run=§c请在游戏内使用此命令!
command_in_game_run=§c请在游戏内使用此命令!
command_help_reload=§e重载配置
msg_command_reload_success=§a已重载配置!
6 changes: 4 additions & 2 deletions src/main/resources/language/zh_TW.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ plugin_language=language code zh_TW
server_msg_restart_time=§f服务器将于 §a%1%§f 分钟后重启
restart_task_cancel=自动重启任务已取消
restart_task_rerun=自动重启任务已重新运行
restart_msg_titlee即將重啓
restart_msg_titlec即將重啓
restart_msg_subtitle=§e本分支服將在 §6%1% §e秒後重啓
restrat_msg_tip=§e本分支服將在 §6%1% §e秒後重啓
kick_player_msg=§e服務器重啓中 稍後再會
Expand All @@ -11,4 +11,6 @@ form_button_restart_cancel=取消自动重启任务
form_button_restart_run=执行自动重启任务
form_button_reload=重载配置文件
command_not_permission=§c你没有权限使用此命令!
command_in_game_run=§c请在游戏内使用此命令!
command_in_game_run=§c请在游戏内使用此命令!
command_help_reload=§e重载配置
msg_command_reload_success=§a已重载配置!
19 changes: 18 additions & 1 deletion src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,21 @@ name: AutoRestart
main: cn.stevei5mc.autorestart.AutoRestartPlugin
version: '1.0.0-SNAPSHOT'
author: stevei5mc
api: ["1.0.14"]
api: ["1.0.14"]

permissions:
autorestart.admin:
description: "NewTipsVariables插件主权限"
default: op
autorestart.admin.reload:
description: "NewTipsVariables插件重载权限"
default: op
autorestart.admin.cancel:
description: "NewTipsVariables取消重启任务权限"
default: op
autorestart.admin.rerun:
description: "NewTipsVariables重新运行重启任务权限"
default: op
autorestart.admin.restart:
description: "NewTipsVariables手动重启权限"
default: op

0 comments on commit 08a51dd

Please sign in to comment.