public boolean attemptCast(Player p) {
		if (!Mana.hasMana(p, manaCost)) {
			p.sendMessage(ChatColor.RED + "You do not have enough mana to cast this spell.");
			return false;
		} else {
			String name = p.getName();
			long t = System.currentTimeMillis();
			if (!cast.containsKey(name)) {
				cast.put(name, t);
				Mana.drainMana(p, manaCost);
				return true;
			} else {
				long c = cast.get(name);
				// if time elapsed since last cast is greater than cooldown
				// allow
				if (t - c > cooldownMS) {
					cast.put(name, t);
					Mana.drainMana(p, manaCost);
					return true;
				} else {
					p.sendMessage(ChatColor.RED + "You must wait " + (cooldownMS / 1000) + " seconds between casts.");
					return false;
				}
			}
		}
	}