-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
272 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
35 changes: 35 additions & 0 deletions
35
src/main/java/cn/stevei5mc/autorestart/command/AutoRestartCommand.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
100
src/main/java/cn/stevei5mc/autorestart/command/BaseCommand.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
56
src/main/java/cn/stevei5mc/autorestart/command/BaseSubCommand.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
37
src/main/java/cn/stevei5mc/autorestart/command/sub/Reload.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters