Main.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package xyz.spaceio.spectatorafk;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import org.bukkit.Bukkit;
  6. import org.bukkit.GameMode;
  7. import org.bukkit.Location;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.plugin.java.JavaPlugin;
  10. public class Main extends JavaPlugin{
  11. public static HashMap<Player, Location> locations = new HashMap<>();
  12. public static HashMap<Player, Integer> seconds = new HashMap<>();
  13. public static List<Player> afk = new ArrayList<>();
  14. @Override
  15. public void onDisable() {
  16. for(Player p : afk) {
  17. if(p.isOnline()) {
  18. p.setGameMode(GameMode.SURVIVAL);
  19. p.setWalkSpeed(0.2f);
  20. p.setFlySpeed(0.2f);
  21. }
  22. }
  23. }
  24. @Override
  25. public void onEnable() {
  26. this.getServer().getPluginManager().registerEvents(new Listeners(), this);
  27. Bukkit.getScheduler().runTaskTimer(this, () -> {
  28. for(Player player : Bukkit.getOnlinePlayers()) {
  29. Location ploc = player.getLocation();
  30. if(locations.containsKey(player)) {
  31. if(ploc.getX() == locations.get(player).getX() &&
  32. ploc.getZ() == locations.get(player).getZ()) {
  33. int before = seconds.getOrDefault(player, 0);
  34. seconds.put(player, before + 1);
  35. }else {
  36. seconds.remove(player);
  37. if(afk.contains(player)) {
  38. removeFromAfk(player);
  39. }
  40. }
  41. }
  42. locations.put(player, ploc);
  43. int time = seconds.getOrDefault(player, 0);
  44. if(time >= 120 && !afk.contains(player)) {
  45. // put afk
  46. afk.add(player);
  47. player.teleport(player.getLocation().add(0, 0.2, 0));
  48. player.setGameMode(GameMode.SPECTATOR);
  49. player.setWalkSpeed(0);
  50. player.setFlySpeed(0);
  51. player.sendMessage("§aDu bist nun AFK!");
  52. }
  53. }
  54. }, 20L, 20L);
  55. }
  56. public static void removeFromAfk(Player player) {
  57. player.setWalkSpeed(0.2f);
  58. player.setFlySpeed(0.2f);
  59. player.setGameMode(GameMode.SURVIVAL);
  60. Main.afk.remove(player);
  61. Main.seconds.remove(player);
  62. player.sendMessage("§aWelcome back!");
  63. }
  64. }