Simple Cooldown Event (Easy Tutorial) (Coding) (For Noobs and others :D)

Discussion in 'Resources' started by mrgreen33gamer, Dec 23, 2013.

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

    mrgreen33gamer

    Hello everyone, mrgreen33gamer here. Today I have cooldown code for you! I have seen and heard a lot of people adding cooldowns to events!

    MainClass:
    Code:
    package com.mrgreen33gamer.kits;
     
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.logging.Logger;
     
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.World;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.ShapedRecipe;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scheduler.BukkitTask;
     
    public class MainClass extends JavaPlugin implements Listener {
     
      public final Logger logger = Logger.getLogger("Minecraft");
      public static MainClass plugin;
     
      public CoolDownManager cooldown;
      HashMap<String, Integer> cooldown1;
     
     
      @Override
      public void onEnable()
      {
    this.saveDefaultConfig();
        PluginDescriptionFile pdffile = getDescription();
        this.logger.info(pdffile.getFullName() + " Has Been Enabled | By: " + pdffile.getAuthors());
        this.logger.info("Plugin Version:" + pdffile.getVersion());
        @SuppressWarnings("unused")
    PluginManager pm = getServer().getPluginManager();
    this.getServer().getPluginManager().registerEvents(this, this);
          new EventClass(this);
     
        BukkitTask Cooldown = new CoolDownManager(this).runTaskTimer(this, 20, 20);
     
        cooldown1 = new HashMap<String, Integer>();
     
      }
     
     
     
      @Override
      public void onDisable()
      {
     
        PluginDescriptionFile pdffile = getDescription();
        this.logger.info(pdffile.getFullName() + " Has Been Disabled | By: " + pdffile.getAuthors());
      }
     
     
     
    }
     
     
    
    CoolDownManager:
    Code:
    package com.mrgreen33gamer.kits;
     
     
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.bukkit.scheduler.BukkitRunnable;
     
     
    public class CoolDownManager extends BukkitRunnable {
     
    public MainClass plugin;
     
    public CoolDownManager(MainClass plugin){
    this.plugin = plugin;
    }
     
    public void run() {
     
    for(Player player : Bukkit.getServer().getOnlinePlayers()) {
     
      try{
          plugin.cooldown1.put(player.getName(), plugin.cooldown1.get(player.getName()) - 1);
      }catch(Exception e){
          plugin.cooldown1.put(player.getName(), 0);
      }
    }
    }
    }
    
    EventClass:
    Code:
     
          private int cooldown = 10; //Any number you put after the = sign is how much seconds the cooldown lasts
     
    @EventHandler
    public void onUseMyTestItem(PlayerInteractEvent e) {
    Action action = e.getAction();
    Player player = e.getPlayer();
    World world = player.getWorld();
    Location location = player.getLocation();
    if(((action.equals(Action.RIGHT_CLICK_AIR)) && e.getItem().getType()==Material.STICK)){
     
    if (plugin.cooldown1.get(player.getName()) <= 0) {
     
                      plugin.cooldown1.put(player.getName(), cooldown);
         
                      //This is were all the stuff happens that you want too, Here is some examples:
         
                      world.createExplosion(location, 5);
                      world.strikeLightning(location);
     
          }
    }else{
                  player.sendMessage(ChatColor.RED + "You must wait " + ChatColor.BLUE + plugin.cooldown1.get(player.getName()) + ChatColor.RED + " seconds to reuse this item!");
    }
    }
    
    This is main cooldown part you want to put in your event:
    Code:
    if (plugin.cooldown1.get(player.getName()) <= 0) {
     
                      plugin.cooldown1.put(player.getName(), cooldown);
     
    //Do stuff here! Like spawn lightning: player.strickLightning(location);
     
          }
    }else{
                  player.sendMessage(ChatColor.RED + "You must wait " + ChatColor.BLUE + plugin.cooldown1.get(player.getName()) + ChatColor.RED + " seconds to reuse this item!");
    }
    
    When you log into your Minecraft server, use the stick and lightning and a tnt explosion will start at your location, and when you try to use the stick again, you can't use it until the time has expired!

    Thanks everyone!

    Is anything not working on your plugin, please leave a comment below!
     
  2. Offline

    mrgreen33gamer

    For some reason, im getting emails saying that elementalgodz11 is posting stuff on my post, but its not posting it on this topic :I
     
  3. Offline

    viper_monster

  4. Offline

    mrgreen33gamer

    Hello everyone, I don't want to get the codes up in the main topic mixed with this code im about to show you.

    This code lets you have 2 separate cooldowns so that if you use one item, the cooldown will appear, and if you use another item with the same cooldown method, it still gives you the cooldown from the previous items:

    MainClass:
    Show Spoiler

    Code:
    package com.mrgreen33gamer.kits;
     
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.logging.Logger;
     
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.World;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.ShapedRecipe;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scheduler.BukkitTask;
     
    public class MainClass extends JavaPlugin implements Listener {
     
      public final Logger logger = Logger.getLogger("Minecraft");
      public static MainClass plugin;
      
      public CoolDownManager cool1down;
      HashMap<String, Integer> cooldown1;
      
      public CoolDownManager cool2down;
      HashMap<String, Integer> cooldown2;
      
      
      @Override
      public void onEnable()
      {
     
     this.logger.info("Your test cooldown plugin has been enabled :D");
     
     
    this.getServer().getPluginManager().registerEvents(this, this);
     
     
        new EventClass(this);
        
        @SuppressWarnings("unused")
    BukkitTask Cooldown = new CoolDownManager(this).runTaskTimer(this, 20, 20);
        
        cooldown1 = new HashMap<String, Integer>();
        cooldown2 = new HashMap<String, Integer>();
        
      }
      
      
      
      @Override
      public void onDisable()
      {
     
     this.logger.info("Your test cooldown plugin has been disabled D:!");
     
      }
      
    }
     
    


    EventClass:
    Show Spoiler

    Code:
     
    package com.mrgreen33gamer.kits;
     
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.World;
    import org.bukkit.entity.Fireball;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.player.PlayerInteractEvent;
     
    public class EventClass implements Listener{
     
    private MainClass plugin;
    private int cooldown1 = 10;
    private int cooldown2 = 20;
     
    @EventHandler
    public void cooldownTest1(PlayerInteractEvent e) {
    Action action = e.getAction();
    Player player = e.getPlayer();
    World world = player.getWorld();
    Location location = player.getLocation();
    if(((action.equals(Action.RIGHT_CLICK_AIR)) && e.getItem().getType()==Material.STICK)){
    if(player.hasPermission("kit.kits.exploderitem")){
                   
    if (plugin.cooldown1.get(player.getName()) <= 0) {
     
                       plugin.cooldown1.put(player.getName(), cooldown1);
                       
    player.sendMessage(ChatColor.RED + "You have stuck lightning at your location!");
    world.strikeLightning(location);
     
    }else{
                   player.sendMessage(ChatColor.RED + "You must wait " + ChatColor.BLUE + plugin.cooldown1.get(player.getName()) + ChatColor.RED + " seconds to reuse the Exploder-Item!");
    }
    }
    }
    }
     
    @EventHandler
    public void cooldownTest2(PlayerInteractEvent e) {
    Action action = e.getAction();
    Player player = e.getPlayer();
    World world = player.getWorld();
    Location location = player.getLocation();
    if(((action.equals(Action.RIGHT_CLICK_AIR)) && e.getItem().getType()==Material.BLAZE_ROD)){
    if(player.hasPermission("kit.kits.exploderitem")){
                   
    if (plugin.cooldown2.get(player.getName()) <= 0) {
     
    player.sendMessage(ChatColor.RED + "You have launched a fireball!");
    player.launchProjectile(Fireball.class);
     
                       plugin.cooldown2.put(player.getName(), cooldown2);
     
    }else{
                   player.sendMessage(ChatColor.RED + "You must wait " + ChatColor.BLUE + plugin.cooldown1.get(player.getName()) + ChatColor.RED + " seconds to reuse the Exploder-Item!");
    }
    }
    }
    }
     
    }
     
    


    CoolDownManager:
    Show Spoiler

    Code:
    package com.mrgreen33gamer.kits;
     
     
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.bukkit.scheduler.BukkitRunnable;
     
     
    public class CoolDownManager extends BukkitRunnable {
     
    public MainClass plugin;
     
    public CoolDownManager(MainClass plugin){
    this.plugin = plugin;
    }
     
    public void run() {
     
    for(Player player : Bukkit.getServer().getOnlinePlayers()) {
     
       try{
           plugin.cooldown1.put(player.getName(), plugin.cooldown1.get(player.getName()) - 1);
       }catch(Exception e){
           plugin.cooldown1.put(player.getName(), 0);
       }
    }
     
    for(Player player : Bukkit.getServer().getOnlinePlayers()) {
     
       try{
           plugin.cooldown2.put(player.getName(), plugin.cooldown2.get(player.getName()) - 1);
       }catch(Exception e){
           plugin.cooldown2.put(player.getName(), 0);
       }
    }
    }
    }
    


    Enjoy :D
     
Thread Status:
Not open for further replies.

Share This Page