diff --git a/API/src/main/java/com/bgsoftware/superiorskyblock/api/handlers/FactoriesManager.java b/API/src/main/java/com/bgsoftware/superiorskyblock/api/handlers/FactoriesManager.java index efd425854..2e54eb184 100644 --- a/API/src/main/java/com/bgsoftware/superiorskyblock/api/handlers/FactoriesManager.java +++ b/API/src/main/java/com/bgsoftware/superiorskyblock/api/handlers/FactoriesManager.java @@ -5,9 +5,11 @@ import com.bgsoftware.superiorskyblock.api.factory.DatabaseBridgeFactory; import com.bgsoftware.superiorskyblock.api.factory.IslandsFactory; import com.bgsoftware.superiorskyblock.api.factory.PlayersFactory; +import com.bgsoftware.superiorskyblock.api.island.Island; import com.bgsoftware.superiorskyblock.api.island.bank.BankTransaction; import com.bgsoftware.superiorskyblock.api.wrappers.BlockOffset; import com.bgsoftware.superiorskyblock.api.wrappers.BlockPosition; +import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer; import org.bukkit.Location; import javax.annotation.Nullable; @@ -60,6 +62,26 @@ public interface FactoriesManager { @Nullable DatabaseBridgeFactory getDatabaseBridgeFactory(); + /** + * Create a new Island object. + * Warning: This island is not saved into the database unless inserting it manually! + * + * @param superiorPlayer The owner of the island. + * @param uuid The uuid of the island. + * @param location The location of the island. + * @param islandName The name of the island. + * @param schemName The schematic used to create the island. + */ + Island createIsland(@Nullable SuperiorPlayer superiorPlayer, UUID uuid, Location location, String islandName, String schemName); + + /** + * Create a new SuperiorPlayer object. + * Warning: This player is not saved into the database unless inserting it manually! + * + * @param playerUUID The uuid of the player. + */ + SuperiorPlayer createPlayer(UUID playerUUID); + /** * Create a {@link BlockOffset} object from given offsets. * 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 4c15602df..506bc1f76 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/core/factory/FactoriesManagerImpl.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/core/factory/FactoriesManagerImpl.java @@ -103,6 +103,36 @@ public DatabaseBridgeFactory getDatabaseBridgeFactory() { return databaseBridgeFactory; } + @Override + public Island createIsland(@Nullable SuperiorPlayer superiorPlayer, UUID uuid, Location location, String islandName, String schemName) { + SIsland island = new SIsland(superiorPlayer, uuid, location, islandName, schemName); + return islandsFactory == null ? island : islandsFactory.createIsland(island); + } + + public Optional createIsland(DatabaseCache cache, DatabaseResult resultSet) { + Optional island = SIsland.fromDatabase(cache, resultSet); + + if (!island.isPresent()) + return island; + + return islandsFactory == null ? island : island.map(islandsFactory::createIsland); + } + + @Override + public SuperiorPlayer createPlayer(UUID playerUUID) { + SSuperiorPlayer superiorPlayer = new SSuperiorPlayer(playerUUID); + return playersFactory == null ? superiorPlayer : playersFactory.createPlayer(superiorPlayer); + } + + public Optional createPlayer(DatabaseCache databaseCache, DatabaseResult resultSet) { + Optional superiorPlayer = SSuperiorPlayer.fromDatabase(databaseCache, resultSet); + + if (!superiorPlayer.isPresent()) + return superiorPlayer; + + return playersFactory == null ? superiorPlayer : superiorPlayer.map(playersFactory::createPlayer); + } + @Override public BlockOffset createBlockOffset(int offsetX, int offsetY, int offsetZ) { return SBlockOffset.fromOffsets(offsetX, offsetY, offsetZ); @@ -129,34 +159,6 @@ public BankTransaction createTransaction(@Nullable UUID player, BankAction actio return new SBankTransaction(player, action, position, time, failureReason, amount); } - public Optional createIsland(DatabaseCache cache, DatabaseResult resultSet) { - Optional island = SIsland.fromDatabase(cache, resultSet); - - if (!island.isPresent()) - return island; - - return islandsFactory == null ? island : island.map(islandsFactory::createIsland); - } - - public Island createIsland(SuperiorPlayer superiorPlayer, UUID uuid, Location location, String islandName, String schemName) { - SIsland island = new SIsland(superiorPlayer, uuid, location, islandName, schemName); - return islandsFactory == null ? island : islandsFactory.createIsland(island); - } - - public Optional createPlayer(DatabaseCache databaseCache, DatabaseResult resultSet) { - Optional superiorPlayer = SSuperiorPlayer.fromDatabase(databaseCache, resultSet); - - if (!superiorPlayer.isPresent()) - return superiorPlayer; - - return playersFactory == null ? superiorPlayer : superiorPlayer.map(playersFactory::createPlayer); - } - - public SuperiorPlayer createPlayer(UUID player) { - SSuperiorPlayer superiorPlayer = new SSuperiorPlayer(player); - return playersFactory == null ? superiorPlayer : playersFactory.createPlayer(superiorPlayer); - } - public IslandBank createIslandBank(Island island, Supplier isGiveInterestFailed) { SIslandBank islandBank = new SIslandBank(island, isGiveInterestFailed); return banksFactory == null ? islandBank : banksFactory.createIslandBank(island, islandBank);