mirror of
https://e.coding.net/circlecloud/Residence.git
synced 2025-11-24 21:46:16 +00:00
100 lines
3.6 KiB
Java
100 lines
3.6 KiB
Java
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|