Main.java 2.1 KB

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