From d62a7a1e57d0de0ffba462d41e553edaefa7690d Mon Sep 17 00:00:00 2001 From: 502647092 Date: Thu, 24 Sep 2015 18:11:57 +0800 Subject: [PATCH] complete all command... Signed-off-by: 502647092 --- .../residence/commandsub/CommandArea.java | 93 ++++++++ .../residence/commandsub/CommandBank.java | 54 +++++ .../residence/commandsub/CommandCheck.java | 54 +++++ .../commandsub/CommandClearFlags.java | 47 ++++ .../residence/commandsub/CommandCompass.java | 53 +++++ .../residence/commandsub/CommandCreate.java | 48 ++++ .../residence/commandsub/CommandCurrent.java | 37 +++ .../residence/commandsub/CommandDefault.java | 34 +++ .../residence/commandsub/CommandGive.java | 33 +++ .../residence/commandsub/CommandGset.java | 53 +++++ .../residence/commandsub/CommandInfo.java | 45 ++++ .../residence/commandsub/CommandKick.java | 58 +++++ .../residence/commandsub/CommandLease.java | 99 ++++++++ .../residence/commandsub/CommandLimits.java | 28 +++ .../residence/commandsub/CommandList.java | 50 ++++ .../residence/commandsub/CommandListAll.java | 35 +++ .../commandsub/CommandListAllHidden.java | 46 ++++ .../commandsub/CommandListHidden.java | 54 +++++ .../residence/commandsub/CommandLists.java | 81 +++++++ .../residence/commandsub/CommandLset.java | 74 ++++++ .../residence/commandsub/CommandMarket.java | 223 ++++++++++++++++++ .../residence/commandsub/CommandMaterial.java | 40 ++++ .../residence/commandsub/CommandMessage.java | 50 ++++ .../residence/commandsub/CommandMirror.java | 31 +++ .../residence/commandsub/CommandPset.java | 69 ++++++ .../commandsub/CommandRemoveAll.java | 41 ++++ .../residence/commandsub/CommandRename.java | 32 +++ .../commandsub/CommandRenameArea.java | 41 ++++ .../residence/commandsub/CommandSelect.java | 164 +++++++++++++ .../residence/commandsub/CommandServer.java | 47 ++++ .../residence/commandsub/CommandSet.java | 51 ++++ .../residence/commandsub/CommandSubList.java | 54 +++++ .../residence/commandsub/CommandSubZone.java | 69 ++++++ .../residence/commandsub/CommandTool.java | 37 +++ .../residence/commandsub/CommandTp.java | 42 ++++ .../residence/commandsub/CommandTpSet.java | 41 ++++ .../residence/commandsub/CommandUnStuck.java | 48 ++++ 37 files changed, 2156 insertions(+) create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandArea.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandBank.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCheck.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandClearFlags.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCompass.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCreate.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCurrent.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandDefault.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandGive.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandGset.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandInfo.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandKick.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLease.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLimits.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandList.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandListAll.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandListAllHidden.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandListHidden.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLists.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLset.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMarket.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMaterial.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMessage.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMirror.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandPset.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRemoveAll.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRename.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRenameArea.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSelect.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandServer.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSet.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSubList.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSubZone.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandTool.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandTp.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandTpSet.java create mode 100644 src/main/java/com/bekvon/bukkit/residence/commandsub/CommandUnStuck.java diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandArea.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandArea.java new file mode 100644 index 0000000..e0afb5f --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandArea.java @@ -0,0 +1,93 @@ +package com.bekvon.bukkit.residence.commandsub; + +import org.bukkit.Bukkit; +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.CuboidArea; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.selection.SelectionManager; +import com.bekvon.bukkit.residence.text.Language; +import com.sk89q.worldedit.bukkit.WorldEditPlugin; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandArea extends BaseCommand { + Residence plugin; + + public CommandArea(final Residence plugin) { + super("area"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(3); + setPossibleArguments(" <领地名称> [区域名称]"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + final SelectionManager smanager = plugin.getSelectionManager(); + final WorldEditPlugin wep = (WorldEditPlugin) Bukkit.getServer().getPluginManager().getPlugin("WorldEdit"); + int page = 1; + try { + if (args.length > 0) { + page = Integer.parseInt(args[args.length - 1]); + } + } catch (final Exception ex) { + } + + final String subcmd = args[0]; + + final ClaimedResidence res = rmanager.getByName(args[1]); + + if (res == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + return; + } + if (wep != null) { + if (wep.getConfig().getInt("wand-item") == plugin.getConfigManager().getSelectionTooldID()) { + smanager.worldEdit(player); + } + } + if (args.length == 2) { + switch (subcmd) { + case "list": + res.printAreaList(player, page); + return; + case "listall": + res.printAdvancedAreaList(player, page); + return; + } + } + if (args.length == 3) { + switch (subcmd) { + case "add": + if (smanager.hasPlacedBoth(player.getName())) { + res.addArea(player, new CuboidArea(smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName())), args[2], resadmin); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints")); + } + return; + case "remove": + res.removeArea(player, args[2], resadmin); + return; + case "replace": + if (smanager.hasPlacedBoth(player.getName())) { + res.replaceArea(player, new CuboidArea(smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName())), args[2], resadmin); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints")); + } + return; + } + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandBank.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandBank.java new file mode 100644 index 0000000..1a53100 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandBank.java @@ -0,0 +1,54 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandBank extends BaseCommand { + Residence plugin; + + public CommandBank(final Residence plugin) { + super("bank"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(2); + setPossibleArguments("[deposit(存入)|withdraw(取出)] 金额"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + final ClaimedResidence res = rmanager.getByName(plugin.getPlayerListener().getCurrentResidenceName(player.getName())); + if (res == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence")); + return; + } + int amount = 0; + try { + amount = Integer.parseInt(args[1]); + } catch (final Exception ex) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidAmount")); + return; + } + final String subcmd = args[0]; + switch (subcmd) { + case "deposit": + res.getBank().deposit(player, amount, resadmin); + case "withdraw": + res.getBank().withdraw(player, amount, resadmin); + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCheck.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCheck.java new file mode 100644 index 0000000..1686e6b --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCheck.java @@ -0,0 +1,54 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandCheck extends BaseCommand { + Residence plugin; + + public CommandCheck(final Residence plugin) { + super("check"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(2); + setPossibleArguments("<领地名称> <权限> [玩家]"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + String pname = player.getName(); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + + if (args.length == 2 || args.length == 3) { + if (args.length == 3) { + pname = args[2]; + } + final ClaimedResidence res = rmanager.getByName(args[0]); + if (res == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + return; + } + if (!res.getPermissions().hasApplicableFlag(pname, args[1])) { + player.sendMessage(language.getPhrase("FlagCheckFalse", + ChatColor.YELLOW + args[0] + ChatColor.RED + "." + ChatColor.YELLOW + pname + ChatColor.RED + "." + ChatColor.YELLOW + args[0] + ChatColor.RED)); + } else { + player.sendMessage( + language.getPhrase("FlagCheckTrue", ChatColor.GREEN + args[0] + ChatColor.YELLOW + "." + ChatColor.GREEN + pname + ChatColor.YELLOW + "." + ChatColor.YELLOW + args[0] + + ChatColor.RED + "." + (res.getPermissions().playerHas(pname, res.getPermissions().getWorld(), args[1], false) ? ChatColor.GREEN + "TRUE" : ChatColor.RED + "FALSE"))); + } + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandClearFlags.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandClearFlags.java new file mode 100644 index 0000000..bcdecf3 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandClearFlags.java @@ -0,0 +1,47 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandClearFlags extends BaseCommand { + Residence plugin; + + public CommandClearFlags(final Residence plugin) { + super("clearflags"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(1); + setPossibleArguments("<领地名称>"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + + if (!resadmin) { + player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); + return; + } + final ClaimedResidence area = rmanager.getByName(args[1]); + if (area != null) { + area.getPermissions().clearFlags(); + player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagsCleared")); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCompass.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCompass.java new file mode 100644 index 0000000..da0c807 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCompass.java @@ -0,0 +1,53 @@ +package com.bekvon.bukkit.residence.commandsub; + +import org.bukkit.ChatColor; +import org.bukkit.Location; +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.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandCompass extends BaseCommand { + Residence plugin; + + public CommandCompass(final Residence plugin) { + super("compass", "cp"); + this.plugin = plugin; + setDescription("切换指南针方向"); + setOnlyPlayerExecutable(true); + setPossibleArguments("[领地名称]"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + + if (args.length != 1) { + player.setCompassTarget(player.getWorld().getSpawnLocation()); + player.sendMessage(ChatColor.GREEN + language.getPhrase("CompassTargetReset")); + return; + } + final String resname = args[0]; + + if (rmanager.getByName(resname) != null) { + if (rmanager.getByName(resname).getWorld().equalsIgnoreCase(player.getWorld().getName())) { + final Location low = rmanager.getByName(resname).getArea("main").getLowLoc(); + final Location high = rmanager.getByName(resname).getArea("main").getHighLoc(); + final Location mid = new Location(low.getWorld(), (low.getBlockX() + high.getBlockX()) / 2, (low.getBlockY() + high.getBlockY()) / 2, (low.getBlockZ() + high.getBlockZ()) / 2); + player.setCompassTarget(mid); + player.sendMessage(ChatColor.GREEN + language.getPhrase("CompassTargetSet", ChatColor.YELLOW + resname + ChatColor.GREEN)); + } + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCreate.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCreate.java new file mode 100644 index 0000000..a7142ed --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCreate.java @@ -0,0 +1,48 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ResidenceManager; +import com.bekvon.bukkit.residence.selection.SelectionManager; +import com.bekvon.bukkit.residence.text.Language; +import com.sk89q.worldedit.bukkit.WorldEditPlugin; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandCreate extends BaseCommand { + Residence plugin; + + public CommandCreate(final Residence plugin) { + super("create", "new"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(1); + setPossibleArguments("<领地名称>"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + final SelectionManager smanager = plugin.getSelectionManager(); + final WorldEditPlugin wep = (WorldEditPlugin) plugin.getServer().getPluginManager().getPlugin("WorldEdit"); + if (wep != null) { + if (wep.getConfig().getInt("wand-item") == plugin.getConfigManager().getSelectionTooldID()) { + smanager.worldEdit(player); + } + } + if (smanager.hasPlacedBoth(player.getName())) { + rmanager.addResidence(player, args[0], smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName()), resadmin); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints")); + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCurrent.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCurrent.java new file mode 100644 index 0000000..bfc0169 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandCurrent.java @@ -0,0 +1,37 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandCurrent extends BaseCommand { + Residence plugin; + + public CommandCurrent(final Residence plugin) { + super("current"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + final String res = rmanager.getNameByLoc(player.getLocation()); + if (res == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence")); + } else { + player.sendMessage(ChatColor.GREEN + language.getPhrase("InResidence", ChatColor.YELLOW + res + ChatColor.GREEN)); + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandDefault.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandDefault.java new file mode 100644 index 0000000..6850beb --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandDefault.java @@ -0,0 +1,34 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandDefault extends BaseCommand { + Residence plugin; + + public CommandDefault(final Residence plugin) { + super("default"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(1); + setPossibleArguments("<领地名称>"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final ClaimedResidence res = rmanager.getByName(args[0]); + res.getPermissions().applyDefaultFlags(player, resadmin); + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandGive.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandGive.java new file mode 100644 index 0000000..51bc8e0 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandGive.java @@ -0,0 +1,33 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ResidenceManager; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandGive extends BaseCommand { + Residence plugin; + + public CommandGive(final Residence plugin) { + super("give"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(2); + setPossibleArguments("<目标玩家> <赠送的领地>"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + + rmanager.giveResidence(player, args[1], args[0], resadmin); + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandGset.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandGset.java new file mode 100644 index 0000000..5d24c85 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandGset.java @@ -0,0 +1,53 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandGset extends BaseCommand { + Residence plugin; + + public CommandGset(final Residence plugin) { + super("gset"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(3); + setPossibleArguments("<领地名称(不写则为所在领地)> <组名称> <权限> <权限状态>"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + + if (args.length == 3) { + final ClaimedResidence area = rmanager.getByLoc(player.getLocation()); + if (area != null) { + area.getPermissions().setGroupFlag(player, args[0], args[1], args[2], resadmin); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidArea")); + } + return; + } else if (args.length == 4) { + final ClaimedResidence area = rmanager.getByName(args[0]); + if (area != null) { + area.getPermissions().setGroupFlag(player, args[1], args[2], args[3], resadmin); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + } + return; + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandInfo.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandInfo.java new file mode 100644 index 0000000..d96dd46 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandInfo.java @@ -0,0 +1,45 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandInfo extends BaseCommand { + Residence plugin; + + public CommandInfo(final Residence plugin) { + super("info"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + + if (args.length == 0) { + final String area = rmanager.getNameByLoc(player.getLocation()); + if (area != null) { + rmanager.printAreaInfo(area, player); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + } + } else { + if (args.length == 1) { + rmanager.printAreaInfo(args[0], player); + } + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandKick.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandKick.java new file mode 100644 index 0000000..fb97d5c --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandKick.java @@ -0,0 +1,58 @@ +package com.bekvon.bukkit.residence.commandsub; + +import org.bukkit.Bukkit; +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.permissions.PermissionGroup; +import com.bekvon.bukkit.residence.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandKick extends BaseCommand { + Residence plugin; + + public CommandKick(final Residence plugin) { + super("kick"); + this.plugin = plugin; + setMinimumArguments(1); + setOnlyPlayerExecutable(true); + setPossibleArguments("<目标玩家>"); + setDescription("把玩家T出当前领地!"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + final PermissionGroup group = plugin.getPermissionManager().getGroup(player); + + final Player targetplayer = Bukkit.getPlayer(args[0]); + if (targetplayer == null) { + return; + } + if (!group.hasKickAccess()) { + player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); + return; + } + final ClaimedResidence res = rmanager.getByLoc(targetplayer.getLocation()); + if (res == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + return; + } + if (res.getOwner().equals(player.getName())) { + if (res.getPlayersInResidence().contains(targetplayer)) { + targetplayer.teleport(res.getOutsideFreeLoc(player.getLocation())); + targetplayer.sendMessage(ChatColor.RED + language.getPhrase("Kicked") + "!"); + } + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLease.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLease.java new file mode 100644 index 0000000..bb267e4 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLease.java @@ -0,0 +1,99 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.LeaseManager; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandLease extends BaseCommand { + Residence plugin; + + public CommandLease(final Residence plugin) { + super("?"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(2); + setPossibleArguments("[renew/cost] [领地名]"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + final LeaseManager leasemanager = plugin.getLeaseManager(); + + if (args.length == 1 || args.length == 2) { + if (args[0].equals("renew")) { + if (args.length == 2) { + leasemanager.renewArea(args[1], player); + } else { + leasemanager.renewArea(rmanager.getNameByLoc(player.getLocation()), player); + } + return; + } else if (args[0].equals("cost")) { + if (args.length == 2) { + final ClaimedResidence res = plugin.getResidenceManager().getByName(args[1]); + if (res == null || leasemanager.leaseExpires(args[1])) { + final int cost = leasemanager.getRenewCost(res); + player.sendMessage(ChatColor.YELLOW + language.getPhrase("LeaseRenewalCost", ChatColor.RED + args[1] + ChatColor.YELLOW + "." + ChatColor.RED + cost + ChatColor.YELLOW)); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("LeaseNotExpire")); + } + return; + } else { + final String area = rmanager.getNameByLoc(player.getLocation()); + final ClaimedResidence res = rmanager.getByName(area); + if (area == null || res == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidArea")); + return; + } + if (leasemanager.leaseExpires(area)) { + final int cost = leasemanager.getRenewCost(res); + player.sendMessage(ChatColor.YELLOW + language.getPhrase("LeaseRenewalCost", ChatColor.RED + area + ChatColor.YELLOW + "." + ChatColor.RED + cost + ChatColor.YELLOW)); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("LeaseNotExpire")); + } + return; + } + } + } else if (args.length == 3) { + if (args[0].equals("set")) { + if (!resadmin) { + player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); + return; + } + if (args[2].equals("infinite")) { + if (leasemanager.leaseExpires(args[1])) { + leasemanager.removeExpireTime(args[1]); + player.sendMessage(ChatColor.GREEN + language.getPhrase("LeaseInfinite")); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("LeaseNotExpire")); + } + return; + } else { + int days; + try { + days = Integer.parseInt(args[2]); + } catch (final Exception ex) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidDays")); + return; + } + leasemanager.setExpireTime(player, args[1], days); + return; + } + } + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLimits.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLimits.java new file mode 100644 index 0000000..d60a56d --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLimits.java @@ -0,0 +1,28 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.permissions.PermissionManager; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandLimits extends BaseCommand { + Residence plugin; + + public CommandLimits(final Residence plugin) { + super("limits"); + this.plugin = plugin; + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final PermissionManager gmanager = plugin.getPermissionManager(); + gmanager.getGroup(player).printLimits(player); + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandList.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandList.java new file mode 100644 index 0000000..762ce97 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandList.java @@ -0,0 +1,50 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ResidenceManager; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandList extends BaseCommand { + Residence plugin; + + public CommandList(final Residence plugin) { + super("list"); + this.plugin = plugin; + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final ResidenceManager rmanager = plugin.getResidenceManager(); + int page = 1; + try { + if (args.length > 0) { + page = Integer.parseInt(args[args.length - 1]); + } + } catch (final Exception ex) { + } + switch (args.length) { + case 0: + rmanager.listResidences(player); + return; + case 1: + try { + Integer.parseInt(args[1]); + rmanager.listResidences(player, page); + } catch (final Exception ex) { + rmanager.listResidences(player, args[1]); + } + return; + case 2: + rmanager.listResidences(player, args[1], page); + return; + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandListAll.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandListAll.java new file mode 100644 index 0000000..4554929 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandListAll.java @@ -0,0 +1,35 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ResidenceManager; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandListAll extends BaseCommand { + Residence plugin; + + public CommandListAll(final Residence plugin) { + super("listall"); + this.plugin = plugin; + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final ResidenceManager rmanager = plugin.getResidenceManager(); + int page = 1; + try { + if (args.length > 0) { + page = Integer.parseInt(args[args.length - 1]); + } + } catch (final Exception ex) { + } + rmanager.listAllResidences(player, page); + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandListAllHidden.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandListAllHidden.java new file mode 100644 index 0000000..98c5991 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandListAllHidden.java @@ -0,0 +1,46 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandListAllHidden extends BaseCommand { + Residence plugin; + + public CommandListAllHidden(final Residence plugin) { + super("listallhidden"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + + int page = 1; + try { + if (args.length > 0) { + page = Integer.parseInt(args[args.length - 1]); + } + } catch (final Exception ex) { + } + + if (!resadmin) { + player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); + return; + } + rmanager.listAllResidences(player, page, true); + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandListHidden.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandListHidden.java new file mode 100644 index 0000000..68c0669 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandListHidden.java @@ -0,0 +1,54 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandListHidden extends BaseCommand { + Residence plugin; + + public CommandListHidden(final Residence plugin) { + super("listhidden"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + + int page = 1; + try { + if (args.length > 0) { + page = Integer.parseInt(args[args.length - 1]); + } + } catch (final Exception ex) { + } + + if (!resadmin) { + player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); + return; + } + + switch (args.length) { + case 0: + rmanager.listResidences(player, 1, true); + return; + case 2: + rmanager.listResidences(player, args[1], page, true); + return; + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLists.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLists.java new file mode 100644 index 0000000..c5d85fc --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLists.java @@ -0,0 +1,81 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.FlagPermissions; +import com.bekvon.bukkit.residence.protection.PermissionListManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandLists extends BaseCommand { + Residence plugin; + + public CommandLists(final Residence plugin) { + super("lists"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(1); + setPossibleArguments("用法: /res lists ? 查看帮助"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final Language language = plugin.getLanguage(); + final PermissionListManager pmanager = plugin.getPermissionListManager(); + final String listname = args[1]; + + switch (args[0]) { + case "list": + pmanager.printLists(player); + return; + case "add": + if (args.length != 2) { + pmanager.makeList(player, listname); + } + return; + case "remove": + if (args.length != 2) { + pmanager.removeList(player, listname); + } + return; + case "apply": + if (args.length == 3) { + pmanager.applyListToResidence(player, listname, args[2], resadmin); + } + return; + case "set": + if (args.length == 4) { + pmanager.getList(player.getName(), listname).setFlag(args[3], FlagPermissions.stringToFlagState(args[4])); + player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet")); + } + return; + case "pset": + if (args.length != 5) { + pmanager.getList(player.getName(), listname).setGroupFlag(args[3], args[4], FlagPermissions.stringToFlagState(args[5])); + player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet")); + } + return; + + case "gset": + if (args.length != 5) { + pmanager.getList(player.getName(), listname).setPlayerFlag(args[3], args[4], FlagPermissions.stringToFlagState(args[5])); + player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet")); + } + return; + case "view": + if (args.length != 2) { + pmanager.printList(player, listname); + } + return; + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLset.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLset.java new file mode 100644 index 0000000..361ff79 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandLset.java @@ -0,0 +1,74 @@ +package com.bekvon.bukkit.residence.commandsub; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandLset extends BaseCommand { + Residence plugin; + + public CommandLset(final Residence plugin) { + super("lset"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(2); + setPossibleArguments("<领地名称> [blacklist(bl)/ignorelist(il)||info] [material]"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + + final ClaimedResidence res = rmanager.getByName(args[0]); + + if (res == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + return; + } + + Material mat = null; + + if (args.length == 3) { + try { + mat = Material.valueOf(args[3].toUpperCase()); + } catch (final Exception ex) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMaterial")); + return; + } + } + + final String subcmd = args[1]; + + switch (subcmd) { + + case "info": + player.sendMessage(ChatColor.RED + "Blacklist:"); + res.getItemBlacklist().printList(player); + player.sendMessage(ChatColor.GREEN + "Ignorelist:"); + res.getItemIgnoreList().printList(player); + return; + case "bl": + case "blacklist": + res.getItemBlacklist().playerListChange(player, mat, resadmin); + return; + case "il": + case "ignorelist": + res.getItemIgnoreList().playerListChange(player, mat, resadmin); + return; + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMarket.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMarket.java new file mode 100644 index 0000000..b006ec0 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMarket.java @@ -0,0 +1,223 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.ConfigManager; +import com.bekvon.bukkit.residence.Residence; +import com.bekvon.bukkit.residence.economy.TransactionManager; +import com.bekvon.bukkit.residence.economy.rent.RentManager; +import com.bekvon.bukkit.residence.permissions.PermissionManager; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.selection.SelectionManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandMarket extends BaseCommand { + ConfigManager cmanager; + PermissionManager gmanager; + Language language; + Residence plugin; + RentManager rentmanager; + ResidenceManager rmanager; + SelectionManager smanager; + TransactionManager tmanager; + + public CommandMarket(final Residence plugin) { + super("market"); + this.plugin = plugin; + rmanager = plugin.getResidenceManager(); + language = plugin.getLanguage(); + smanager = plugin.getSelectionManager(); + gmanager = plugin.getPermissionManager(); + rentmanager = plugin.getRentManager(); + cmanager = plugin.getConfigManager(); + tmanager = plugin.getTransactionManager(); + setOnlyPlayerExecutable(true); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + int page = 1; + try { + if (args.length > 0) { + page = Integer.parseInt(args[args.length - 1]); + } + } catch (final Exception ex) { + } + + final String cmd = args[0].toLowerCase(); + if (cmd.equals("list")) { + commandResMarketList(args, resadmin, player, page); + return; + } + if (cmd.equals("autorenew")) { + commandResMarketAutorenew(args, resadmin, player, page); + return; + } + if (cmd.equals("rentable")) { + commandResMarketRentable(args, resadmin, player, page); + return; + } + if (cmd.equals("rent")) { + commandResMarketRent(args, resadmin, player, page); + return; + } + + if (cmd.equals("release")) { + if (args.length != 3) { + return; + } + if (rentmanager.isRented(args[2])) { + rentmanager.removeFromForRent(player, args[2], resadmin); + } else { + rentmanager.unrent(player, args[2], resadmin); + } + return; + } + if (cmd.equals("info")) { + if (args.length == 2) { + final String areaname = rmanager.getNameByLoc(player.getLocation()); + tmanager.viewSaleInfo(areaname, player); + if (cmanager.enabledRentSystem() && rentmanager.isForRent(areaname)) { + rentmanager.printRentInfo(player, areaname); + } + } else if (args.length == 3) { + tmanager.viewSaleInfo(args[2], player); + if (cmanager.enabledRentSystem() && rentmanager.isForRent(args[2])) { + rentmanager.printRentInfo(player, args[2]); + } + } else { + return; + } + return; + } + if (cmd.equals("buy")) { + if (args.length != 3) { + return; + } + tmanager.buyPlot(args[2], player, resadmin); + return; + } + if (cmd.equals("unsell")) { + if (args.length != 3) { + return; + } + tmanager.removeFromSale(player, args[2], resadmin); + return; + } + if (cmd.equals("sell")) { + if (args.length != 4) { + return; + } + int amount; + try { + amount = Integer.parseInt(args[3]); + } catch (final Exception ex) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidAmount")); + return; + } + tmanager.putForSale(args[2], player, amount, resadmin); + return; + } + } + + private boolean commandResMarketAutorenew(final String[] args, final boolean resadmin, final Player player, final int page) { + if (!cmanager.enableEconomy()) { + player.sendMessage(ChatColor.RED + language.getPhrase("MarketDisabled")); + return true; + } + if (args.length != 4) { + return true; + } + boolean value; + if (args[3].equalsIgnoreCase("true") || args[3].equalsIgnoreCase("t")) { + value = true; + } else if (args[3].equalsIgnoreCase("false") || args[3].equalsIgnoreCase("f")) { + value = false; + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidBoolean")); + return true; + } + if (rentmanager.isRented(args[2]) && rentmanager.getRentingPlayer(args[2]).equalsIgnoreCase(player.getName())) { + rentmanager.setRentedRepeatable(player, args[2], value, resadmin); + } else if (rentmanager.isForRent(args[2])) { + rentmanager.setRentRepeatable(player, args[2], value, resadmin); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("RentReleaseInvalid", ChatColor.YELLOW + args[2] + ChatColor.RED)); + } + return true; + } + + private boolean commandResMarketList(final String[] args, final boolean resadmin, final Player player, final int page) { + if (!cmanager.enableEconomy()) { + player.sendMessage(ChatColor.RED + language.getPhrase("MarketDisabled")); + return true; + } + player.sendMessage(ChatColor.BLUE + "---" + language.getPhrase("MarketList") + "---"); + tmanager.printForSaleResidences(player); + if (cmanager.enabledRentSystem()) { + rentmanager.printRentableResidences(player); + } + return true; + } + + private boolean commandResMarketRent(final String[] args, final boolean resadmin, final Player player, final int page) { + if (args.length < 3 || args.length > 4) { + return false; + } + boolean repeat = false; + if (args.length == 4) { + if (args[3].equalsIgnoreCase("t") || args[3].equalsIgnoreCase("true")) { + repeat = true; + } else if (!args[3].equalsIgnoreCase("f") && !args[3].equalsIgnoreCase("false")) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidBoolean")); + return true; + } + } + rentmanager.rent(player, args[2], repeat, resadmin); + return true; + } + + private boolean commandResMarketRentable(final String[] args, final boolean resadmin, final Player player, final int page) { + if (args.length < 5 || args.length > 6) { + return false; + } + if (!cmanager.enabledRentSystem()) { + player.sendMessage(ChatColor.RED + language.getPhrase("RentDisabled")); + return true; + } + int days; + int cost; + try { + cost = Integer.parseInt(args[3]); + } catch (final Exception ex) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidCost")); + return true; + } + try { + days = Integer.parseInt(args[4]); + } catch (final Exception ex) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidDays")); + return true; + } + boolean repeat = false; + if (args.length == 6) { + if (args[5].equalsIgnoreCase("t") || args[5].equalsIgnoreCase("true")) { + repeat = true; + } else if (!args[5].equalsIgnoreCase("f") && !args[5].equalsIgnoreCase("false")) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidBoolean")); + return true; + } + } + rentmanager.setForRent(player, args[2], cost, days, repeat, resadmin); + return true; + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMaterial.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMaterial.java new file mode 100644 index 0000000..df75a18 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMaterial.java @@ -0,0 +1,40 @@ +package com.bekvon.bukkit.residence.commandsub; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +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.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandMaterial extends BaseCommand { + Residence plugin; + + public CommandMaterial(final Residence plugin) { + super("material"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(1); + } + + @SuppressWarnings("deprecation") + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + + final Language language = plugin.getLanguage(); + + try { + player.sendMessage(ChatColor.GREEN + + language.getPhrase("MaterialGet", ChatColor.GOLD + args[0] + ChatColor.GREEN + "." + ChatColor.RED + Material.getMaterial(Integer.parseInt(args[0])).name() + ChatColor.GREEN)); + } catch (final Exception ex) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMaterial")); + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMessage.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMessage.java new file mode 100644 index 0000000..a7a426b --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMessage.java @@ -0,0 +1,50 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; +import cn.citycraft.PluginHelper.utils.StringUtil; + +public class CommandMessage extends BaseCommand { + Residence plugin; + + public CommandMessage(final Residence plugin) { + super("message"); + this.plugin = plugin; + setMinimumArguments(1); + setOnlyPlayerExecutable(true); + setPossibleArguments("[enter|leave] [消息(移除则留空)]"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + final ClaimedResidence res = rmanager.getByLoc(player.getLocation()); + if (res == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + return; + } + String message = null; + if (args.length != 1) { + message = StringUtil.consolidateStrings(args, 1); + } + boolean enter = false; + if (args[0].equalsIgnoreCase("enter")) { + enter = true; + } + res.setEnterLeaveMessage(player, message, enter, resadmin); + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMirror.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMirror.java new file mode 100644 index 0000000..6fae594 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandMirror.java @@ -0,0 +1,31 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ResidenceManager; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandMirror extends BaseCommand { + Residence plugin; + + public CommandMirror(final Residence plugin) { + super("mirror"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(2); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + rmanager.mirrorPerms(player, args[1], args[0], resadmin); + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandPset.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandPset.java new file mode 100644 index 0000000..863a340 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandPset.java @@ -0,0 +1,69 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandPset extends BaseCommand { + Residence plugin; + + public CommandPset(final Residence plugin) { + super("pset"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(2); + setPossibleArguments(" [player] [flag|removeall] [true/false/remove]"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + + if (args.length == 2 && args[1].equalsIgnoreCase("removeall")) { + final ClaimedResidence area = rmanager.getByLoc(player.getLocation()); + if (area != null) { + area.getPermissions().removeAllPlayerFlags(player, args[1], resadmin); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + } + return; + } else if (args.length == 3 && args[2].equalsIgnoreCase("removeall")) { + final ClaimedResidence area = rmanager.getByName(args[0]); + if (area != null) { + area.getPermissions().removeAllPlayerFlags(player, args[2], resadmin); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + } + return; + } else if (args.length == 3) { + final ClaimedResidence area = rmanager.getByLoc(player.getLocation()); + if (area != null) { + area.getPermissions().setPlayerFlag(player, args[0], args[1], args[2], resadmin); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + } + return; + } else if (args.length == 4) { + final ClaimedResidence area = rmanager.getByName(args[0]); + if (area != null) { + area.getPermissions().setPlayerFlag(player, args[1], args[2], args[3], resadmin); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + } + return; + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRemoveAll.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRemoveAll.java new file mode 100644 index 0000000..88c9eb1 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRemoveAll.java @@ -0,0 +1,41 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandRemoveAll extends BaseCommand { + Residence plugin; + + public CommandRemoveAll(final Residence plugin) { + super("removeall"); + this.plugin = plugin; + setMinimumArguments(1); + setOnlyPlayerExecutable(true); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final String pname = player.getName(); + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + if (resadmin || args[0].endsWith(pname)) { + rmanager.removeAllByOwner(player, args[0]); + player.sendMessage(ChatColor.GREEN + language.getPhrase("RemovePlayersResidences", ChatColor.YELLOW + args[1] + ChatColor.GREEN)); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); + } + return; + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRename.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRename.java new file mode 100644 index 0000000..c868414 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRename.java @@ -0,0 +1,32 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ResidenceManager; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandRename extends BaseCommand { + Residence plugin; + + public CommandRename(final Residence plugin) { + super("rename"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(2); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + + rmanager.renameResidence(player, args[0], args[1], resadmin); + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRenameArea.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRenameArea.java new file mode 100644 index 0000000..1bdd2c9 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRenameArea.java @@ -0,0 +1,41 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandRenameArea extends BaseCommand { + Residence plugin; + + public CommandRenameArea(final Residence plugin) { + super("renamearea"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(3); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + + final ClaimedResidence res = rmanager.getByName(args[0]); + if (res == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + return; + } + res.renameArea(player, args[1], args[2], resadmin); + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSelect.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSelect.java new file mode 100644 index 0000000..598e3e5 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSelect.java @@ -0,0 +1,164 @@ +package com.bekvon.bukkit.residence.commandsub; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.bukkit.ChatColor; +import org.bukkit.Location; +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.permissions.PermissionGroup; +import com.bekvon.bukkit.residence.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.CuboidArea; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.selection.SelectionManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandSelect extends BaseCommand { + Residence plugin; + + public CommandSelect(final Residence plugin) { + super("select"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setPermission("residence.select"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + final PermissionGroup group = plugin.getPermissionManager().getGroup(player); + final SelectionManager smanager = plugin.getSelectionManager(); + + if (!group.selectCommandAccess() && !resadmin) { + player.sendMessage(ChatColor.RED + language.getPhrase("SelectDiabled")); + return; + } + if (!group.canCreateResidences() && group.getMaxSubzoneDepth() <= 0 && !resadmin) { + player.sendMessage(ChatColor.RED + language.getPhrase("SelectDiabled")); + return; + } + if (args.length == 1) { + if (args[0].equals("size") || args[0].equals("cost")) { + if (smanager.hasPlacedBoth(player.getName())) { + try { + smanager.showSelectionInfo(player); + return; + } catch (final Exception ex) { + Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex); + return; + } + } else if (smanager.worldEdit(player)) { + try { + smanager.showSelectionInfo(player); + return; + } catch (final Exception ex) { + Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex); + return; + } + } + } else if (args[0].equals("vert")) { + smanager.vert(player, resadmin); + return; + } else if (args[0].equals("sky")) { + smanager.sky(player, resadmin); + return; + } else if (args[0].equals("bedrock")) { + smanager.bedrock(player, resadmin); + return; + } else if (args[0].equals("coords")) { + final Location playerLoc1 = smanager.getPlayerLoc1(player.getName()); + if (playerLoc1 != null) { + player.sendMessage(ChatColor.GREEN + language.getPhrase("Primary.Selection") + ":" + ChatColor.AQUA + " (" + playerLoc1.getBlockX() + ", " + playerLoc1.getBlockY() + ", " + + playerLoc1.getBlockZ() + ")"); + } + final Location playerLoc2 = smanager.getPlayerLoc2(player.getName()); + if (playerLoc2 != null) { + player.sendMessage(ChatColor.GREEN + language.getPhrase("Secondary.Selection") + ":" + ChatColor.AQUA + " (" + playerLoc2.getBlockX() + ", " + playerLoc2.getBlockY() + ", " + + playerLoc2.getBlockZ() + ")"); + } + return; + } else if (args[0].equals("chunk")) { + smanager.selectChunk(player); + return; + } else if (args[0].equals("worldedit")) { + if (smanager.worldEdit(player)) { + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SelectionSuccess")); + } + return; + } + } else if (args.length == 2) { + if (args[0].equals("expand")) { + int amount; + try { + amount = Integer.parseInt(args[1]); + } catch (final Exception ex) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidAmount")); + return; + } + smanager.modify(player, false, amount); + return; + } else if (args[0].equals("shift")) { + int amount; + try { + amount = Integer.parseInt(args[1]); + } catch (final Exception ex) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidAmount")); + return; + } + smanager.modify(player, true, amount); + return; + } + } + if (args.length > 0 && args[0].equals("residence")) { + String resName; + String areaName; + ClaimedResidence res = null; + if (args.length > 1) { + res = rmanager.getByName(args[1]); + } else { + res = rmanager.getByLoc(player.getLocation()); + } + if (res == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + return; + } + resName = res.getName(); + CuboidArea area = null; + if (args.length > 2) { + area = res.getArea(args[2]); + areaName = args[2]; + } else { + areaName = res.getAreaIDbyLoc(player.getLocation()); + area = res.getArea(areaName); + } + if (area != null) { + smanager.placeLoc1(player, area.getHighLoc()); + smanager.placeLoc2(player, area.getLowLoc()); + player.sendMessage(ChatColor.GREEN + language.getPhrase("SelectionArea", ChatColor.GOLD + areaName + ChatColor.GREEN + "." + ChatColor.GOLD + resName + ChatColor.GREEN)); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("AreaNonExist")); + } + return; + } else { + try { + smanager.selectBySize(player, Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2])); + return; + } catch (final Exception ex) { + player.sendMessage(ChatColor.RED + language.getPhrase("SelectionFail")); + return; + } + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandServer.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandServer.java new file mode 100644 index 0000000..4315946 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandServer.java @@ -0,0 +1,47 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandServer extends BaseCommand { + Residence plugin; + + public CommandServer(final Residence plugin) { + super("server"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(1); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + + if (!resadmin) { + player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); + return; + } + final ClaimedResidence res = rmanager.getByName(args[0]); + if (res == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + return; + } + res.getPermissions().setOwner("Server Land", false); + player.sendMessage(ChatColor.GREEN + language.getPhrase("ResidenceOwnerChange", ChatColor.YELLOW + args[1] + ChatColor.GREEN + "." + ChatColor.YELLOW + "Server Land" + ChatColor.GREEN)); + + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSet.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSet.java new file mode 100644 index 0000000..de8c91d --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSet.java @@ -0,0 +1,51 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandSet extends BaseCommand { + Residence plugin; + + public CommandSet(final Residence plugin) { + super("set"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(2); + setPossibleArguments(" [flag] [true/false/remove]"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + + if (args.length == 2) { + final String res = rmanager.getNameByLoc(player.getLocation()); + if (res != null) { + rmanager.getByName(res).getPermissions().setFlag(player, args[0], args[1], resadmin); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + } + } else if (args.length == 3) { + final ClaimedResidence res = rmanager.getByName(args[0]); + if (res != null) { + res.getPermissions().setFlag(player, args[1], args[2], resadmin); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + } + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSubList.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSubList.java new file mode 100644 index 0000000..8042433 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSubList.java @@ -0,0 +1,54 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandSubList extends BaseCommand { + Residence plugin; + + public CommandSubList(final Residence plugin) { + super("sublist"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + int page = 1; + try { + if (args.length > 0) { + page = Integer.parseInt(args[args.length - 1]); + } + } catch (final Exception ex) { + } + if (args.length == 1 || args.length == 2) { + ClaimedResidence res; + if (args.length == 0) { + res = rmanager.getByLoc(player.getLocation()); + } else { + res = rmanager.getByName(args[0]); + } + if (res != null) { + res.printSubzoneList(player, page); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + } + return; + } + return; + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSubZone.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSubZone.java new file mode 100644 index 0000000..c89c78a --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSubZone.java @@ -0,0 +1,69 @@ +package com.bekvon.bukkit.residence.commandsub; + +import org.bukkit.Bukkit; +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.selection.SelectionManager; +import com.bekvon.bukkit.residence.text.Language; +import com.sk89q.worldedit.bukkit.WorldEditPlugin; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandSubZone extends BaseCommand { + Residence plugin; + + public CommandSubZone(final Residence plugin) { + super("subzone", "sz"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(1); + setPossibleArguments("<领地名> [附属领地名]"); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + final SelectionManager smanager = plugin.getSelectionManager(); + if (args.length != 2 && args.length != 3) { + return; + } + String zname; + String parent; + if (args.length == 1) { + parent = rmanager.getNameByLoc(player.getLocation()); + zname = args[0]; + } else { + parent = args[0]; + zname = args[1]; + } + final WorldEditPlugin wep = (WorldEditPlugin) Bukkit.getServer().getPluginManager().getPlugin("WorldEdit"); + if (wep != null) { + if (wep.getConfig().getInt("wand-item") == plugin.getConfigManager().getSelectionTooldID()) { + smanager.worldEdit(player); + } + } + if (smanager.hasPlacedBoth(player.getName())) { + final ClaimedResidence res = rmanager.getByName(parent); + if (res == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + return; + } + res.addSubzone(player, smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName()), zname, resadmin); + return; + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints")); + return; + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandTool.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandTool.java new file mode 100644 index 0000000..d261640 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandTool.java @@ -0,0 +1,37 @@ +package com.bekvon.bukkit.residence.commandsub; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +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.ConfigManager; +import com.bekvon.bukkit.residence.Residence; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandTool extends BaseCommand { + Residence plugin; + + public CommandTool(final Residence plugin) { + super("tool"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + } + + @SuppressWarnings("deprecation") + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final Language language = plugin.getLanguage(); + + final ConfigManager cmanager = plugin.getConfigManager(); + player.sendMessage(ChatColor.YELLOW + language.getPhrase("SelectionTool") + ":" + ChatColor.GREEN + Material.getMaterial(cmanager.getSelectionTooldID())); + player.sendMessage(ChatColor.YELLOW + language.getPhrase("InfoTool") + ": " + ChatColor.GREEN + Material.getMaterial(cmanager.getInfoToolID())); + + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandTp.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandTp.java new file mode 100644 index 0000000..98541ae --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandTp.java @@ -0,0 +1,42 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandTp extends BaseCommand { + Residence plugin; + + public CommandTp(final Residence plugin) { + super("tp"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + setMinimumArguments(1); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + + final ClaimedResidence res = rmanager.getByName(args[0]); + if (res == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + return; + } + res.tpToResidence(player, player, resadmin); + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandTpSet.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandTpSet.java new file mode 100644 index 0000000..b507577 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandTpSet.java @@ -0,0 +1,41 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandTpSet extends BaseCommand { + Residence plugin; + + public CommandTpSet(final Residence plugin) { + super("tpset"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + + final ClaimedResidence res = rmanager.getByLoc(player.getLocation()); + if (res != null) { + res.setTpLoc(player, resadmin); + } else { + player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + } + } + +} diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandUnStuck.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandUnStuck.java new file mode 100644 index 0000000..76b7949 --- /dev/null +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandUnStuck.java @@ -0,0 +1,48 @@ +package com.bekvon.bukkit.residence.commandsub; + +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.permissions.PermissionGroup; +import com.bekvon.bukkit.residence.permissions.PermissionManager; +import com.bekvon.bukkit.residence.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.ResidenceManager; +import com.bekvon.bukkit.residence.text.Language; + +import cn.citycraft.PluginHelper.commands.BaseCommand; + +public class CommandUnStuck extends BaseCommand { + Residence plugin; + + public CommandUnStuck(final Residence plugin) { + super("unstuck"); + this.plugin = plugin; + setOnlyPlayerExecutable(true); + } + + @Override + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final Player player = (Player) sender; + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + final PermissionManager gmanager = plugin.getPermissionManager(); + final PermissionGroup group = gmanager.getGroup(player); + + if (!group.hasUnstuckAccess()) { + player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); + return; + } + final ClaimedResidence res = rmanager.getByLoc(player.getLocation()); + if (res == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence")); + } else { + player.sendMessage(ChatColor.YELLOW + language.getPhrase("Moved") + "..."); + player.teleport(res.getOutsideFreeLoc(player.getLocation())); + } + } + +}