Solved Need some help with a Cooldown

Discussion in 'Plugin Development' started by AppleMen, Dec 22, 2013.

Thread Status:
Not open for further replies.
  1. Offline

    AppleMen

    Hello,

    I am making a plugin that should give a item every day. I know that you have to use a cool down. But I don't know exactly how to use that.

    I have this now, but it doesn't seems to work..
    Code:java
    1. final ArrayList<Player> cooldown = new ArrayList<Player>();
    2.  
    3. pi.addItem(new ItemStack(Material.CAKE, 1));
    4. cooldown.add(p);
    5.  
    6. if (cooldown.contains(p)) {
    7. p.sendMessage(colorize("&e&k!!!! &c&lM&a&le&c&lr&a&lr&c&ly &a&lC&c&lh&a&lr&c&li&a&ls&c&lt&a&lm&c&la&a&ls&6&l! &e&k!!!!"));
    8. }
    9. Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
    10. public void run() {
    11. cooldown.remove(p);
    12. }
    13. }, 2592000);
    14. }


    Can someone please help me?

    Anyone?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 5, 2016
  2. Offline

    BeaztX

    The code doesn't make much sense, but make it for a example: (no Eclipse so expect typo's)

    Code:java
    1. ArrayList<String> cooldown = new ArrayList<String>();
    2. @EventHandler
    3. public void onPlayerInteract(PlayerInteractEvent e) {
    4. Player p e.getPlayer();
    5. if(!cooldown.contains(p.getName()) {
    6. p.sendMessage(ChatColor.RED + "Hey");
    7. cooldown.add(p.getName());
    8. Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
    9. cooldown.remove(p.getName());
    10. p.sendMessage(ChatColor.RED + "No longer on a cooldown.");
    11. }
    12. }, 20);
    13. }
     
  3. Offline

    AppleMen

    If I have it like this:
    Code:java
    1. ArrayList<Player> cooldown = new ArrayList<Player>();
    2. @EventHandler
    3. public void onPlayerJoin(PlayerJoinEvent event){
    4. final Player p = event.getPlayer();
    5. PlayerInventory pi = p.getInventory();
    6. ChristmasFirework(event.getPlayer());
    7.  
    8. if(!cooldown.contains(p.getName())) {
    9. p.sendMessage(colorize("&e&k!!!! &c&lM&a&le&c&lr&a&lr&c&ly &a&lC&c&lh&a&lr&c&li&a&ls&c&lt&a&lm&c&la&a&ls&6&l! &e&k!!!!"));
    10. pi.addItem(new ItemStack(Material.CAKE, 1));
    11. cooldown.add(p.getName());
    12. Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
    13. public void run() {
    14. cooldown.remove(p.getName());
    15. }
    16. }, 2592000);
    17. }
    18. }


    then I had to change
    Code:java
    1. Player p = event.getPlayer();
    to
    Code:java
    1. final Player p = event.getPlayer();


    And I get a error with
    Code:java
    1. cooldown.add(p.getName());

    Code:
    The method add(Player) in the type ArrayList<Player> is not applicable for the arguments (String)
     
  4. Offline

    BeaztX

    Change:
    Code:java
    1. ArrayList<Player> cooldown = new ArrayList<Player>();


    to:
    Code:java
    1. ArrayList<String> cooldown = new ArrayList<String>();
     
  5. Offline

    AppleMen

    And leave
    Code:java
    1. final Player p = event.getPlayer();
    ?

    Without I get this error on
    Code:java
    1. cooldown.remove(p.getName());
    Code:
    Cannot refer to a non-final variable p inside an inner class defined in a different method
     
  6. Offline

    BeaztX

    you shouldnt get an error, but the Player variable needs to be final
     
  7. Offline

    AppleMen

    Thanks! It is working now :D
     
  8. Offline

    BeaztX

    Np ;)
     
Thread Status:
Not open for further replies.

Share This Page