summaryrefslogtreecommitdiffstats
path: root/src/main/java/com
diff options
context:
space:
mode:
authorRodneyMKay <herr-fant@web.de>2020-04-02 19:23:55 +0200
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2020-04-14 18:25:57 +0100
commitc6df769699507fc440cd46cdf4ab7bb9e8b6276b (patch)
tree5f4beaee415a03beb569a935f8dd7f05301610ac /src/main/java/com
parent648f1a91a49f6ebd58979948e5db6f9e034ebb70 (diff)
Fix bentobox island members not being included in level task
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BentoBoxLevelTaskType.java62
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);
+ }
}
}
}