@Override public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { if (args.length < 1) { throw new NotEnoughArgumentsException(); } if (args[0].equalsIgnoreCase("hand")) { final ItemStack item = user.getPlayer().getItemInHand(); if (item == null) { throw new Exception(_("repairInvalidType")); } if (!item.getEnchantments().isEmpty() && !Permissions.REPAIR_ENCHANTED.isAuthorized(user)) { throw new Exception(_("repairEnchanted")); } final String itemName = item.getType().toString().toLowerCase(Locale.ENGLISH); final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), ess); charge.isAffordableFor(user); repairItem(item); charge.charge(user); user.sendMessage(_("repair", itemName.replace('_', ' '))); } else if (args[0].equalsIgnoreCase("all")) { final Trade charge = new Trade("repair-all", ess); charge.isAffordableFor(user); final List<String> repaired = new ArrayList<String>(); repairItems(user.getPlayer().getInventory().getContents(), user, repaired); if (Permissions.REPAIR_ARMOR.isAuthorized(user)) { repairItems(user.getPlayer().getInventory().getArmorContents(), user, repaired); } if (repaired.isEmpty()) { throw new Exception(_("repairNone")); } else { user.sendMessage(_("repair", Util.joinList(repaired))); } charge.charge(user); } else { throw new NotEnoughArgumentsException(); } }
//TODO: Implement charge costs: final Trade charge = new Trade("enchant-" + enchantmentName, ess); @Override protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception { final ItemStack stack = user.getPlayer().getItemInHand(); if (stack == null) { throw new Exception(_("nothingInHand")); } if (args.length == 0) { final Set<String> enchantmentslist = new TreeSet<String>(); for (Map.Entry<String, Enchantment> entry : Enchantments.entrySet()) { final String enchantmentName = entry.getValue().getName().toLowerCase(Locale.ENGLISH); if (enchantmentslist.contains(enchantmentName) || Permissions.ENCHANT.isAuthorized(user, enchantmentName)) { enchantmentslist.add(entry.getKey()); //enchantmentslist.add(enchantmentName); } } throw new NotEnoughArgumentsException(_("enchantments", Util.joinList(enchantmentslist.toArray()))); } int level = -1; if (args.length > 1) { try { level = Integer.parseInt(args[1]); } catch (NumberFormatException ex) { level = -1; } } final boolean allowUnsafe = Permissions.ENCHANT_UNSAFE.isAuthorized(user); final Enchantment enchantment = getEnchantment(args[0], user); if (level < 0 || (!allowUnsafe && level > enchantment.getMaxLevel())) { level = enchantment.getMaxLevel(); } if (level == 0) { stack.removeEnchantment(enchantment); } else { if (allowUnsafe) { stack.addUnsafeEnchantment(enchantment, level); } else { stack.addEnchantment(enchantment, level); } } user.getPlayer().getInventory().setItemInHand(stack); user.getPlayer().updateInventory(); final String enchantmentName = enchantment.getName().toLowerCase(Locale.ENGLISH); if (level == 0) { user.sendMessage(_("enchantmentRemoved", enchantmentName.replace('_', ' '))); } else { user.sendMessage(_("enchantmentApplied", enchantmentName.replace('_', ' '))); } }
@Override public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { final Trade charge = new Trade(commandName, ess); charge.isAffordableFor(user); IUser player = user; String homeName = ""; String[] nameParts; if (args.length > 0) { nameParts = colon.split(args[0]); if (nameParts[0].length() == args[0].length() || !Permissions.HOME_OTHERS.isAuthorized(user)) { homeName = nameParts[0]; } else { player = ess.getUserMap().matchUser(nameParts[0], true); if (nameParts.length > 1) { homeName = nameParts[1]; } } } try { if ("bed".equalsIgnoreCase(homeName)) { final Location bed = player.getBedSpawnLocation(); if (bed != null && bed.getBlock().getType() == Material.BED_BLOCK) { user.getTeleport().teleport(bed, charge, TeleportCause.COMMAND); throw new NoChargeException(); } } goHome(user, player, homeName.toLowerCase(Locale.ENGLISH), charge); } catch (NotEnoughArgumentsException e) { Location bed = player.getBedSpawnLocation(); if (bed != null && bed.getBlock().getType() != Material.BED_BLOCK) { bed = null; } final Set<String> homes = player.getHomes(); if (homes.isEmpty() && player.equals(user)) { if (bed != null) { user.getTeleport().teleport(bed, charge, TeleportCause.COMMAND); throw new NoChargeException(); } user.getTeleport().respawn(charge, TeleportCause.COMMAND); } else if (homes.isEmpty()) { throw new Exception(player == user ? _("noHomeSet") : _("noHomeSetPlayer")); } else if (homes.size() == 1 && player.equals(user)) { goHome(user, player, homes.iterator().next(), charge); } else { if (bed != null) { homes.add("bed"); } user.sendMessage(_("homes", Util.joinList(homes))); } } throw new NoChargeException(); }