1
0
mirror of https://e.coding.net/circlecloud/Residence.git synced 2025-11-26 22:06:07 +00:00

convert command to subclass...

Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
502647092
2015-09-23 20:56:52 +08:00
parent 371be069c6
commit 6b0f5ac789
9 changed files with 475 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
package com.bekvon.bukkit.residence.commandmain;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandException;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import com.bekvon.bukkit.residence.Residence;
import com.bekvon.bukkit.residence.chat.ChatChannel;
import cn.citycraft.PluginHelper.commands.BaseCommand;
public class CommandRc extends BaseCommand {
Residence plugin;
public CommandRc(Residence plugin) {
super("rc");
this.plugin = plugin;
setOnlyPlayerExecutable(true);
}
@Override
public void execute(CommandSender sender, Command command, String label, String[] args) throws CommandException {
String pname = sender.getName();
if (Residence.getConfigManager().chatEnabled()) {
if (args.length == 0)
Residence.getPlayerListener().tooglePlayerResidenceChat((Player) sender);
else {
String area = Residence.getPlayerListener().getCurrentResidenceName(pname);
if (area != null) {
ChatChannel channel = Residence.getChatManager().getChannel(area);
if (channel != null) {
String message = "";
for (String arg : args)
message = message + " " + arg;
channel.chat(pname, message);
} else
sender.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidChannel"));
} else
sender.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NotInResidence"));
}
} else
sender.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ChatDisabled"));
}
}

View File

@@ -0,0 +1,88 @@
package com.bekvon.bukkit.residence.commandmain;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandException;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import com.bekvon.bukkit.residence.Residence;
import com.bekvon.bukkit.residence.commandsub.CommandConfirm;
import com.bekvon.bukkit.residence.commandsub.CommandRemove;
import com.bekvon.bukkit.residence.commandsub.CommandSetOwner;
import com.bekvon.bukkit.residence.commandsub.CommandVersion;
import cn.citycraft.PluginHelper.commands.BaseCommand;
import cn.citycraft.PluginHelper.commands.HandlerSubCommand;
public class CommandRes extends BaseCommand {
Residence plugin;
HandlerSubCommand hdsubcmd;
public CommandRes(Residence plugin) {
super("res", "residence", "resadmin");
this.plugin = plugin;
hdsubcmd = new HandlerSubCommand(plugin);
hdsubcmd.registerCommand(new CommandConfirm(plugin));
hdsubcmd.registerCommand(new CommandRemove(plugin));
hdsubcmd.registerCommand(new CommandVersion(plugin));
hdsubcmd.registerCommand(new CommandSetOwner(plugin));
// Player player = null;
// boolean resadmin = (command != null);
// ResidenceManager rmanager = Residence.getResidenceManager();
// Map<String, String> deleteConfirm = plugin.deleteConfirm;
// Language language = Residence.getLanguage();
plugin.getCommand("residence").setTabCompleter(hdsubcmd);
}
@Override
public void execute(CommandSender sender, Command command, String label, String[] args) throws CommandException {
boolean resadmin = false;
if (sender instanceof Player) {
if (label.equalsIgnoreCase("resadmin"))
if (Residence.getPermissionManager().isResidenceAdmin((Player) sender))
resadmin = true;
else
sender.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NonAdmin"));
} else
resadmin = true;
if (args.length > 0 && args[args.length - 1].equalsIgnoreCase("?") || args.length > 1 && args[args.length - 2].equals("?")) {
commandHelp(args, resadmin, sender);
return;
}
if (Residence.getConfigManager().allowAdminsOnly())
if (!resadmin) {
sender.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AdminOnly"));
return;
}
if (args.length == 0)
return;
hdsubcmd.onCommand(sender, resadmin ? command : null, label, args);
}
private boolean commandHelp(String[] args, boolean resadmin, CommandSender sender) {
if (Residence.helppages != null) {
String helppath = "res";
for (String arg : args) {
if (arg.equalsIgnoreCase("?"))
break;
helppath = helppath + "." + arg;
}
int page = 1;
if (!args[args.length - 1].equalsIgnoreCase("?"))
try {
page = Integer.parseInt(args[args.length - 1]);
} catch (Exception ex) {
sender.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidHelp"));
}
if (Residence.helppages.containesEntry(helppath)) {
Residence.helppages.printHelp(sender, page, helppath);
return true;
}
}
return false;
}
}

View File

@@ -0,0 +1,37 @@
package com.bekvon.bukkit.residence.commandmain;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandException;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import com.bekvon.bukkit.residence.Residence;
import cn.citycraft.PluginHelper.commands.BaseCommand;
public class CommandResLoad extends BaseCommand {
Residence plugin;
public CommandResLoad(Residence plugin) {
super("resreload");
this.plugin = plugin;
}
@Override
public void execute(CommandSender sender, Command command, String label, String[] args) throws CommandException {
if (!(sender instanceof Player) || Residence.getPermissionManager().isResidenceAdmin((Player) sender))
try {
plugin.loadYml();
sender.sendMessage(ChatColor.GREEN + "[Residence] 从配置保存文件重新载入数据...");
} catch (Exception ex) {
sender.sendMessage(ChatColor.RED + "[Residence] 无法从配置保存文件重新载入数据, 请查看控制台异常信息!");
sender.sendMessage(ChatColor.RED + "[Residence] 异常: " + ex.getMessage());
Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

View File

@@ -0,0 +1,36 @@
package com.bekvon.bukkit.residence.commandmain;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandException;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import com.bekvon.bukkit.residence.Residence;
import cn.citycraft.PluginHelper.commands.BaseCommand;
public class CommandResReload extends BaseCommand {
Residence plugin;
public CommandResReload(Residence plugin) {
super("resreload");
this.plugin = plugin;
}
@Override
public void execute(CommandSender sender, Command command, String label, String[] args) throws CommandException {
if (sender instanceof Player) {
Player player = (Player) sender;
if (Residence.getPermissionManager().isResidenceAdmin(player)) {
plugin.reloadPlugin();
sender.sendMessage(ChatColor.GREEN + "[Residence] 重载配置文件.");
System.out.println("[Residence] 重载 by " + player.getName() + ".");
}
} else {
plugin.reloadPlugin();
System.out.println("[Residence] 重载 by 控制台.");
}
}
}

View File

@@ -0,0 +1,32 @@
package com.bekvon.bukkit.residence.commandmain;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandException;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import com.bekvon.bukkit.residence.Residence;
import cn.citycraft.PluginHelper.commands.BaseCommand;
public class CommandResWorld extends BaseCommand {
Residence plugin;
public CommandResWorld(Residence plugin) {
super("resworld");
this.plugin = plugin;
setMinimumArguments(2);
setPossibleArguments("remove <世界名称>");
}
@Override
public void execute(CommandSender sender, Command command, String label, String[] args) throws CommandException {
if (args[0].equalsIgnoreCase("remove"))
if (sender instanceof ConsoleCommandSender)
Residence.getResidenceManager().removeAllFromWorld(sender, args[1]);
else
sender.sendMessage(ChatColor.RED + "当前命令必须从控制台执行.");
}
}