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