src/main/java/de/viper/survivalplus/listeners/AFKListener.java aktualisiert

This commit is contained in:
2025-08-04 05:08:56 +00:00
parent c237f2b8c3
commit bc801863e1

View File

@@ -1,120 +1,120 @@
package de.viper.survivalplus.listeners; package de.viper.survivalplus.listeners;
import de.viper.survivalplus.SurvivalPlus; import de.viper.survivalplus.SurvivalPlus;
import de.viper.survivalplus.tasks.AFKManager; import de.viper.survivalplus.tasks.AFKManager;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.*; import org.bukkit.event.player.*;
import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
public class AFKListener implements Listener { public class AFKListener implements Listener {
private final SurvivalPlus plugin; private final SurvivalPlus plugin;
private AFKManager afkManager; private AFKManager afkManager;
private boolean afkEnabled; private boolean afkEnabled;
private FileConfiguration config; private FileConfiguration config;
private BukkitRunnable afkTask; private BukkitRunnable afkTask;
public AFKListener(SurvivalPlus plugin) { public AFKListener(SurvivalPlus plugin) {
this.plugin = plugin; this.plugin = plugin;
this.config = plugin.getConfig(); this.config = plugin.getConfig();
loadSettings(); loadSettings();
if (afkEnabled) { if (afkEnabled) {
startTask(); startTask();
} }
} }
private void loadSettings() { private void loadSettings() {
this.afkEnabled = config.getBoolean("afk.enabled", true); this.afkEnabled = config.getBoolean("afk.enabled", true);
long afkAfter = config.getLong("afk.afk-after-seconds", 300); long afkAfter = config.getLong("afk.afk-after-seconds", 300);
long kickAfter = config.getLong("afk.kick-after-seconds", 0); long kickAfter = config.getLong("afk.kick-after-seconds", 0);
this.afkManager = new AFKManager(plugin, afkAfter, kickAfter); this.afkManager = new AFKManager(plugin, afkAfter, kickAfter);
} }
private void startTask() { private void startTask() {
if (afkTask != null) { if (afkTask != null) {
afkTask.cancel(); afkTask.cancel();
} }
afkTask = new BukkitRunnable() { afkTask = new BukkitRunnable() {
@Override @Override
public void run() { public void run() {
for (Player player : Bukkit.getOnlinePlayers()) { for (Player player : Bukkit.getOnlinePlayers()) {
afkManager.checkAFKStatus(player); afkManager.checkAFKStatus(player);
} }
} }
}; };
afkTask.runTaskTimer(plugin, 20L, 100L); afkTask.runTaskTimer(plugin, 60L, 100L); // Start nach 3 Sekunden (60 Ticks), dann alle 5 Sekunden (100 Ticks)
} }
private void handleActivity(Player player) { private void handleActivity(Player player) {
if (!afkEnabled) return; if (!afkEnabled) return;
afkManager.updateActivity(player); afkManager.updateActivity(player);
} }
@org.bukkit.event.EventHandler @org.bukkit.event.EventHandler
public void onMove(PlayerMoveEvent event) { public void onMove(PlayerMoveEvent event) {
if (!event.getFrom().toVector().equals(event.getTo().toVector())) { if (!event.getFrom().toVector().equals(event.getTo().toVector())) {
handleActivity(event.getPlayer()); handleActivity(event.getPlayer());
} }
} }
@org.bukkit.event.EventHandler @org.bukkit.event.EventHandler
public void onChat(AsyncPlayerChatEvent event) { public void onChat(AsyncPlayerChatEvent event) {
handleActivity(event.getPlayer()); handleActivity(event.getPlayer());
} }
@org.bukkit.event.EventHandler @org.bukkit.event.EventHandler
public void onInteract(PlayerInteractEvent event) { public void onInteract(PlayerInteractEvent event) {
handleActivity(event.getPlayer()); handleActivity(event.getPlayer());
} }
@org.bukkit.event.EventHandler @org.bukkit.event.EventHandler
public void onInventoryClick(InventoryClickEvent event) { public void onInventoryClick(InventoryClickEvent event) {
if (event.getWhoClicked() instanceof Player player) { if (event.getWhoClicked() instanceof Player player) {
handleActivity(player); handleActivity(player);
} }
} }
@org.bukkit.event.EventHandler @org.bukkit.event.EventHandler
public void onBlockPlace(BlockPlaceEvent event) { public void onBlockPlace(BlockPlaceEvent event) {
handleActivity(event.getPlayer()); handleActivity(event.getPlayer());
} }
@org.bukkit.event.EventHandler @org.bukkit.event.EventHandler
public void onBlockBreak(BlockBreakEvent event) { public void onBlockBreak(BlockBreakEvent event) {
handleActivity(event.getPlayer()); handleActivity(event.getPlayer());
} }
@org.bukkit.event.EventHandler @org.bukkit.event.EventHandler
public void onJoin(PlayerJoinEvent event) { public void onJoin(PlayerJoinEvent event) {
afkManager.updateActivity(event.getPlayer()); afkManager.updateActivity(event.getPlayer());
} }
@org.bukkit.event.EventHandler @org.bukkit.event.EventHandler
public void onQuit(PlayerQuitEvent event) { public void onQuit(PlayerQuitEvent event) {
afkManager.reset(event.getPlayer()); afkManager.reset(event.getPlayer());
} }
public void reloadConfig(FileConfiguration config) { public void reloadConfig(FileConfiguration config) {
this.config = config; this.config = config;
loadSettings(); loadSettings();
if (afkTask != null) { if (afkTask != null) {
afkTask.cancel(); afkTask.cancel();
afkTask = null; afkTask = null;
} }
if (afkEnabled) { if (afkEnabled) {
startTask(); startTask();
} }
} }
} }