Updates to account for some changes in quests
All checks were successful
EpicKnarvik97/DynmapCitizens/pipeline/head This commit looks good
KnarCraft/DynmapCitizens/pipeline/head This commit looks good

This commit is contained in:
2023-04-12 02:34:09 +02:00
parent 5618be7f99
commit 9312e2156b
4 changed files with 45 additions and 23 deletions

View File

@ -1,5 +1,6 @@
package net.knarcraft.dynmapcitizens.handler.trait.quests;
import me.blackvein.quests.QuestsAPI;
import me.blackvein.quests.quests.IQuest;
import me.blackvein.quests.quests.Requirements;
import net.knarcraft.dynmapcitizens.DynmapCitizens;
@ -31,15 +32,18 @@ import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.
*/
public class QuestRequirementsInfoGenerator {
private final QuestsAPI questsAPI;
private final IQuest quest;
private final StringFormatter formatter;
/**
* Instantiates a new quest requirement info generator
*
* @param quest <p>The quest to generate information about</p>
* @param questsAPI <p>The API to use for getting quest information</p>
* @param quest <p>The quest to generate information about</p>
*/
public QuestRequirementsInfoGenerator(IQuest quest) {
public QuestRequirementsInfoGenerator(QuestsAPI questsAPI, IQuest quest) {
this.questsAPI = questsAPI;
this.quest = quest;
formatter = DynmapCitizens.getFormatter();
}
@ -68,14 +72,14 @@ public class QuestRequirementsInfoGenerator {
QUESTS_REQUIREMENTS_EXP, "{exp}", String.valueOf(requirements.getExp())) : "");
//Add info about blocking quests
replacer.add("{requirementBlockedByQuests}", !requirements.getBlockQuests().isEmpty() ?
getRequirementList(getQuestNames(requirements.getBlockQuests()),
replacer.add("{requirementBlockedByQuests}", !requirements.getBlockQuestIds().isEmpty() ?
getRequirementList(getQuestNames(requirements.getBlockQuestIds()),
QUESTS_REQUIREMENTS_BLOCKED_BY_QUEST_FORMAT, "{blockingQuests}",
QUESTS_REQUIREMENTS_BLOCKED_BY_QUEST_ITEM, "{questName}") : "");
//Add info about required quests
replacer.add("{requirementRequiredQuests}", !requirements.getNeededQuests().isEmpty() ?
getRequirementList(getQuestNames(requirements.getNeededQuests()),
replacer.add("{requirementRequiredQuests}", !requirements.getBlockQuestIds().isEmpty() ?
getRequirementList(getQuestNames(requirements.getBlockQuestIds()),
QUESTS_REQUIREMENTS_REQUIRED_QUEST_FORMAT, "{requiredQuests}",
QUESTS_REQUIREMENTS_REQUIRED_QUEST_ITEM, "{questName}") : "");
@ -138,17 +142,35 @@ public class QuestRequirementsInfoGenerator {
/**
* Gets a list of the quest names for the given quests
*
* @param quests <p>The quests to get names for</p>
* @param questIds <p>The quests to get names for</p>
* @return <p>A list of quest names</p>
*/
private List<String> getQuestNames(List<IQuest> quests) {
List<String> questNames = new ArrayList<>(quests.size());
for (IQuest quest : quests) {
questNames.add(quest.getName());
private List<String> getQuestNames(List<String> questIds) {
List<String> questNames = new ArrayList<>(questIds.size());
for (String questId : questIds) {
IQuest quest = getQuest(questId);
if (quest != null) {
questNames.add(quest.getName());
}
}
return questNames;
}
/**
* Gets the quest with the given id
*
* @param questId <p>The id of the quest to get</p>
* @return <p>The quest, or null if not found</p>
*/
private IQuest getQuest(String questId) {
for (IQuest quest : questsAPI.getLoadedQuests()) {
if (quest.getId().equals(questId)) {
return quest;
}
}
return null;
}
/**
* Gets a string for the given list of requirements
*

View File

@ -163,7 +163,7 @@ public class QuestsHandler extends AbstractTraitHandler {
stringBuilder.append(new QuestRewardsInfoGenerator(quest).getQuestRewardsInfo());
}
if (settings.displayRequirementInfo()) {
stringBuilder.append(new QuestRequirementsInfoGenerator(quest).getQuestRequirementsInfo());
stringBuilder.append(new QuestRequirementsInfoGenerator(questsAPI, quest).getQuestRequirementsInfo());
}
if (settings.displayPlannerInfo()) {
stringBuilder.append(new QuestPlannerInfoGenerator(quest).getQuestPlannerInfo());