From 59ad3259cc171d4e3a655d8cdda8a01bedf41770 Mon Sep 17 00:00:00 2001 From: Ka0rX Date: Sun, 25 Jun 2023 21:41:05 +0100 Subject: [PATCH] Fixed issue #869 about health not syncing between servers. --- .../Indyuce/mmocore/api/player/PlayerData.java | 4 ++-- .../mmocore/api/quest/ObjectiveProgress.java | 7 +++---- .../Indyuce/mmocore/api/quest/PlayerQuests.java | 4 ++-- .../net/Indyuce/mmocore/api/util/Closable.java | 15 --------------- .../manager/data/sql/MMOCoreDataSynchronizer.java | 4 +--- .../net/Indyuce/mmocore/player/CombatHandler.java | 4 ++-- .../mmocore/skill/binding/BoundSkillInfo.java | 4 ++-- 7 files changed, 12 insertions(+), 30 deletions(-) delete mode 100644 MMOCore-API/src/main/java/net/Indyuce/mmocore/api/util/Closable.java diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java index f2bf4363..1375e555 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java @@ -6,6 +6,7 @@ import io.lumine.mythic.lib.api.stat.StatInstance; import io.lumine.mythic.lib.api.stat.modifier.StatModifier; import io.lumine.mythic.lib.data.SynchronizedDataHolder; import io.lumine.mythic.lib.player.cooldown.CooldownMap; +import io.lumine.mythic.lib.util.Closeable; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.SoundEvent; @@ -25,7 +26,6 @@ import net.Indyuce.mmocore.api.player.stats.PlayerStats; import net.Indyuce.mmocore.api.quest.PlayerQuests; import net.Indyuce.mmocore.api.quest.trigger.StatTrigger; import net.Indyuce.mmocore.api.quest.trigger.Trigger; -import net.Indyuce.mmocore.api.util.Closable; import net.Indyuce.mmocore.api.util.MMOCoreUtils; import net.Indyuce.mmocore.experience.EXPSource; import net.Indyuce.mmocore.experience.ExperienceObject; @@ -69,7 +69,7 @@ import java.util.*; import java.util.logging.Level; import java.util.stream.Collectors; -public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerData, Closable, ExperienceTableClaimer, ClassDataContainer { +public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerData, Closeable, ExperienceTableClaimer, ClassDataContainer { /** * Can be null, the {@link #getProfess()} method will return the diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/ObjectiveProgress.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/ObjectiveProgress.java index a94c4f68..f55c0658 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/ObjectiveProgress.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/ObjectiveProgress.java @@ -1,15 +1,14 @@ package net.Indyuce.mmocore.api.quest; +import io.lumine.mythic.lib.util.Closeable; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.player.PlayerData; -import net.Indyuce.mmocore.api.util.Closable; +import net.Indyuce.mmocore.api.quest.objective.Objective; import org.bukkit.Bukkit; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; -import net.Indyuce.mmocore.api.quest.objective.Objective; - -public abstract class ObjectiveProgress implements Closable { +public abstract class ObjectiveProgress implements Closeable { private final Objective objective; private final QuestProgress questProgress; diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/PlayerQuests.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/PlayerQuests.java index 6e866a80..5ebece1d 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/PlayerQuests.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/quest/PlayerQuests.java @@ -3,9 +3,9 @@ package net.Indyuce.mmocore.api.quest; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import io.lumine.mythic.lib.util.Closeable; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.player.PlayerData; -import net.Indyuce.mmocore.api.util.Closable; import org.bukkit.Bukkit; import org.bukkit.NamespacedKey; import org.bukkit.boss.BarColor; @@ -21,7 +21,7 @@ import java.util.Map.Entry; import java.util.Set; import java.util.logging.Level; -public class PlayerQuests implements Closable { +public class PlayerQuests implements Closeable { private final PlayerData playerData; private final Map finished = new HashMap<>(); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/util/Closable.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/util/Closable.java deleted file mode 100644 index 4b5283f3..00000000 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/util/Closable.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.Indyuce.mmocore.api.util; - -/** - * Indicates that a class temporarily registers something - * such as a Bukkit event, which needs to be unregistered - * when the class is finally garbage collected. - */ -public interface Closable { - - /** - * Method that must be called before the class - * is garbage collected - */ - void close(); -} diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/data/sql/MMOCoreDataSynchronizer.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/data/sql/MMOCoreDataSynchronizer.java index c8622051..8a2f1dc2 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/data/sql/MMOCoreDataSynchronizer.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/data/sql/MMOCoreDataSynchronizer.java @@ -123,13 +123,11 @@ public class MMOCoreDataSynchronizer extends SQLDataSynchronizer { * These should be loaded after to make sure that the * MAX_MANA, MAX_STAMINA & MAX_STELLIUM stats are already loaded. */ - getData().setHealth(result.getDouble("health")); + double health = result.getDouble("health"); getData().setMana(result.getDouble("mana")); getData().setStamina(result.getDouble("stamina")); getData().setStellium(result.getDouble("stellium")); - if (getData().isOnline()) { - double health = getData().getHealth(); health = health == 0 ? getData().getPlayer().getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue() : health; health = Math.max(Math.min(health, getData().getPlayer().getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()), 0); getData().getPlayer().setHealth(health); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/player/CombatHandler.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/player/CombatHandler.java index dfe24ed6..5f4ce07b 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/player/CombatHandler.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/player/CombatHandler.java @@ -1,16 +1,16 @@ package net.Indyuce.mmocore.player; +import io.lumine.mythic.lib.util.Closeable; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.event.PlayerCombatEvent; import net.Indyuce.mmocore.api.player.PlayerData; -import net.Indyuce.mmocore.api.util.Closable; import net.Indyuce.mmocore.command.PvpModeCommand; import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; import org.bukkit.scheduler.BukkitTask; import org.jetbrains.annotations.Nullable; -public class CombatHandler implements Closable { +public class CombatHandler implements Closeable { private final PlayerData player; private long lastEntry = System.currentTimeMillis(), lastHit = System.currentTimeMillis(), invulnerableTill; diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/binding/BoundSkillInfo.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/binding/BoundSkillInfo.java index 4d27d56b..e21e250a 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/binding/BoundSkillInfo.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/binding/BoundSkillInfo.java @@ -1,15 +1,15 @@ package net.Indyuce.mmocore.skill.binding; import io.lumine.mythic.lib.player.skill.PassiveSkill; +import io.lumine.mythic.lib.util.Closeable; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.quest.trigger.SkillModifierTrigger; -import net.Indyuce.mmocore.api.util.Closable; import net.Indyuce.mmocore.skill.ClassSkill; import org.apache.commons.lang.Validate; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class BoundSkillInfo implements Closable { +public class BoundSkillInfo implements Closeable { private final SkillSlot skillSlot; private final PlayerData playerData; private final ClassSkill classSkill;