package me.desht.scrollingmenusign.commands; import java.util.List; import me.desht.dhutils.MiscUtil; import me.desht.scrollingmenusign.SMSMenu; import me.desht.scrollingmenusign.SMSMenuItem; import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; public class ItemUseCommand extends SMSAbstractCommand { public ItemUseCommand() { super("sms uses", 2, 4); setPermissionNode("scrollingmenusign.commands.uses"); setUsage(new String[]{ "/sms uses <menu> <item> <count> [-global]", "/sms uses <menu> <item> clear", "/sms uses <menu> <count> [-global]", "/sms uses <menu> clear", }); setQuotedArgs(true); setOptions("global", "g"); } @Override public boolean execute(Plugin plugin, CommandSender sender, String[] args) { SMSMenu menu = getMenu(sender, args[0]); menu.ensureAllowedToModify(sender); boolean isGlobal = getBooleanOption("global") || getBooleanOption("g"); boolean isClearing = args[args.length - 1].startsWith("c"); if (args.length == 3) { // dealing with an item int idx = menu.indexOfItem(args[1]); SMSMenuItem item = menu.getItemAt(idx, true); if (isClearing) { item.getUseLimits().clearUses(); MiscUtil.statusMessage(sender, "Unset all usage limits for item &e" + item.getLabel()); } else { int count = parseNumber(args[2]); if (isGlobal) { item.getUseLimits().setGlobalUses(count); MiscUtil.statusMessage(sender, "Set GLOBAL use limit for item &e" + item.getLabel() + "&- to " + count + "."); } else { item.getUseLimits().setUses(count); MiscUtil.statusMessage(sender, "Set PER-PLAYER use limit for item &e" + item.getLabel() + "&- to " + count + "."); } } } else if (args.length == 2) { // dealing with a menu if (isClearing) { menu.getUseLimits().clearUses(); MiscUtil.statusMessage(sender, "Unset all usage limits for menu &e" + menu.getName()); } else { int count = parseNumber(args[1]); if (isGlobal) { menu.getUseLimits().setGlobalUses(count); MiscUtil.statusMessage(sender, "Set GLOBAL use limit for menu &e" + menu.getName() + "&- to " + count + "."); } else { menu.getUseLimits().setUses(count); MiscUtil.statusMessage(sender, "Set PER-PLAYER use limit for menu &e" + menu.getName() + "&- to " + count + "."); } } } return true; } @Override public List<String> onTabComplete(Plugin plugin, CommandSender sender, String[] args) { switch (args.length) { case 1: return getMenuCompletions(plugin, sender, args[0]); default: showUsage(sender); return noCompletions(sender); } } }