From 29b669e2f686b36b67be0773a3c69357bec5cf00 Mon Sep 17 00:00:00 2001 From: M_Viper Date: Fri, 15 Aug 2025 17:19:43 +0000 Subject: [PATCH] Dateien nach "src/main/java/craftersland/bridge/inventory/objects" hochladen --- .../objects/DatabaseInventoryData.java | 33 +++++++++++ .../inventory/objects/InventorySyncData.java | 41 +++++++++++++ .../inventory/objects/InventorySyncTask.java | 57 +++++++++++++++++++ .../inventory/objects/SyncCompleteTask.java | 56 ++++++++++++++++++ 4 files changed, 187 insertions(+) create mode 100644 src/main/java/craftersland/bridge/inventory/objects/DatabaseInventoryData.java create mode 100644 src/main/java/craftersland/bridge/inventory/objects/InventorySyncData.java create mode 100644 src/main/java/craftersland/bridge/inventory/objects/InventorySyncTask.java create mode 100644 src/main/java/craftersland/bridge/inventory/objects/SyncCompleteTask.java diff --git a/src/main/java/craftersland/bridge/inventory/objects/DatabaseInventoryData.java b/src/main/java/craftersland/bridge/inventory/objects/DatabaseInventoryData.java new file mode 100644 index 0000000..0fa60a4 --- /dev/null +++ b/src/main/java/craftersland/bridge/inventory/objects/DatabaseInventoryData.java @@ -0,0 +1,33 @@ +package net.craftersland.bridge.inventory.objects; + +public class DatabaseInventoryData { + + private String rawInv; + private String rawAr; + private String syncComplete; + private String lastSee; + + public DatabaseInventoryData(String rawInventory, String rawArmor, String syncStatus, String lastSeen) { + this.rawInv = rawInventory; + this.rawAr = rawArmor; + this.syncComplete = syncStatus; + this.lastSee = lastSeen; + } + + public String getLastSeen() { + return lastSee; + } + + public String getSyncStatus() { + return syncComplete; + } + + public String getRawArmor() { + return rawAr; + } + + public String getRawInventory() { + return rawInv; + } + +} diff --git a/src/main/java/craftersland/bridge/inventory/objects/InventorySyncData.java b/src/main/java/craftersland/bridge/inventory/objects/InventorySyncData.java new file mode 100644 index 0000000..364c885 --- /dev/null +++ b/src/main/java/craftersland/bridge/inventory/objects/InventorySyncData.java @@ -0,0 +1,41 @@ +package net.craftersland.bridge.inventory.objects; + +import org.bukkit.inventory.ItemStack; + +public class InventorySyncData { + + private ItemStack[] backupInv; + private ItemStack[] backupAr; + private Boolean syncComplete; + + public InventorySyncData() { + this.backupInv = null; + this.backupAr = null; + this.syncComplete = false; + } + + public void setSyncStatus(boolean syncStatus) { + syncComplete = syncStatus; + } + + public Boolean getSyncStatus() { + return syncComplete; + } + + public ItemStack[] getBackupArmor() { + return backupAr; + } + + public ItemStack[] getBackupInventory() { + return backupInv; + } + + public void setBackupInventory(ItemStack[] backupInventory) { + backupInv = backupInventory; + } + + public void setBackupArmor(ItemStack[] backupArmor) { + backupAr = backupArmor; + } + +} diff --git a/src/main/java/craftersland/bridge/inventory/objects/InventorySyncTask.java b/src/main/java/craftersland/bridge/inventory/objects/InventorySyncTask.java new file mode 100644 index 0000000..661a804 --- /dev/null +++ b/src/main/java/craftersland/bridge/inventory/objects/InventorySyncTask.java @@ -0,0 +1,57 @@ +package net.craftersland.bridge.inventory.objects; + +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +import net.craftersland.bridge.inventory.Inv; + +public class InventorySyncTask extends BukkitRunnable { + + private Inv pd; + private long startTime; + private Player p; + private boolean inProgress = false; + private InventorySyncData syncD; + + public InventorySyncTask(Inv pd, long start, Player player, InventorySyncData syncData) { + this.pd = pd; + this.startTime = start; + this.p = player; + this.syncD = syncData; + } + + @Override + public void run() { + if (inProgress == false) { + if (p != null) { + if (p.isOnline() == true) { + inProgress = true; + DatabaseInventoryData data = pd.getInvMysqlInterface().getData(p); + if (data.getSyncStatus().matches("true")) { + pd.getInventoryDataHandler().setPlayerData(p, data, syncD, true); + inProgress = false; + this.cancel(); + } else if (System.currentTimeMillis() - Long.parseLong(data.getLastSeen()) >= 600 * 1000) { + pd.getInventoryDataHandler().setPlayerData(p, data, syncD, true); + inProgress = false; + this.cancel(); + } else if (System.currentTimeMillis() - startTime >= 22 * 1000) { + pd.getInventoryDataHandler().setPlayerData(p, data, syncD, true); + inProgress = false; + this.cancel(); + } + inProgress = false; + } else { + //inProgress = false; + this.cancel(); + } + } else { + //inProgress = false; + this.cancel(); + } + } + } + + + +} diff --git a/src/main/java/craftersland/bridge/inventory/objects/SyncCompleteTask.java b/src/main/java/craftersland/bridge/inventory/objects/SyncCompleteTask.java new file mode 100644 index 0000000..46c3e30 --- /dev/null +++ b/src/main/java/craftersland/bridge/inventory/objects/SyncCompleteTask.java @@ -0,0 +1,56 @@ +package net.craftersland.bridge.inventory.objects; + +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +import net.craftersland.bridge.inventory.Inv; + +public class SyncCompleteTask extends BukkitRunnable { + + private Inv pd; + private long startTime; + private Player p; + private boolean inProgress = false; + + public SyncCompleteTask(Inv pd, long start, Player player) { + this.pd = pd; + this.startTime = start; + this.p = player; + } + + @Override + public void run() { + if (inProgress == false) { + if (p != null) { + if (p.isOnline() == true) { + inProgress = true; + if (pd.getInventoryDataHandler().isSyncComplete(p) == true) { + if (pd.getConfigHandler().getString("ChatMessages.syncComplete").matches("") == false) { + p.sendMessage(pd.getConfigHandler().getStringWithColor("ChatMessages.syncComplete")); + } + pd.getSoundHandler().sendLevelUpSound(p); + this.cancel(); + } else { + if (System.currentTimeMillis() - startTime >= 20 * 1000) { + //Set sync to true in database to force sync data after 20 sec + pd.getInvMysqlInterface().setSyncStatus(p, "true"); + } else if (System.currentTimeMillis() - startTime >= 40 * 1000) { + //Stop task after 40 sec + this.cancel(); + } + + } + } else { + //inProgress = false; + this.cancel(); + } + } else { + //inProgress = false; + this.cancel(); + } + } + } + + + +}