1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package xyz.spaceio.spectatorafk;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import org.bukkit.Bukkit;
- import org.bukkit.GameMode;
- import org.bukkit.Location;
- import org.bukkit.entity.Player;
- import org.bukkit.plugin.java.JavaPlugin;
- public class Main extends JavaPlugin{
- public static HashMap<Player, Location> locations = new HashMap<>();
- public static HashMap<Player, Integer> seconds = new HashMap<>();
- public static List<Player> afk = new ArrayList<>();
-
- @Override
- public void onDisable() {
- for(Player p : afk) {
- if(p.isOnline()) {
- p.setGameMode(GameMode.SURVIVAL);
- p.setWalkSpeed(0.2f);
- p.setFlySpeed(0.2f);
- }
- }
- }
-
- @Override
- public void onEnable() {
- this.getServer().getPluginManager().registerEvents(new Listeners(), this);
-
- Bukkit.getScheduler().runTaskTimer(this, () -> {
- for(Player player : Bukkit.getOnlinePlayers()) {
- Location ploc = player.getLocation();
- if(locations.containsKey(player)) {
- if(ploc.getX() == locations.get(player).getX() &&
- ploc.getZ() == locations.get(player).getZ()) {
- int before = seconds.getOrDefault(player, 0);
- seconds.put(player, before + 1);
- }else {
- seconds.remove(player);
- if(afk.contains(player)) {
- removeFromAfk(player);
- }
- }
- }
- locations.put(player, ploc);
-
- int time = seconds.getOrDefault(player, 0);
- if(time >= 120 && !afk.contains(player)) {
- // put afk
- afk.add(player);
- player.teleport(player.getLocation().add(0, 0.2, 0));
- player.setGameMode(GameMode.SPECTATOR);
- player.setWalkSpeed(0);
- player.setFlySpeed(0);
- player.sendMessage("§aDu bist nun AFK!");
- }
- }
- }, 20L, 20L);
- }
-
- public static void removeFromAfk(Player player) {
- player.setWalkSpeed(0.2f);
- player.setFlySpeed(0.2f);
- player.setGameMode(GameMode.SURVIVAL);
- Main.afk.remove(player);
- Main.seconds.remove(player);
-
- player.sendMessage("§aWelcome back!");
-
- }
- }
|