From 08118863902deec1b8ffef5ef021feda019b1433 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Wed, 16 Nov 2022 18:49:29 +0100 Subject: [PATCH] Adds customization for quest area descriptions --- .../formatting/QuestsTranslatableMessage.java | 31 ++++++++++++++- .../trait/quests/QuestAreaHandler.java | 39 +++++++++++++++---- src/main/resources/strings.yml | 4 ++ 3 files changed, 65 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/knarcraft/dynmapcitizens/formatting/QuestsTranslatableMessage.java b/src/main/java/net/knarcraft/dynmapcitizens/formatting/QuestsTranslatableMessage.java index 004693a..1b56b61 100644 --- a/src/main/java/net/knarcraft/dynmapcitizens/formatting/QuestsTranslatableMessage.java +++ b/src/main/java/net/knarcraft/dynmapcitizens/formatting/QuestsTranslatableMessage.java @@ -131,7 +131,36 @@ public enum QuestsTranslatableMessage implements TranslatableMessage { * *

Placeholders: {permission}

*/ - QUESTS_REQUIREMENTS_REQUIRED_PERMISSION_ITEM; + QUESTS_REQUIREMENTS_REQUIRED_PERMISSION_ITEM, + + /** + * The format for a quest's reach area name + * + *

Placeholders: {name}

+ */ + QUESTS_REACH_AREA_NAME_FORMAT, + + /** + * The format for a quest's reach area's description + * + *

Placeholders: {areaName}, {questName}

+ */ + QUESTS_REACH_AREA_DESCRIPTION_FORMAT, + + /** + * The format for a quest's kill area name + * + *

Placeholders: {name}

+ */ + QUESTS_KILL_AREA_NAME_FORMAT, + + /** + * The format for a quest's kill area description + * + *

Placeholders: {areaName}, {questName}, {mobName}, {mobAmount}

+ */ + QUESTS_KILL_AREA_DESCRIPTION_FORMAT, + ; @Override public TranslatableMessage[] getAllMessages() { diff --git a/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestAreaHandler.java b/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestAreaHandler.java index 25cf000..d8757fa 100644 --- a/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestAreaHandler.java +++ b/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestAreaHandler.java @@ -3,9 +3,13 @@ package net.knarcraft.dynmapcitizens.handler.trait.quests; import me.blackvein.quests.QuestsAPI; import me.blackvein.quests.quests.IQuest; import me.blackvein.quests.quests.IStage; +import net.knarcraft.dynmapcitizens.DynmapCitizens; import net.knarcraft.dynmapcitizens.settings.QuestsSettings; import net.knarcraft.dynmapcitizens.util.DynmapHelper; import net.knarcraft.dynmapcitizens.util.QuestsHelper; +import net.knarcraft.knarlib.formatting.StringFormatter; +import net.knarcraft.knarlib.formatting.StringReplacer; +import net.knarcraft.knarlib.formatting.Translator; import org.bukkit.Location; import org.bukkit.entity.EntityType; import org.dynmap.DynmapAPI; @@ -14,6 +18,11 @@ import org.dynmap.markers.MarkerSet; import java.util.List; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_KILL_AREA_DESCRIPTION_FORMAT; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_KILL_AREA_NAME_FORMAT; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_REACH_AREA_DESCRIPTION_FORMAT; +import static net.knarcraft.dynmapcitizens.formatting.QuestsTranslatableMessage.QUESTS_REACH_AREA_NAME_FORMAT; + /** * A handler class for quest areas */ @@ -24,6 +33,7 @@ public class QuestAreaHandler { private final MarkerSet reachAreaMarkerSet; private final QuestsSettings settings; private final List unavailableQuests; + private final StringFormatter formatter; /** * Instantiates a new quest area handler @@ -38,6 +48,7 @@ public class QuestAreaHandler { this.questsAPI = questsAPI; this.settings = settings; this.unavailableQuests = unavailableQuests; + this.formatter = DynmapCitizens.getFormatter(); killAreaMarkerSet = DynmapHelper.initializeMarkerSet(dynmapAPI, settings.getKillAreaSettings()); reachAreaMarkerSet = DynmapHelper.initializeMarkerSet(dynmapAPI, settings.getReachAreaSettings()); } @@ -75,11 +86,16 @@ public class QuestAreaHandler { Location location = stage.getLocationsToReach().get(i); int radius = stage.getRadiiToReachWithin().get(i); String areaName = stage.getLocationNames().get(i); - String description = ""; + + String formattedAreaName; if (areaName != null) { - description += "" + areaName + "
"; + formattedAreaName = formatter.replacePlaceholder(QUESTS_REACH_AREA_NAME_FORMAT, "{name}", areaName); + } else { + formattedAreaName = ""; } - description += "Target location for " + quest.getName(); + + String description = formatter.replacePlaceholders(QUESTS_REACH_AREA_DESCRIPTION_FORMAT, + new String[]{"{areaName}", "{questName}"}, new String[]{formattedAreaName, quest.getName()}); DynmapHelper.markLocation(location, radius, description, reachAreaMarkerSet, settings.getReachAreaSettings()); } } @@ -101,13 +117,20 @@ public class QuestAreaHandler { int mobAmount = stage.getMobNumToKill().get(i); String areaName = stage.getKillNames().get(i); - String description = ""; + String formattedAreaName; if (areaName != null) { - description += "" + areaName + "
"; + formattedAreaName = formatter.replacePlaceholder(QUESTS_KILL_AREA_NAME_FORMAT, "{name}", areaName); + } else { + formattedAreaName = ""; } - description += "Kill location for " + quest.getName() + - "
Kill " + QuestsHelper.normalizeName(mob.name()) + " x " + mobAmount; - DynmapHelper.markLocation(location, radius, description, killAreaMarkerSet, settings.getKillAreaSettings()); + + Translator translator = DynmapCitizens.getTranslator(); + StringReplacer replacer = new StringReplacer(translator.getTranslatedMessage(QUESTS_KILL_AREA_DESCRIPTION_FORMAT)); + replacer.add("{areaName}", formattedAreaName); + replacer.add("{questName}", quest.getName()); + replacer.add("{mobName}", QuestsHelper.normalizeName(mob.name())); + replacer.add("{mobAmount}", String.valueOf(mobAmount)); + DynmapHelper.markLocation(location, radius, replacer.replace(), killAreaMarkerSet, settings.getKillAreaSettings()); } } diff --git a/src/main/resources/strings.yml b/src/main/resources/strings.yml index e4c183d..21803ac 100644 --- a/src/main/resources/strings.yml +++ b/src/main/resources/strings.yml @@ -52,6 +52,10 @@ en: QUESTS_REQUIREMENTS_MC_MMO_SKILL: "
  • Requires mcMMO skill {skill} at level {level}
  • " QUESTS_REQUIREMENTS_REQUIRED_PERMISSION_FORMAT: "
  • Required permissions:
      {permissions}
  • " QUESTS_REQUIREMENTS_REQUIRED_PERMISSION_ITEM: "
  • {permission}
  • " + QUESTS_REACH_AREA_NAME_FORMAT: "{name}
    " + QUESTS_REACH_AREA_DESCRIPTION_FORMAT: "{areaName}Target location for {questName}" + QUESTS_KILL_AREA_NAME_FORMAT: "{name}
    " + QUESTS_KILL_AREA_DESCRIPTION_FORMAT: "{areaName}Kill location for {questName}
    Kill {mobName} x {mobAmount}" DURATION_FORMAT: "in {time} {unit}" UNIT_NOW: "imminently" UNIT_SECOND: "second"