Advertisement
Guest User

Untitled

a guest
Jan 11th, 2016
468
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.04 KB | None | 0 0
  1. package io.github.warren1001.slowregen;
  2.  
  3. import java.util.ArrayList;
  4. import org.bukkit.ChatColor;
  5. import org.bukkit.command.Command;
  6. import org.bukkit.command.CommandSender;
  7. import org.bukkit.entity.Player;
  8. import org.bukkit.event.EventHandler;
  9. import org.bukkit.event.Listener;
  10. import org.bukkit.event.entity.EntityRegainHealthEvent;
  11. import org.bukkit.plugin.java.JavaPlugin;
  12. import org.bukkit.scheduler.BukkitRunnable;
  13. import org.bukkit.scheduler.BukkitTask;
  14.  
  15. public final class Main extends JavaPlugin implements Listener {
  16.    
  17.     private boolean on = true;
  18.     private BukkitTask task;
  19.    
  20.     @Override
  21.     public final void onEnable() {
  22.         getConfig().addDefault("delay-in-seconds", 6);
  23.         getConfig().addDefault("no-permission-msg", "You do not have the permissions to use this command.");
  24.         getConfig().addDefault("command-permission", "sr.use");
  25.         getConfig().options().copyDefaults();
  26.         saveConfig();
  27.         getServer().getPluginManager().registerEvents(this, this);
  28.         startTask();
  29.     }
  30.    
  31.     @Override
  32.     public final boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) {
  33.         if(cmd.getName().equalsIgnoreCase("sr")) {
  34.             if(!sender.hasPermission(getConfig().getString("command-permission"))) {
  35.                 sender.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("no-permission-msg")));
  36.                 return true;
  37.             }
  38.             if(args.length < 1) return false;
  39.             if(args[0].equalsIgnoreCase("delay")) {
  40.                 int delay = getConfig().getInt("delay-in-seconds");
  41.                 if(args.length < 2) sender.sendMessage("The delay is " + delay + " " + (delay == 1 ? "second" : "seconds") + ".");
  42.                 else {
  43.                     try {
  44.                         delay = Integer.parseInt(args[1]);
  45.                         getConfig().set("delay-in-seconds", delay);
  46.                         startTask();
  47.                         sender.sendMessage("Set the delay to " + delay + " " + (delay == 1 ? "second" : "seconds") + ".");
  48.                     }
  49.                     catch(NumberFormatException e) {
  50.                         sender.sendMessage(args[1] + " is not a number!");
  51.                     }
  52.                 }
  53.             }
  54.             else if(args[0].equalsIgnoreCase("reload")) {
  55.                 reloadConfig();
  56.                 startTask();
  57.                 sender.sendMessage("Configuration reloaded.");
  58.             }
  59.             else if(args[0].equalsIgnoreCase("toggle")) {
  60.                 if(on) {
  61.                     on = false;
  62.                     if(task != null) task.cancel();
  63.                     sender.sendMessage("The timer is now off!");
  64.                 }
  65.                 else {
  66.                     on = true;
  67.                     startTask();
  68.                     sender.sendMessage("The timer is now on!");
  69.                 }
  70.             }
  71.         }
  72.         return true;
  73.     }
  74.    
  75.     @EventHandler
  76.     public final void ERHE(final EntityRegainHealthEvent event) {
  77.         if(event.getEntity() instanceof Player && on) event.setCancelled(true);
  78.     }
  79.    
  80.     public final void startTask() {
  81.         if(task != null) task.cancel();
  82.         task = new BukkitRunnable() {
  83.             @Override
  84.             public void run() {
  85.                 for(final Player player : new ArrayList<>(getServer().getOnlinePlayers())) {
  86.                     final double health = player.getHealth();
  87.                     if(health > 0.0 && health < player.getMaxHealth()) player.setHealth(health + 1);
  88.                 }
  89.             }
  90.         }.runTaskTimer(this, 0L, getConfig().getInt("delay-in-seconds", 6) * 20L);
  91.     }
  92.    
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement