diff options
| author | RodneyMKay <herr-fant@web.de> | 2020-04-02 19:23:55 +0200 |
|---|---|---|
| committer | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2020-04-14 18:25:57 +0100 |
| commit | c6df769699507fc440cd46cdf4ab7bb9e8b6276b (patch) | |
| tree | 5f4beaee415a03beb569a935f8dd7f05301610ac /src | |
| parent | 648f1a91a49f6ebd58979948e5db6f9e034ebb70 (diff) | |
Fix bentobox island members not being included in level task
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BentoBoxLevelTaskType.java | 62 |
1 files changed, 35 insertions, 27 deletions
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BentoBoxLevelTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BentoBoxLevelTaskType.java index 52fa65ca..da4e1860 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BentoBoxLevelTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BentoBoxLevelTaskType.java @@ -13,10 +13,12 @@ import com.leonardobishop.quests.quests.tasktypes.TaskTypeManager; import org.bukkit.event.EventHandler; import world.bentobox.bentobox.BentoBox; import world.bentobox.bentobox.api.events.BentoBoxEvent; +import world.bentobox.bentobox.database.objects.Island; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.UUID; import java.util.concurrent.atomic.AtomicLong; @@ -43,43 +45,49 @@ public final class BentoBoxLevelTaskType extends TaskType { @EventHandler public void onBentoBoxIslandLevelCalculated(BentoBoxEvent event) { + Map<String, Object> keyValues = event.getKeyValues(); + if ("IslandLevelCalculatedEvent".equalsIgnoreCase(event.getEventName())) { - QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer((UUID) event.getKeyValues().get("targetPlayer")); - if (qPlayer == null) { - return; - } + Island island = (Island) keyValues.get("targetPlayer"); - QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); + for (UUID member : island.getMemberSet()) { + QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(member); + if (qPlayer == null) { + continue; + } - for (Quest quest : super.getRegisteredQuests()) { - if (questProgressFile.hasStartedQuest(quest)) { - QuestProgress questProgress = questProgressFile.getQuestProgress(quest); + QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); - for (Task task : quest.getTasksOfType(super.getType())) { - TaskProgress taskProgress = questProgress.getTaskProgress(task.getId()); + for (Quest quest : super.getRegisteredQuests()) { + if (questProgressFile.hasStartedQuest(quest)) { + QuestProgress questProgress = questProgressFile.getQuestProgress(quest); - if (taskProgress.isCompleted()) { - continue; - } + for (Task task : quest.getTasksOfType(super.getType())) { + TaskProgress taskProgress = questProgress.getTaskProgress(task.getId()); + + if (taskProgress.isCompleted()) { + continue; + } - long islandLevelNeeded = (long) (int) task.getConfigValue("level"); + long islandLevelNeeded = (long) (int) task.getConfigValue("level"); - Object results = event.getKeyValues().get("results"); + Object results = keyValues.get("results"); - try { - if (levelField == null) { - levelField = results.getClass().getDeclaredField("level"); - levelField.setAccessible(true); - } + try { + if (levelField == null) { + levelField = results.getClass().getDeclaredField("level"); + levelField.setAccessible(true); + } - AtomicLong level = (AtomicLong) levelField.get(results); - taskProgress.setProgress(level.get()); - } catch (NoSuchFieldException | IllegalAccessException e) { - e.printStackTrace(); - } + AtomicLong level = (AtomicLong) levelField.get(results); + taskProgress.setProgress(level.get()); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } - if (((long) taskProgress.getProgress()) >= islandLevelNeeded) { - taskProgress.setCompleted(true); + if (((long) taskProgress.getProgress()) >= islandLevelNeeded) { + taskProgress.setCompleted(true); + } } } } |
