|
@@ -0,0 +1,74 @@
|
|
|
+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!");
|
|
|
+
|
|
|
+ }
|
|
|
+}
|