diff --git a/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestStagesInfoGenerator.java b/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestStagesInfoGenerator.java
index bf6ec19..da57be3 100644
--- a/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestStagesInfoGenerator.java
+++ b/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestStagesInfoGenerator.java
@@ -37,65 +37,87 @@ public class QuestStagesInfoGenerator {
StringBuilder questInfo = new StringBuilder();
NPCRegistry registry = CitizensAPI.getNPCRegistry();
int stageCounter = 1;
- questInfo.append("Stages:
");
- for (IStage stage : quest.getStages()) {
- questInfo.append("- Stage ").append(stageCounter).append(" tasks:
");
- int mobTypes = stage.getMobsToKill().size();
- for (int i = 0; i < mobTypes; i++) {
- questInfo.append("- Kill ").append(QuestsHelper.normalizeName(stage.getMobsToKill().get(i).name()));
- questInfo.append(" x ").append(stage.getMobNumToKill().get(i)).append("
");
- }
- int reachLocations = stage.getLocationsToReach().size();
- for (int i = 0; i < reachLocations; i++) {
- questInfo.append("- Reach ").append(stage.getLocationNames().get(i)).append(", within ");
- questInfo.append(stage.getRadiiToReachWithin().get(i)).append(" blocks of ");
- questInfo.append(getLocationString(stage.getLocationsToReach().get(i))).append("
");
- }
- int deliveries = stage.getItemDeliveryTargets().size();
- for (int i = 0; i < deliveries; i++) {
- NPC npc = registry.getByUniqueId(stage.getItemDeliveryTargets().get(i));
- questInfo.append("- Deliver ").append(QuestsHelper.getItemStackString(stage.getItemsToDeliver().get(i))).append(
- " to ").append(npc.getName()).append("
");
- }
- if (stage.getFishToCatch() != null) {
- questInfo.append("- Catch ").append(stage.getFishToCatch()).append(" fish").append("
");
- }
- for (UUID npcId : stage.getNpcsToKill()) {
- questInfo.append("- Kill NPC ").append(registry.getByUniqueId(npcId).getName()).append("
");
- }
+ if (quest.getStages().size() == 1) {
+ questInfo.append("Tasks");
+ questInfo.append(getStageInfo(quest.getStage(0), registry));
+ } else {
+ questInfo.append("Stages:");
+ for (IStage stage : quest.getStages()) {
+ questInfo.append("- Stage ").append(stageCounter).append(" tasks:
");
- questInfo.append(getQuestItemsTaskString(stage.getBlocksToBreak(), "- Break ")).append("
");
- questInfo.append(getQuestItemsTaskString(stage.getBlocksToCut(), "- Cut ")).append("
");
- questInfo.append(getQuestItemsTaskString(stage.getBlocksToDamage(), "- Damage ")).append("
");
- questInfo.append(getQuestItemsTaskString(stage.getBlocksToUse(), "- Use ")).append("
");
- questInfo.append(getQuestItemsTaskString(stage.getBlocksToPlace(), "- Place ")).append("
");
+ questInfo.append(getStageInfo(stage, registry));
- questInfo.append(getQuestItemsTaskString(stage.getItemsToBrew(), "- Brew ")).append("
");
- questInfo.append(getQuestItemsTaskString(stage.getItemsToConsume(), "- Consume ")).append("
");
- questInfo.append(getQuestItemsTaskString(stage.getItemsToCraft(), "- Craft ")).append("
");
- questInfo.append(getQuestItemsTaskString(stage.getItemsToEnchant(), "- Enchant ")).append("
");
- questInfo.append(getQuestItemsTaskString(stage.getItemsToSmelt(), "- Smelt ")).append("
");
-
- int sheepTypes = stage.getSheepToShear().size();
- for (int i = 0; i < sheepTypes; i++) {
- questInfo.append("- Shear ").append(stage.getSheepNumToShear().get(i)).append(" ").append(
- QuestsHelper.normalizeName(stage.getSheepToShear().get(i).name())).append(" sheep").append("
");
+ questInfo.append("
");
+ stageCounter++;
}
- if (stage.getCowsToMilk() != null) {
- questInfo.append("- Milk ").append(stage.getCowsToMilk()).append(" cows").append("
");
- }
-
- int mobTamingEntries = stage.getMobsToTame().size();
- for (int i = 0; i < mobTamingEntries; i++) {
- questInfo.append("- Tame ").append(stage.getMobNumToTame().get(i)).append(" ").append(
- QuestsHelper.normalizeName(stage.getMobsToTame().get(i).name())).append("
");
- }
-
- questInfo.append("
");
- stageCounter++;
}
questInfo.append("
");
+
+ return questInfo.toString();
+ }
+
+ /**
+ * Gets information about the given stage
+ *
+ * @param stage The stage to get information about
+ * @param registry The registry to get NPC info from
+ * @return Information about the stage's tasks
+ */
+ private String getStageInfo(IStage stage, NPCRegistry registry) {
+ StringBuilder questInfo = new StringBuilder();
+ int mobTypes = stage.getMobsToKill().size();
+ for (int i = 0; i < mobTypes; i++) {
+ questInfo.append("Kill ").append(QuestsHelper.normalizeName(stage.getMobsToKill().get(i).name()));
+ questInfo.append(" x ").append(stage.getMobNumToKill().get(i)).append("");
+ }
+ int reachLocations = stage.getLocationsToReach().size();
+ for (int i = 0; i < reachLocations; i++) {
+ questInfo.append("Reach ").append(stage.getLocationNames().get(i)).append(", within ");
+ questInfo.append(stage.getRadiiToReachWithin().get(i)).append(" blocks of ");
+ questInfo.append(getLocationString(stage.getLocationsToReach().get(i))).append("");
+ }
+
+ int deliveries = stage.getItemDeliveryTargets().size();
+ for (int i = 0; i < deliveries; i++) {
+ NPC npc = registry.getByUniqueId(stage.getItemDeliveryTargets().get(i));
+ questInfo.append("Deliver ").append(QuestsHelper.getItemStackString(stage.getItemsToDeliver().get(i))).append(
+ " to ").append(npc.getName()).append("");
+ }
+ if (stage.getFishToCatch() != null) {
+ questInfo.append("Catch ").append(stage.getFishToCatch()).append(" fish").append("");
+ }
+ for (UUID npcId : stage.getNpcsToKill()) {
+ questInfo.append("Kill NPC ").append(registry.getByUniqueId(npcId).getName()).append("");
+ }
+
+ questInfo.append(getQuestItemsTaskString(stage.getBlocksToBreak(), "Break ")).append("");
+ questInfo.append(getQuestItemsTaskString(stage.getBlocksToCut(), "Cut ")).append("");
+ questInfo.append(getQuestItemsTaskString(stage.getBlocksToDamage(), "Damage ")).append("");
+ questInfo.append(getQuestItemsTaskString(stage.getBlocksToUse(), "Use ")).append("");
+ questInfo.append(getQuestItemsTaskString(stage.getBlocksToPlace(), "Place ")).append("");
+
+ questInfo.append(getQuestItemsTaskString(stage.getItemsToBrew(), "Brew ")).append("");
+ questInfo.append(getQuestItemsTaskString(stage.getItemsToConsume(), "Consume ")).append("");
+ questInfo.append(getQuestItemsTaskString(stage.getItemsToCraft(), "Craft ")).append("");
+ questInfo.append(getQuestItemsTaskString(stage.getItemsToEnchant(), "Enchant ")).append("");
+ questInfo.append(getQuestItemsTaskString(stage.getItemsToSmelt(), "Smelt ")).append("");
+
+ int sheepTypes = stage.getSheepToShear().size();
+ for (int i = 0; i < sheepTypes; i++) {
+ questInfo.append("Shear ").append(stage.getSheepNumToShear().get(i)).append(" ").append(
+ QuestsHelper.normalizeName(stage.getSheepToShear().get(i).name())).append(" sheep").append("");
+ }
+ if (stage.getCowsToMilk() != null) {
+ questInfo.append("Milk ").append(stage.getCowsToMilk()).append(" cows").append("");
+ }
+
+ int mobTamingEntries = stage.getMobsToTame().size();
+ for (int i = 0; i < mobTamingEntries; i++) {
+ questInfo.append("Tame ").append(stage.getMobNumToTame().get(i)).append(" ").append(
+ QuestsHelper.normalizeName(stage.getMobsToTame().get(i).name())).append("");
+ }
+
return questInfo.toString();
}