private int getCommandPearlSlot(Player player, String args[], int pos) { if (args.length <= pos) { ItemStack item = player.getItemInHand(); if (item.getType() != Material.ENDER_PEARL) { player.sendMessage("You must hold a pearl or supply the player's name to use this command"); return -1; } if (pearls.getByItemStack(item) == null) { player.sendMessage("This is an ordinary ender pearl"); return -1; } return player.getInventory().getHeldItemSlot(); } else { PrisonPearl pp = pearls.getByImprisoned(args[pos]); if (pp != null) { Inventory inv = player.getInventory(); for (Entry<Integer, ? extends ItemStack> entry : inv.all(Material.ENDER_PEARL).entrySet()) { if (entry.getValue().getDurability() == pp.getID()) return entry.getKey(); } } player.sendMessage("You don't possess " + args[0] + "'s prison pearl"); return -1; } }
private boolean freeCmd(CommandSender sender, String args[], boolean any) { PrisonPearl pp; if (!any) { if (args.length > 1) return false; if (!(sender instanceof Player)) { sender.sendMessage("Must use freeany at console"); return true; } Player player = (Player) sender; int slot = getCommandPearlSlot(player, args, 0); if (slot == -1) return true; pp = pearls.getByItemStack(player.getInventory().getItem(slot)); player.getInventory().setItem(slot, null); } else { if (args.length != 1) return false; pp = pearls.getByImprisoned(args[0]); if (pp == null) { sender.sendMessage(args[0] + " is not imprisoned"); return true; } } if (pearlman.freePearl(pp)) { plugin .getLogger() .info( pp.getImprisonedName() + " is being freed. Reason: Freed via command by " + sender.getName()); if (pp.getImprisonedPlayer() != sender) // when freeing yourself, you're already going to get a message sender.sendMessage("You've freed " + pp.getImprisonedName()); } else { sender.sendMessage("You failed to free " + pp.getImprisonedName()); } return true; }
private PrisonPearl getCommandPearl(Player player, String args[], int pos) { int slot = getCommandPearlSlot(player, args, pos); if (slot != -1) return pearls.getByItemStack(player.getInventory().getItem(slot)); else return null; }