9
0
mirror of https://gitlab.com/SamB440/rpgregions-2.git synced 2025-12-26 18:29:16 +00:00

Add quest support. Closes #27.

This commit is contained in:
SamB440
2021-03-25 20:02:17 +00:00
parent 46b4557b5d
commit 911e10e8be
5 changed files with 87 additions and 0 deletions

BIN
libraries/Quests-4.0.1.jar Normal file

Binary file not shown.

View File

@@ -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'

View File

@@ -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() {

View File

@@ -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;
}
}

View File

@@ -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";
}
}