72 lines
2.1 KiB
Java
72 lines
2.1 KiB
Java
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;
|
|
}
|
|
}
|