diff --git a/src/main/java/net/knarcraft/dynmapcitizens/DynmapCitizens.java b/src/main/java/net/knarcraft/dynmapcitizens/DynmapCitizens.java index 71d8a95..010f928 100644 --- a/src/main/java/net/knarcraft/dynmapcitizens/DynmapCitizens.java +++ b/src/main/java/net/knarcraft/dynmapcitizens/DynmapCitizens.java @@ -1,6 +1,7 @@ package net.knarcraft.dynmapcitizens; -import net.knarcraft.dynmapcitizens.formatting.DynmapCitizensTranslatableMessage; +import net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage; +import net.knarcraft.dynmapcitizens.formatting.SentinelTranslatableMessage; import net.knarcraft.dynmapcitizens.handler.VaultHandler; import net.knarcraft.dynmapcitizens.handler.trait.BlacksmithHandler; import net.knarcraft.dynmapcitizens.handler.trait.CitizensTraitHandler; @@ -8,6 +9,7 @@ import net.knarcraft.dynmapcitizens.handler.trait.MinstrelHandler; import net.knarcraft.dynmapcitizens.handler.trait.SentinelHandler; import net.knarcraft.dynmapcitizens.handler.trait.quests.QuestsHandler; import net.knarcraft.dynmapcitizens.settings.GlobalSettings; +import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.TranslatableTimeUnit; import net.knarcraft.knarlib.formatting.Translator; import org.bukkit.Bukkit; @@ -26,6 +28,7 @@ public final class DynmapCitizens extends JavaPlugin { private static DynmapCitizens instance; private static Translator translator; + private static StringFormatter stringFormatter; private DynmapAPI dynmapAPIInstance; private VaultHandler vaultHandler; private GlobalSettings globalSettings; @@ -57,8 +60,10 @@ public final class DynmapCitizens extends JavaPlugin { //Load all messages translator = new Translator(); translator.registerMessageCategory(TranslatableTimeUnit.UNIT_SECOND); - translator.registerMessageCategory(DynmapCitizensTranslatableMessage.SENTINEL_DESCRIPTION); + translator.registerMessageCategory(QuestsTranslatableMessage.QUESTS_REQUIREMENTS_FORMAT); + translator.registerMessageCategory(SentinelTranslatableMessage.SENTINEL_DESCRIPTION); translator.loadLanguages(this.getDataFolder(), "en"); + stringFormatter = new StringFormatter(this.getDescription().getName(), translator); //Initialize all enabled traits initializeTraitHandlers(configuration); @@ -89,6 +94,15 @@ public final class DynmapCitizens extends JavaPlugin { return translator; } + /** + * Gets the string formatter to use for formatting + * + * @return
The string formatter to use
+ */ + public static StringFormatter getFormatter() { + return stringFormatter; + } + /** * Gets the global settings for this plugin * diff --git a/src/main/java/net/knarcraft/dynmapcitizens/formatting/DynmapCitizensTranslatableMessage.java b/src/main/java/net/knarcraft/dynmapcitizens/formatting/QuestsTranslatableMessage.java similarity index 84% rename from src/main/java/net/knarcraft/dynmapcitizens/formatting/DynmapCitizensTranslatableMessage.java rename to src/main/java/net/knarcraft/dynmapcitizens/formatting/QuestsTranslatableMessage.java index 878d474..004693a 100644 --- a/src/main/java/net/knarcraft/dynmapcitizens/formatting/DynmapCitizensTranslatableMessage.java +++ b/src/main/java/net/knarcraft/dynmapcitizens/formatting/QuestsTranslatableMessage.java @@ -5,22 +5,7 @@ import net.knarcraft.knarlib.formatting.TranslatableMessage; /** * An enum describing all of DynmapCitizens' translatable messages */ -public enum DynmapCitizensTranslatableMessage implements TranslatableMessage { - - /** - * The format for the basic description of any sentinel - * - *Placeholders: {name}, {squad}, {sentinelDetails}
- */ - SENTINEL_DESCRIPTION, - - /** - * The format for the detailed description of any sentinel - * - *Placeholders: {invincible}, {armor}, {health}, {accuracy}, {damage}, {speed}, {allowKnockback}, {range}, - * {reach}, {targets}, {avoids}, {ignores}
- */ - SENTINEL_DETAILS, +public enum QuestsTranslatableMessage implements TranslatableMessage { /** * The format for a quest's planner description @@ -150,6 +135,6 @@ public enum DynmapCitizensTranslatableMessage implements TranslatableMessage { @Override public TranslatableMessage[] getAllMessages() { - return DynmapCitizensTranslatableMessage.values(); + return QuestsTranslatableMessage.values(); } } diff --git a/src/main/java/net/knarcraft/dynmapcitizens/formatting/SentinelTranslatableMessage.java b/src/main/java/net/knarcraft/dynmapcitizens/formatting/SentinelTranslatableMessage.java new file mode 100644 index 0000000..27898cc --- /dev/null +++ b/src/main/java/net/knarcraft/dynmapcitizens/formatting/SentinelTranslatableMessage.java @@ -0,0 +1,31 @@ +package net.knarcraft.dynmapcitizens.formatting; + +import net.knarcraft.knarlib.formatting.TranslatableMessage; + +/** + * An enum describing all translatable messages for sentinels + */ +public enum SentinelTranslatableMessage implements TranslatableMessage { + + /** + * The format for the basic description of any sentinel + * + *Placeholders: {name}, {squad}, {sentinelDetails}
+ */ + SENTINEL_DESCRIPTION, + + /** + * The format for the detailed description of any sentinel + * + *Placeholders: {invincible}, {armor}, {health}, {accuracy}, {damage}, {speed}, {allowKnockback}, {range}, + * {reach}, {targets}, {avoids}, {ignores}
+ */ + SENTINEL_DETAILS, + ; + + @Override + public TranslatableMessage[] getAllMessages() { + return SentinelTranslatableMessage.values(); + } + +} diff --git a/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestRequirementsInfoGenerator.java b/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestRequirementsInfoGenerator.java index 426b2ff..e2a9a6d 100644 --- a/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestRequirementsInfoGenerator.java +++ b/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestRequirementsInfoGenerator.java @@ -2,18 +2,37 @@ package net.knarcraft.dynmapcitizens.handler.trait.quests; import me.blackvein.quests.quests.IQuest; import me.blackvein.quests.quests.Requirements; +import net.knarcraft.dynmapcitizens.DynmapCitizens; import net.knarcraft.dynmapcitizens.util.QuestsHelper; +import net.knarcraft.knarlib.formatting.StringFormatter; +import net.knarcraft.knarlib.formatting.StringReplacer; +import net.knarcraft.knarlib.formatting.TranslatableMessage; import org.bukkit.inventory.ItemStack; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_REQUIREMENTS_BLOCKED_BY_QUEST_FORMAT; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_REQUIREMENTS_BLOCKED_BY_QUEST_ITEM; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_REQUIREMENTS_EXP; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_REQUIREMENTS_FORMAT; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_REQUIREMENTS_MC_MMO_SKILL; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_REQUIREMENTS_QUEST_POINTS; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_REQUIREMENTS_REQUIRED_ITEM_FORMAT; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_REQUIREMENTS_REQUIRED_ITEM_ITEM; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_REQUIREMENTS_REQUIRED_PERMISSION_FORMAT; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_REQUIREMENTS_REQUIRED_PERMISSION_ITEM; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_REQUIREMENTS_REQUIRED_QUEST_FORMAT; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_REQUIREMENTS_REQUIRED_QUEST_ITEM; + /** * A class to generate a string containing all information about a quest's requirements */ public class QuestRequirementsInfoGenerator { private final IQuest quest; + private final StringFormatter formatter; /** * Instantiates a new quest requirement info generator @@ -22,6 +41,7 @@ public class QuestRequirementsInfoGenerator { */ public QuestRequirementsInfoGenerator(IQuest quest) { this.quest = quest; + formatter = DynmapCitizens.getFormatter(); } /** @@ -31,78 +51,122 @@ public class QuestRequirementsInfoGenerator { */ public String getQuestRequirementsInfo() { Requirements requirements = quest.getRequirements(); - StringBuilder requirementInfo = new StringBuilder(); if (!requirements.hasRequirement()) { - return requirementInfo.toString(); + return ""; } - requirementInfo.append("Requirements:The items to get the names of
+ * @returnThe names of the given items
+ */ + private ListThe quests to get names for
+ * @returnA list of quest names
+ */ + private ListThe items to display in the list of requirements
+ * @param formatMessageThe translatable message describing the list format
+ * @param formatPlaceholderThe placeholder to replace with the list items
+ * @param itemMessageThe translatable message describing each item's format
+ * @param itemPlaceholderThe placeholder to replace with each item in the list
+ * @returnThe string corresponding to the given requirement list
+ */ + private String getRequirementList(List