diff --git a/src/main/java/net/knarcraft/dynmapcitizens/DynmapCitizens.java b/src/main/java/net/knarcraft/dynmapcitizens/DynmapCitizens.java index e32881e..8af37d9 100644 --- a/src/main/java/net/knarcraft/dynmapcitizens/DynmapCitizens.java +++ b/src/main/java/net/knarcraft/dynmapcitizens/DynmapCitizens.java @@ -29,7 +29,7 @@ public final class DynmapCitizens extends JavaPlugin { @Override public void onEnable() { - instance = this; + DynmapCitizens.instance = this; //Initialize quest and dynmap APIs PluginManager pluginManager = Bukkit.getPluginManager(); Plugin dynmapPlugin = pluginManager.getPlugin("dynmap"); @@ -40,31 +40,31 @@ public final class DynmapCitizens extends JavaPlugin { } this.dynmapAPI = dynmapAPI; - globalSettings = new GlobalSettings(); + this.globalSettings = new GlobalSettings(); FileConfiguration configuration = this.getConfig(); this.saveDefaultConfig(); configuration.options().copyDefaults(true); this.saveConfig(); - globalSettings.load(configuration); + this.globalSettings.load(configuration); //Initialize all enabled traits initializeTraitHandlers(configuration); //Schedule handlers to run periodically Bukkit.getScheduler().runTaskTimer(this, () -> { - for (CitizensTraitHandler handler : traitHandlers) { + for (CitizensTraitHandler handler : this.traitHandlers) { if (handler.isEnabled()) { handler.updateMarkers(); } } - }, 10 * 20, globalSettings.getUpdateAllMarkersDelay() * 20); + }, 10 * 20, this.globalSettings.getUpdateAllMarkersDelay() * 20); - vaultHandler = new VaultHandler(this.getServer().getServicesManager()); + this.vaultHandler = new VaultHandler(this.getServer().getServicesManager()); } @Override public void onDisable() { - + //TODO: Perhaps remove icons, just in case? } /** @@ -73,7 +73,7 @@ public final class DynmapCitizens extends JavaPlugin { * @return

The global settings for this plugin

*/ public GlobalSettings getGlobalSettings() { - return globalSettings; + return this.globalSettings; } /** @@ -82,7 +82,7 @@ public final class DynmapCitizens extends JavaPlugin { * @return

The Vault handler

*/ public VaultHandler getVaultHandler() { - return vaultHandler; + return this.vaultHandler; } /** @@ -100,7 +100,7 @@ public final class DynmapCitizens extends JavaPlugin { * @return

An instance of this plugin

*/ public static DynmapCitizens getInstance() { - return instance; + return DynmapCitizens.instance; } /** @@ -110,14 +110,14 @@ public final class DynmapCitizens extends JavaPlugin { */ private void initializeTraitHandlers(FileConfiguration configuration) { //Register all trait handlers - traitHandlers = new ArrayList<>(); - traitHandlers.add(new BlacksmithHandler()); - traitHandlers.add(new QuestsHandler()); - traitHandlers.add(new SentinelHandler()); - traitHandlers.add(new MinstrelHandler()); + this.traitHandlers = new ArrayList<>(); + this.traitHandlers.add(new BlacksmithHandler()); + this.traitHandlers.add(new QuestsHandler()); + this.traitHandlers.add(new SentinelHandler()); + this.traitHandlers.add(new MinstrelHandler()); //Load and initialize all enabled trait handlers - for (CitizensTraitHandler handler : traitHandlers) { + for (CitizensTraitHandler handler : this.traitHandlers) { //Load configuration values from the config file handler.getSettings().load(configuration); //Check if the handler is enabled in the config before doing anything diff --git a/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestsHandler.java b/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestsHandler.java index 2dbb68a..83109b0 100644 --- a/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestsHandler.java +++ b/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestsHandler.java @@ -61,7 +61,7 @@ public class QuestsHandler extends AbstractTraitHandler { @Override public TraitSettings getSettings() { - return settings; + return this.settings; } @Override @@ -121,22 +121,14 @@ public class QuestsHandler extends AbstractTraitHandler { for (UUID npcId : questGiverInfo.keySet()) { NPCQuestInfo info = questGiverInfo.get(npcId); MarkerIcon icon = markerIcons.get(info.getNPCIcon()); - List questStarts = info.getQuestStarts(); + List offeredQuests = info.getQuestStarts(); StringBuilder markerDescription = new StringBuilder(); markerDescription.append("

").append(registry.getByUniqueId(npcId).getName()).append("

"); - if (!questStarts.isEmpty()) { - markerDescription.append("

Quests offered:

"); + //Print info about any offered quests + if (!offeredQuests.isEmpty()) { + appendOfferedQuestsInfo(markerDescription, offeredQuests); } markerDescription.append(getInvolvedInQuestsString(info)); @@ -153,6 +145,34 @@ public class QuestsHandler extends AbstractTraitHandler { } } + /** + * Appends information about an NPC's offered quests to the given string builder + * + * @param stringBuilder

The string builder to append to

+ * @param offeredQuests

The list of quests the NPC offers

+ */ + private void appendOfferedQuestsInfo(StringBuilder stringBuilder, List offeredQuests) { + stringBuilder.append("

Quests offered:

    "); + for (IQuest quest : offeredQuests) { + stringBuilder.append("
  • ").append(quest.getName()).append("

    - "); + stringBuilder.append(quest.getDescription()).append("
    "); + if (settings.displayStageInfo()) { + stringBuilder.append(new QuestStagesInfoGenerator(quest).getQuestStagesInfo()); + } + if (settings.displayRewardInfo()) { + stringBuilder.append(new QuestRewardsInfoGenerator(quest).getQuestRewardsInfo()); + } + if (settings.displayRequirementInfo()) { + stringBuilder.append(new QuestRequirementsInfoGenerator(quest).getQuestRequirementsInfo()); + } + if (settings.displayPlannerInfo()) { + stringBuilder.append(new QuestPlannerInfoGenerator(quest).getQuestPlannerInfo()); + } + stringBuilder.append("
  • "); + } + stringBuilder.append("
"); + } + /** * Gets information about the quests an NPC is involved in * diff --git a/src/main/java/net/knarcraft/dynmapcitizens/settings/QuestsSettings.java b/src/main/java/net/knarcraft/dynmapcitizens/settings/QuestsSettings.java index 962179f..c89fa92 100644 --- a/src/main/java/net/knarcraft/dynmapcitizens/settings/QuestsSettings.java +++ b/src/main/java/net/knarcraft/dynmapcitizens/settings/QuestsSettings.java @@ -7,9 +7,18 @@ import org.bukkit.configuration.file.FileConfiguration; */ public class QuestsSettings extends AbstractTraitSettings { + private boolean displayRewardInfo; + private boolean displayPlannerInfo; + private boolean displayStageInfo; + private boolean displayRequirementInfo; + @Override public void load(FileConfiguration configuration) { super.load(configuration); + this.displayRewardInfo = configuration.getBoolean(getTraitConfigRoot() + ".displayRewardInfo", true); + this.displayPlannerInfo = configuration.getBoolean(getTraitConfigRoot() + ".displayPlannerInfo", true); + this.displayStageInfo = configuration.getBoolean(getTraitConfigRoot() + ".displayStageInfo", true); + this.displayRequirementInfo = configuration.getBoolean(getTraitConfigRoot() + ".displayRequirementInfo", true); } @Override @@ -17,4 +26,40 @@ public class QuestsSettings extends AbstractTraitSettings { return "traits.quests"; } + /** + * Gets whether to display reward information as part of quest marker descriptions + * + * @return

True if reward information should be displayed

+ */ + public boolean displayRewardInfo() { + return this.displayRewardInfo; + } + + /** + * Gets whether to display planner information, such as cool-down, as part of quest marker descriptions + * + * @return

True if planner information should be displayed

+ */ + public boolean displayPlannerInfo() { + return this.displayPlannerInfo; + } + + /** + * Gets whether to display stage (task) information, as part of quest marker descriptions + * + * @return

True if stage information should be displayed

+ */ + public boolean displayStageInfo() { + return this.displayStageInfo; + } + + /** + * Gets whether to display requirement information, as part of quest marker descriptions + * + * @return

True if reward information should be displayed

+ */ + public boolean displayRequirementInfo() { + return this.displayRequirementInfo; + } + } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index b269c49..aa95b02 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -37,10 +37,6 @@ traits: markerSetName: "Quests" # Whether to hide the quest icon layer by default markersHiddenByDefault: false - # The priority of quest area markers, such as kill areas - areaMarkerPriority: 2 - # Whether to mark kill areas and similar on the map - showAreaMarkers: true # Whether to add information about a quest's rewards to the marker description displayRewardInfo: true # Whether to add information about a quest's start date, stop date and cool-down to the marker description @@ -53,6 +49,7 @@ traits: circleMarker: # Settings for kill zone markers killMarker: + enabled: true # The priority of quest kill area markers. Higher priority markers will display on top of lower priority ones markerSetPriority: 1 # The id of the quest kill area marker set. Change if it overlaps with an existing set id @@ -71,6 +68,7 @@ traits: lineThickness: 2 # Settings for reach area markers reachMarker: + enabled: true # The priority of quest reach area markers. Higher priority markers will display on top of lower priority ones markerSetPriority: 1 # The id of the quest reach area marker set. Change if it overlaps with an existing set id