diff --git a/src/main/java/com/bgsoftware/superiorskyblock/core/factory/FactoriesManagerImpl.java b/src/main/java/com/bgsoftware/superiorskyblock/core/factory/FactoriesManagerImpl.java index 7b8e718aa..c864eab96 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/core/factory/FactoriesManagerImpl.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/core/factory/FactoriesManagerImpl.java @@ -32,7 +32,7 @@ import com.bgsoftware.superiorskyblock.island.algorithm.DefaultIslandCalculationAlgorithm; import com.bgsoftware.superiorskyblock.island.algorithm.DefaultIslandEntitiesTrackerAlgorithm; import com.bgsoftware.superiorskyblock.island.bank.SIslandBank; -import com.bgsoftware.superiorskyblock.island.persistence.PersistentDataContainerImpl; +import com.bgsoftware.superiorskyblock.core.persistence.PersistentDataContainerImpl; import com.bgsoftware.superiorskyblock.player.SSuperiorPlayer; import com.bgsoftware.superiorskyblock.player.algorithm.DefaultPlayerTeleportAlgorithm; import com.google.common.base.Preconditions; diff --git a/src/main/java/com/bgsoftware/superiorskyblock/island/persistence/EmptyPersistentDataContainer.java b/src/main/java/com/bgsoftware/superiorskyblock/core/persistence/EmptyPersistentDataContainer.java similarity index 97% rename from src/main/java/com/bgsoftware/superiorskyblock/island/persistence/EmptyPersistentDataContainer.java rename to src/main/java/com/bgsoftware/superiorskyblock/core/persistence/EmptyPersistentDataContainer.java index ab286cfa6..29aa0e669 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/island/persistence/EmptyPersistentDataContainer.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/core/persistence/EmptyPersistentDataContainer.java @@ -1,4 +1,4 @@ -package com.bgsoftware.superiorskyblock.island.persistence; +package com.bgsoftware.superiorskyblock.core.persistence; import com.bgsoftware.superiorskyblock.api.persistence.PersistentDataContainer; import com.bgsoftware.superiorskyblock.api.persistence.PersistentDataType; diff --git a/src/main/java/com/bgsoftware/superiorskyblock/island/persistence/PersistenceDataTypeSerializer.java b/src/main/java/com/bgsoftware/superiorskyblock/core/persistence/PersistenceDataTypeSerializer.java similarity index 98% rename from src/main/java/com/bgsoftware/superiorskyblock/island/persistence/PersistenceDataTypeSerializer.java rename to src/main/java/com/bgsoftware/superiorskyblock/core/persistence/PersistenceDataTypeSerializer.java index 306a80b8d..977b7dc02 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/island/persistence/PersistenceDataTypeSerializer.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/core/persistence/PersistenceDataTypeSerializer.java @@ -1,4 +1,4 @@ -package com.bgsoftware.superiorskyblock.island.persistence; +package com.bgsoftware.superiorskyblock.core.persistence; import com.bgsoftware.superiorskyblock.api.persistence.PersistentDataType; import com.bgsoftware.superiorskyblock.api.persistence.PersistentDataTypeContext; diff --git a/src/main/java/com/bgsoftware/superiorskyblock/island/persistence/PersistentDataContainerImpl.java b/src/main/java/com/bgsoftware/superiorskyblock/core/persistence/PersistentDataContainerImpl.java similarity index 98% rename from src/main/java/com/bgsoftware/superiorskyblock/island/persistence/PersistentDataContainerImpl.java rename to src/main/java/com/bgsoftware/superiorskyblock/core/persistence/PersistentDataContainerImpl.java index 84ccfe2fb..e3816fa1d 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/island/persistence/PersistentDataContainerImpl.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/core/persistence/PersistentDataContainerImpl.java @@ -1,4 +1,4 @@ -package com.bgsoftware.superiorskyblock.island.persistence; +package com.bgsoftware.superiorskyblock.core.persistence; import com.bgsoftware.superiorskyblock.api.persistence.PersistentDataContainer; import com.bgsoftware.superiorskyblock.api.persistence.PersistentDataType; @@ -18,7 +18,6 @@ public class PersistentDataContainerImpl implements PersistentDataContainer { - private final E holder; private final Consumer saveFunction; diff --git a/src/main/java/com/bgsoftware/superiorskyblock/island/SIsland.java b/src/main/java/com/bgsoftware/superiorskyblock/island/SIsland.java index ef50bfefb..11a92cacf 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/island/SIsland.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/island/SIsland.java @@ -133,8 +133,9 @@ public class SIsland implements Island { private final IslandCalculationAlgorithm calculationAlgorithm = plugin.getFactory().createIslandCalculationAlgorithm(this); private final IslandBlocksTrackerAlgorithm blocksTracker = plugin.getFactory().createIslandBlocksTrackerAlgorithm(this); private final IslandEntitiesTrackerAlgorithm entitiesTracker = plugin.getFactory().createIslandEntitiesTrackerAlgorithm(this); - private final PersistentDataContainer persistentDataContainer = plugin.getFactory().createPersistentDataContainer(this); private final Synchronized bankInterestTask = Synchronized.of(null); + @Nullable + private PersistentDataContainer persistentDataContainer; /* * Island Flags @@ -3293,6 +3294,8 @@ public DatabaseBridge getDatabaseBridge() { @Override public PersistentDataContainer getPersistentDataContainer() { + if (persistentDataContainer == null) + persistentDataContainer = plugin.getFactory().createPersistentDataContainer(this); return persistentDataContainer; } @@ -3566,6 +3569,7 @@ private void loadFromCachedInfo(CachedIslandInfo cachedIslandInfo) { this.bankLimit.set(cachedIslandInfo.bankLimit); this.islandBank.setBalance(cachedIslandInfo.balance); + this.lastInterest = cachedIslandInfo.lastInterestTime; cachedIslandInfo.cachedWarpInfoList.forEach(cachedWarpInfo -> { @@ -3597,9 +3601,11 @@ private void loadFromCachedInfo(CachedIslandInfo cachedIslandInfo) { } }); - cachedIslandInfo.bankTransactions.forEach(islandBank::loadTransaction); + if (!cachedIslandInfo.bankTransactions.isEmpty()) + cachedIslandInfo.bankTransactions.forEach(this.islandBank::loadTransaction); + if (cachedIslandInfo.persistentData.length > 0) - this.persistentDataContainer.load(cachedIslandInfo.persistentData); + getPersistentDataContainer().load(cachedIslandInfo.persistentData); } private void startBankInterest() { diff --git a/src/main/java/com/bgsoftware/superiorskyblock/island/SpawnIsland.java b/src/main/java/com/bgsoftware/superiorskyblock/island/SpawnIsland.java index 3487f6a5a..13d94a1f7 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/island/SpawnIsland.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/island/SpawnIsland.java @@ -32,7 +32,7 @@ import com.bgsoftware.superiorskyblock.island.algorithm.SpawnIslandBlocksTrackerAlgorithm; import com.bgsoftware.superiorskyblock.island.algorithm.SpawnIslandCalculationAlgorithm; import com.bgsoftware.superiorskyblock.island.algorithm.SpawnIslandEntitiesTrackerAlgorithm; -import com.bgsoftware.superiorskyblock.island.persistence.EmptyPersistentDataContainer; +import com.bgsoftware.superiorskyblock.core.persistence.EmptyPersistentDataContainer; import com.bgsoftware.superiorskyblock.island.privilege.IslandPrivileges; import com.bgsoftware.superiorskyblock.island.privilege.PlayerPrivilegeNode; import com.bgsoftware.superiorskyblock.island.privilege.PrivilegeNodeAbstract; diff --git a/src/main/java/com/bgsoftware/superiorskyblock/player/SSuperiorPlayer.java b/src/main/java/com/bgsoftware/superiorskyblock/player/SSuperiorPlayer.java index 548eee20b..df5be58cb 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/player/SSuperiorPlayer.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/player/SSuperiorPlayer.java @@ -20,11 +20,11 @@ import com.bgsoftware.superiorskyblock.core.database.bridge.PlayersDatabaseBridge; import com.bgsoftware.superiorskyblock.core.database.cache.CachedPlayerInfo; import com.bgsoftware.superiorskyblock.core.database.cache.DatabaseCache; +import com.bgsoftware.superiorskyblock.core.debug.PluginDebugger; +import com.bgsoftware.superiorskyblock.core.formatting.Formatters; import com.bgsoftware.superiorskyblock.island.flag.IslandFlags; import com.bgsoftware.superiorskyblock.island.role.SPlayerRole; import com.bgsoftware.superiorskyblock.mission.MissionData; -import com.bgsoftware.superiorskyblock.core.formatting.Formatters; -import com.bgsoftware.superiorskyblock.core.debug.PluginDebugger; import com.google.common.base.Preconditions; import org.bukkit.Bukkit; import org.bukkit.GameMode; @@ -37,7 +37,6 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Locale; @@ -53,7 +52,8 @@ public class SSuperiorPlayer implements SuperiorPlayer { private final DatabaseBridge databaseBridge = plugin.getFactory().createDatabaseBridge(this); private final PlayerTeleportAlgorithm playerTeleportAlgorithm = plugin.getFactory().createPlayerTeleportAlgorithm(this); - private final PersistentDataContainer persistentDataContainer = plugin.getFactory().createPersistentDataContainer(this); + @Nullable + private PersistentDataContainer persistentDataContainer; // Lazy loading private final Map, Integer> completedMissions = new ConcurrentHashMap<>(); private final UUID uuid; @@ -708,6 +708,8 @@ public DatabaseBridge getDatabaseBridge() { @Override public PersistentDataContainer getPersistentDataContainer() { + if (persistentDataContainer == null) + persistentDataContainer = plugin.getFactory().createPersistentDataContainer(this); return persistentDataContainer; } @@ -798,7 +800,7 @@ private void loadFromCachedInfo(CachedPlayerInfo cachedPlayerInfo) { this.worldBorderEnabled = cachedPlayerInfo.worldBorderEnabled; this.completedMissions.putAll(cachedPlayerInfo.completedMissions); if (cachedPlayerInfo.persistentData.length > 0) - this.persistentDataContainer.load(cachedPlayerInfo.persistentData); + getPersistentDataContainer().load(cachedPlayerInfo.persistentData); } } diff --git a/src/main/java/com/bgsoftware/superiorskyblock/player/SuperiorNPCPlayer.java b/src/main/java/com/bgsoftware/superiorskyblock/player/SuperiorNPCPlayer.java index 74b8a467f..cd9785b03 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/player/SuperiorNPCPlayer.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/player/SuperiorNPCPlayer.java @@ -12,7 +12,7 @@ import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer; import com.bgsoftware.superiorskyblock.core.database.bridge.EmptyDatabaseBridge; import com.bgsoftware.superiorskyblock.island.role.SPlayerRole; -import com.bgsoftware.superiorskyblock.island.persistence.EmptyPersistentDataContainer; +import com.bgsoftware.superiorskyblock.core.persistence.EmptyPersistentDataContainer; import org.bukkit.Location; import org.bukkit.OfflinePlayer; import org.bukkit.World;