private boolean locateCmd(CommandSender sender, String args[], boolean any) { String name_is; String name_possesive; PrisonPearl pp; if (!any) { if (args.length != 0) return false; if (!(sender instanceof Player)) { sender.sendMessage("Must use pplocateany at the console"); return true; } name_is = "You are"; name_possesive = "Your"; pp = pearls.getByImprisoned((Player) sender); } else { if (args.length != 1) return false; name_is = args[0] + " is"; name_possesive = args[0] + "'s"; pp = pearls.getByImprisoned(args[0]); } if (pp != null) { if (!pp.verifyLocation()) { System.err.println( "PrisonPearl for " + pp.getImprisonedName() + " didn't validate, so is now set free"); pearlman.freePearl(pp); plugin .getLogger() .info( pp.getImprisonedName() + " is being freed. Reason: Locate command returned a invalid pearl."); } else { sender.sendMessage( ChatColor.GREEN + name_possesive + " prison pearl is " + pp.describeLocation()); if (sender instanceof Player && !any) broadcastman.broadcast( (Player) sender, ChatColor.GREEN + pp.getImprisonedName() + ": " + pp.describeLocation()); } } else { sender.sendMessage(name_is + " not imprisoned"); } return true; }
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; }