package me.Caesar2011.Mailings.Commands; import me.Caesar2011.Mailings.Library.EnumCmdExe; import me.Caesar2011.Mailings.Library.EnumPerm; import me.Caesar2011.Mailings.Library.ItemMail; import me.Caesar2011.Mailings.Library.ItemMailManager; import org.bukkit.Material; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; public class Cmd_ItemMail_Delmail { CommandSender sender; String[] args; public Cmd_ItemMail_Delmail(String[] args, CommandSender sender){ this.args = args; this.sender = sender; } public EnumCmdExe execute(){ if (args.length == 0){ return EnumCmdExe.TOFEWARGS; } int mailID = 0; try { mailID = Integer.parseInt(args[0]); } catch (NumberFormatException e) { return EnumCmdExe.NONUMBER.addArg("%input%", args[0]); } if (mailID != 0 && mailID <= ItemMailManager.getLastMailID()) { if (sender instanceof Player){ Player p = (Player) sender; String toPlayerName = ItemMailManager.getString(mailID, "ToPlayer"); //Permissioncheck if (EnumPerm.IM_DEL_OWN.noPermission(sender) && p.getName().equals(toPlayerName)){ return EnumCmdExe.NOPERM; } if (EnumPerm.IM_DEL_OTHER.noPermission(sender) && !p.getName().equals(toPlayerName)){ return EnumCmdExe.NOPERM; } ItemMail mail = ItemMailManager.getMail(mailID); if (mail.item != null){ if (checkIfFits(p, mail.item)){ p.getInventory().addItem(mail.item); } else { return EnumCmdExe.INVFILLED; } } } ItemMailManager.delMail(mailID); return EnumCmdExe.MAILDEL.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", ItemMailManager.typeName); } else { return EnumCmdExe.MAILNOTFOUND.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", ItemMailManager.typeName); } } private boolean checkIfFits(Player p, ItemStack i){ int a = i.getAmount(); for (ItemStack item : p.getInventory().getContents()) { if(item.isSimilar(i) || (item.getType() == Material.AIR)) { a -= item.getMaxStackSize() - item.getAmount(); if (a <= 0) return true; } } return false; } }