From 13333130a4b6c6b02d89fd06164a6a4af9ce139b Mon Sep 17 00:00:00 2001 From: M_Viper Date: Tue, 12 Aug 2025 22:09:19 +0000 Subject: [PATCH] Dateien nach "src/main/java/craftersland/eco/bridge/events" hochladen --- .../eco/bridge/events/PlayerDisconnect.java | 42 +++++++++++ .../eco/bridge/events/PlayerJoin.java | 71 +++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 src/main/java/craftersland/eco/bridge/events/PlayerDisconnect.java create mode 100644 src/main/java/craftersland/eco/bridge/events/PlayerJoin.java diff --git a/src/main/java/craftersland/eco/bridge/events/PlayerDisconnect.java b/src/main/java/craftersland/eco/bridge/events/PlayerDisconnect.java new file mode 100644 index 0000000..46f86c5 --- /dev/null +++ b/src/main/java/craftersland/eco/bridge/events/PlayerDisconnect.java @@ -0,0 +1,42 @@ +package net.craftersland.eco.bridge.events; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerQuitEvent; + +import net.craftersland.eco.bridge.Eco; + +public class PlayerDisconnect implements Listener { + + private Eco eco; + + public PlayerDisconnect(Eco eco) { + this.eco = eco; + } + + @EventHandler + public void onDisconnect(final PlayerQuitEvent event) { + Bukkit.getScheduler().runTaskLaterAsynchronously(eco, new Runnable() { + + @Override + public void run() { + if (event.getPlayer() != null) { + Player p = event.getPlayer(); + cleanup(p); + eco.getEcoDataHandler().onDataSaveFunction(p, true, "true", false); + } + } + + }, 1L); + } + + private void cleanup(Player p) { + if (eco.syncCompleteTasks.containsKey(p) == true) { + Bukkit.getScheduler().cancelTask(eco.syncCompleteTasks.get(p)); + eco.syncCompleteTasks.remove(p); + } + } + +} diff --git a/src/main/java/craftersland/eco/bridge/events/PlayerJoin.java b/src/main/java/craftersland/eco/bridge/events/PlayerJoin.java new file mode 100644 index 0000000..3cdfa2c --- /dev/null +++ b/src/main/java/craftersland/eco/bridge/events/PlayerJoin.java @@ -0,0 +1,71 @@ +package net.craftersland.eco.bridge.events; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.scheduler.BukkitTask; + +import net.craftersland.eco.bridge.Eco; + +public class PlayerJoin implements Listener { + + private Eco eco; + + public PlayerJoin(Eco eco) { + this.eco = eco; + } + + @EventHandler + public void onJoin(final PlayerJoinEvent event) { + Bukkit.getScheduler().runTaskLaterAsynchronously(eco, new Runnable() { + + @Override + public void run() { + if (event.getPlayer() != null) { + if (event.getPlayer().isOnline() == true) { + Player p = event.getPlayer(); + eco.getEcoDataHandler().onJoinFunction(p); + syncCompleteTask(p); + } + } + } + + }, 5L); + } + + private void syncCompleteTask(final Player p) { + if (p != null) { + if (p.isOnline() == true) { + final long startTime = System.currentTimeMillis(); + BukkitTask task = Bukkit.getScheduler().runTaskTimerAsynchronously(eco, new Runnable() { + + @Override + public void run() { + if (p.isOnline() == true) { + if (eco.getEcoDataHandler().isSyncComplete(p)) { + if (eco.syncCompleteTasks.containsKey(p) == true) { + int taskID = eco.syncCompleteTasks.get(p); + eco.syncCompleteTasks.remove(p); + Bukkit.getScheduler().cancelTask(taskID); + } + } else { + if (System.currentTimeMillis() - startTime >= 10 * 1000) { + if (eco.syncCompleteTasks.containsKey(p) == true) { + int taskID = eco.syncCompleteTasks.get(p); + eco.syncCompleteTasks.remove(p); + Bukkit.getScheduler().cancelTask(taskID); + } + } + } + } + } + + }, 5L, 20L); + eco.syncCompleteTasks.put(p, task.getTaskId()); + } + } + } + +}