diff --git a/libraries/Quests-4.0.1.jar b/libraries/Quests-4.0.1.jar new file mode 100644 index 0000000..a1aab67 Binary files /dev/null and b/libraries/Quests-4.0.1.jar differ diff --git a/rpgregions/build.gradle b/rpgregions/build.gradle index a89d70a..305c7fa 100644 --- a/rpgregions/build.gradle +++ b/rpgregions/build.gradle @@ -88,6 +88,7 @@ dependencies { compileOnly 'me.clip:placeholderapi:2.10.4' // PAPI compileOnly 'com.github.MilkBowl:VaultAPI:1.7' // vault compileOnly name: 'AlonsoLevels_v2.0-BETA' // alonsolevels + compileOnly name: 'Quests-4.0.1' // quests compileOnly 'com.github.shynixn.headdatabase:hdb-api:1.0' // head database compileOnly 'com.djrapitops:Plan-api:5.1-R0.4' // plan compileOnly 'io.lumine.xikage:MythicMobs:4.9.1' diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java b/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java index 0120916..4c7d967 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java @@ -32,6 +32,7 @@ import net.islandearth.rpgregions.requirements.DependencyRequirement; import net.islandearth.rpgregions.requirements.LevelRequirement; import net.islandearth.rpgregions.requirements.MoneyRequirement; import net.islandearth.rpgregions.requirements.PlaceholderRequirement; +import net.islandearth.rpgregions.requirements.QuestRequirement; import net.islandearth.rpgregions.requirements.RegionRequirement; import net.islandearth.rpgregions.requirements.RegionRequirementRegistry; import net.islandearth.rpgregions.rewards.AlonsoLevelReward; @@ -42,6 +43,7 @@ import net.islandearth.rpgregions.rewards.ItemReward; import net.islandearth.rpgregions.rewards.MessageReward; import net.islandearth.rpgregions.rewards.MoneyReward; import net.islandearth.rpgregions.rewards.PlayerCommandReward; +import net.islandearth.rpgregions.rewards.QuestReward; import net.islandearth.rpgregions.rewards.RegionRewardRegistry; import net.islandearth.rpgregions.translation.Translations; import net.islandearth.rpgregions.utils.XMaterial; @@ -266,6 +268,7 @@ public final class RPGRegions extends JavaPlugin implements IRPGRegionsAPI, Lang registry.register(MoneyReward.class); registry.register(PlayerCommandReward.class); registry.register(AlonsoLevelReward.class); + registry.register(QuestReward.class); } private void registerRequirements() { @@ -279,6 +282,7 @@ public final class RPGRegions extends JavaPlugin implements IRPGRegionsAPI, Lang registry.register(MoneyRequirement.class); registry.register(PlaceholderRequirement.class); registry.register(DependencyRequirement.class); + registry.register(QuestRequirement.class); } private void registerEffects() { diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/requirements/QuestRequirement.java b/rpgregions/src/main/java/net/islandearth/rpgregions/requirements/QuestRequirement.java new file mode 100644 index 0000000..12036d2 --- /dev/null +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/requirements/QuestRequirement.java @@ -0,0 +1,44 @@ +package net.islandearth.rpgregions.requirements; + +import me.blackvein.quests.Quest; +import me.blackvein.quests.Quester; +import me.blackvein.quests.Quests; +import net.islandearth.rpgregions.api.IRPGRegionsAPI; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; + +import java.util.concurrent.ExecutionException; + +public class QuestRequirement extends RegionRequirement { + + private final String questId; + + public QuestRequirement(IRPGRegionsAPI api) { + super(api); + this.questId = "test"; + } + + @Override + public boolean meetsRequirements(Player player) { + Quests quests = JavaPlugin.getPlugin(Quests.class); + try { // Have to perform blocking operation. + Quester quester = quests.getStorage().loadQuesterData(player.getUniqueId()).get(); + for (Quest completedQuest : quester.getCompletedQuests()) { + if (completedQuest.getId().equals(questId)) return true; + } + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + return false; + } + + @Override + public String getName() { + return "Quest"; + } + + @Override + public String getText(Player player) { + return "Quest " + questId; + } +} diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/QuestReward.java b/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/QuestReward.java new file mode 100644 index 0000000..593825f --- /dev/null +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/QuestReward.java @@ -0,0 +1,38 @@ +package net.islandearth.rpgregions.rewards; + +import me.blackvein.quests.Quest; +import me.blackvein.quests.Quester; +import me.blackvein.quests.Quests; +import net.islandearth.rpgregions.api.IRPGRegionsAPI; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; + +import java.util.concurrent.ExecutionException; + +public class QuestReward extends DiscoveryReward { + + private final String questId; + + public QuestReward(IRPGRegionsAPI api) { + super(api); + this.questId = "test"; + } + + @Override + public void award(Player player) { + Quests quests = JavaPlugin.getPlugin(Quests.class); + try { // Have to perform blocking operation. + Quester quester = quests.getStorage().loadQuesterData(player.getUniqueId()).get(); + Quest quest = quests.getQuestById(questId); + if (quest == null) return; + quest.completeQuest(quester); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + } + + @Override + public String getName() { + return "Quest"; + } +}