From 2a0dc9396f15e97045c62c59dec61718865cc18f Mon Sep 17 00:00:00 2001 From: Fabrizio La Rosa Date: Thu, 9 Jul 2020 18:56:31 +0200 Subject: [PATCH] Fix for challenges with per-island true --- .../challenge/player/PlayerManager.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/songoda/skyblock/challenge/player/PlayerManager.java b/src/main/java/com/songoda/skyblock/challenge/player/PlayerManager.java index fff46221..7ee489b2 100644 --- a/src/main/java/com/songoda/skyblock/challenge/player/PlayerManager.java +++ b/src/main/java/com/songoda/skyblock/challenge/player/PlayerManager.java @@ -9,6 +9,7 @@ import com.songoda.skyblock.config.FileManager.Config; import com.songoda.skyblock.island.Island; import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.OfflinePlayer; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; @@ -41,8 +42,12 @@ public class PlayerManager { public HashMap getPlayer(UUID uuid) { if (plugin.getFileManager().getConfig(new File(plugin.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Challenge.PerIsland", true)) { - Island is = plugin.getIslandManager().getIsland(Bukkit.getOfflinePlayer(uuid)); + .getBoolean("Island.Challenge.PerIsland", false)) { + OfflinePlayer player = Bukkit.getPlayer(uuid); + if(player == null) { + player = Bukkit.getOfflinePlayer(uuid); + } + Island is = plugin.getIslandManager().getIsland(player); if(is != null){ uuid = is.getOwnerUUID(); } @@ -99,10 +104,18 @@ public class PlayerManager { */ public void unloadPlayer(UUID uuid) { if (plugin.getFileManager().getConfig(new File(plugin.getDataFolder(), "config.yml")).getFileConfiguration() - .getBoolean("Island.Challenge.PerIsland", true)) { - Island is = plugin.getIslandManager().getIsland(Bukkit.getOfflinePlayer(uuid)); + .getBoolean("Island.Challenge.PerIsland", false)) { + OfflinePlayer player = Bukkit.getPlayer(uuid); + if(player == null) { + player = Bukkit.getOfflinePlayer(uuid); + } + Island is = plugin.getIslandManager().getIsland(player); if(is != null){ - uuid = is.getOwnerUUID(); + if (!plugin.getIslandManager().getMembersOnline(is).isEmpty()) { + return; + } else { + uuid = is.getOwnerUUID(); + } } } islands.remove(uuid);