Guest User

Untitled

a guest
Mar 30th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. package pl.unixhc.core.managers;
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.entity.Player;
  5. import org.bukkit.event.EventHandler;
  6. import org.bukkit.event.EventPriority;
  7. import org.bukkit.event.Listener;
  8. import org.bukkit.event.entity.EntityDamageEvent;
  9. import org.bukkit.event.player.PlayerMoveEvent;
  10. import org.bukkit.event.player.PlayerQuitEvent;
  11. import org.bukkit.scheduler.BukkitRunnable;
  12.  
  13. import pl.unixhc.core.utils.TimerCallback;
  14.  
  15. import java.util.HashMap;
  16. import java.util.Map;
  17. import java.util.UUID;
  18.  
  19. public class TimerManager implements Listener{
  20. private static final Map<UUID, TimerTask> tasks;
  21.  
  22. static{
  23. tasks = new HashMap<UUID, TimerTask>();
  24. }
  25.  
  26. public static void addTask(final Player player, final TimerCallback<Player> call, final int time) {
  27. if(player.hasPermission("unixhc.core.bypass")){
  28. call.success(player);
  29. return;
  30. }
  31. TimerTask t = TimerManager.tasks.get(player.getUniqueId());
  32. if(t != null){
  33. t.cancel(player);
  34. return;
  35. }
  36. t = new TimerTask(player.getUniqueId(), call);
  37. TimerManager.tasks.put(player.getUniqueId(), t);
  38. }
  39.  
  40. private static void cancel(final TimerTask task, final Player player){
  41. task.cancel(player);
  42. TimerManager.tasks.remove(player.getUniqueId());
  43. }
  44.  
  45. @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
  46. public void onMove(final PlayerMoveEvent event){
  47. if(event.getFrom().getBlockX() == event.getTo().getBlockX() && event.getFrom().getBlockY() == event.getTo().getBlockY() && event.getFrom().getBlockZ() == event.getTo().getBlockZ()) {
  48. return;
  49. }
  50. final TimerTask t = TimerManager.tasks.get(event.getPlayer().getUniqueId());
  51. if(t != null){
  52. cancel(t, event.getPlayer());
  53. }
  54. }
  55.  
  56. @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
  57. public void onDamage(final EntityDamageEvent event){
  58. if(event.getEntity() instanceof Player){
  59. final Player player = (Player)event.getEntity();
  60. final TimerTask t = TimerManager.tasks.get(player.getUniqueId());
  61. if (t != null){
  62. cancel(t, player);
  63. }
  64. }
  65. }
  66.  
  67. @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
  68. public void onQuit(final PlayerQuitEvent event){
  69. final Player player = event.getPlayer();
  70. final TimerTask t = TimerManager.tasks.get(player.getUniqueId());
  71. if(t != null){
  72. cancel(t, player);
  73. }
  74. }
  75.  
  76.  
  77. public static class TimerTask extends BukkitRunnable
  78. {
  79. private UUID player;
  80. private TimerCallback<Player> call;
  81.  
  82. public void run(){
  83. this.call.success(Bukkit.getPlayer(this.player));
  84. TimerManager.tasks.remove(this.player);
  85. }
  86.  
  87. public void cancel(final Player player){
  88. super.cancel();
  89. this.call.error(player);
  90. }
  91.  
  92. public TimerTask(final UUID player, final TimerCallback<Player> call) {
  93. super();
  94. this.player = player;
  95. this.call = call;
  96. }
  97.  
  98. public UUID getPlayer(){
  99. return this.player;
  100. }
  101. }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment