@Override protected void run( final Server server, final User user, final String commandLabel, final String[] args) throws Exception { if (args.length == 1) { Boolean toggle = matchToggleArgument(args[0]); if (toggle == null && user.isAuthorized(othersPermission)) { toggleOtherPlayers(server, user.getSource(), args); } else { togglePlayer(user.getSource(), user, toggle); } } else if (args.length == 2 && user.isAuthorized(othersPermission)) { toggleOtherPlayers(server, user.getSource(), args); } else { togglePlayer(user.getSource(), user, null); } }
public void expandItems(final User user, final List<String> items) throws Exception { try { IText input = new SimpleTextInput(items); IText output = new KeywordReplacer(input, user.getSource(), ess); boolean spew = false; final boolean allowUnsafe = ess.getSettings().allowUnsafeEnchantments(); for (String kitItem : output.getLines()) { if (kitItem.startsWith(ess.getSettings().getCurrencySymbol())) { BigDecimal value = new BigDecimal( kitItem.substring(ess.getSettings().getCurrencySymbol().length()).trim()); Trade t = new Trade(value, ess); t.pay(user, OverflowType.DROP); continue; } if (kitItem.startsWith("/")) { String command = kitItem.substring(1); String name = user.getName(); command = command.replace("{player}", name); Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command); continue; } final String[] parts = kitItem.split(" +"); final ItemStack parseStack = ess.getItemDb().get(parts[0], parts.length > 1 ? Integer.parseInt(parts[1]) : 1); if (parseStack.getType() == Material.AIR) { continue; } final MetaItemStack metaStack = new MetaItemStack(parseStack); if (parts.length > 2) { // We pass a null sender here because kits should not do perm checks metaStack.parseStringMeta(null, allowUnsafe, parts, 2, ess); } final Map<Integer, ItemStack> overfilled; final boolean allowOversizedStacks = user.isAuthorized("essentials.oversizedstacks"); if (allowOversizedStacks) { overfilled = InventoryWorkaround.addOversizedItems( user.getBase().getInventory(), ess.getSettings().getOversizedStackSize(), metaStack.getItemStack()); } else { overfilled = InventoryWorkaround.addItems(user.getBase().getInventory(), metaStack.getItemStack()); } for (ItemStack itemStack : overfilled.values()) { int spillAmount = itemStack.getAmount(); if (!allowOversizedStacks) { itemStack.setAmount( spillAmount < itemStack.getMaxStackSize() ? spillAmount : itemStack.getMaxStackSize()); } while (spillAmount > 0) { user.getWorld().dropItemNaturally(user.getLocation(), itemStack); spillAmount -= itemStack.getAmount(); } spew = true; } } user.getBase().updateInventory(); if (spew) { user.sendMessage(tl("kitInvFull")); } } catch (Exception e) { user.getBase().updateInventory(); ess.getLogger().log(Level.WARNING, e.getMessage()); throw new Exception(tl("kitError2"), e); } }