package com.earth2me.essentials.commands; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; import org.bukkit.Server; import com.earth2me.essentials.Essentials; import com.earth2me.essentials.User; import com.earth2me.essentials.Util; import java.util.GregorianCalendar; import org.bukkit.inventory.ItemStack; public class Commandkit extends EssentialsCommand { static private final Map> kitPlayers = new HashMap>(); public Commandkit() { super("kit"); } @Override @SuppressWarnings("unchecked") public void run(Server server, User user, String commandLabel, String[] args) throws Exception { if (args.length < 1) { try { Map kits = (Map)ess.getConfiguration().getProperty("kits"); StringBuilder list = new StringBuilder(); for (String k : kits.keySet()) { if (user.isAuthorized("essentials.kit." + k)) { list.append(" ").append(k); } } if (list.length() > 0) { user.sendMessage("§7Kits:" + list.toString()); } else { user.sendMessage("§7There are no kits available yet"); } } catch (Exception ex) { user.sendMessage("§cThere are no valid kits."); } } else { try { String kitName = args[0].toLowerCase(); Object kit = ess.getSettings().getKit(kitName); List items; if (!user.isAuthorized("essentials.kit." + kitName)) { user.sendMessage("§cYou need the §fessentials.kit." + kitName + "§c permission to use that kit."); return; } try { //System.out.println("Kit is timed"); Map els = (Map)kit; items = (List)els.get("items"); double delay = els.containsKey("delay") ? ((Number)els.get("delay")).doubleValue() : 0L; Calendar c = new GregorianCalendar(); c.add(Calendar.SECOND, (int)delay); c.add(Calendar.MILLISECOND, (int)((delay*1000.0)%1000.0)); long time = c.getTimeInMillis(); Calendar now = new GregorianCalendar(); Map kitTimes; if (!kitPlayers.containsKey(user)) { kitTimes = new HashMap(); kitTimes.put(kitName, time); kitPlayers.put(user, kitTimes); } else { kitTimes = kitPlayers.get(user); if (!kitTimes.containsKey(kitName)) { kitTimes.put(kitName, time); } else if (kitTimes.get(kitName) < now.getTimeInMillis()) { kitTimes.put(kitName, time); } else { user.sendMessage("§cYou can't use that kit again for another " + Util.formatDateDiff(kitTimes.get(kitName)) + "."); return; } } } catch (Exception ex) { items = (List)kit; } try { user.canAfford("kit-" + kitName); } catch (Exception ex) { user.sendMessage(ex.getMessage()); return; } boolean spew = false; for (String d : items) { String[] parts = d.split("[^0-9]+", 3); int id = Integer.parseInt(parts[0]); int amount = parts.length > 1 ? Integer.parseInt(parts[parts.length > 2 ? 2 : 1]) : 1; short data = parts.length > 2 ? Short.parseShort(parts[1]) : 0; HashMap overfilled = user.getInventory().addItem(new ItemStack(id, amount, data)); for (ItemStack itemStack : overfilled.values()) { user.getWorld().dropItemNaturally(user.getLocation(), itemStack); spew = true; } } if (spew) { user.sendMessage("§7Your inventory was full, placing kit on the floor"); } try { user.charge(this); user.charge("kit-" + kitName); } catch (Exception ex) { user.sendMessage(ex.getMessage()); } user.sendMessage("§7Giving kit " + args[0].toLowerCase() + "."); } catch (Exception ex) { user.sendMessage("§cThat kit does not exist or is improperly defined."); user.sendMessage("§cPerhaps an item is missing a quantity in the configuration?"); } } } }