From e68a8858e80b6624d6f87652d3e4da51b7b5e3a5 Mon Sep 17 00:00:00 2001 From: PikaMug <2267126+PikaMug@users.noreply.github.com> Date: Sun, 5 Dec 2021 02:16:49 -0500 Subject: [PATCH] Skip condition notice if objective override exists --- .../main/java/me/blackvein/quests/Quest.java | 73 ++++++++++++++++++- .../java/me/blackvein/quests/Quester.java | 2 +- 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/api/src/main/java/me/blackvein/quests/Quest.java b/api/src/main/java/me/blackvein/quests/Quest.java index bc622b9c1..5be667d8e 100644 --- a/api/src/main/java/me/blackvein/quests/Quest.java +++ b/api/src/main/java/me/blackvein/quests/Quest.java @@ -21,6 +21,7 @@ import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.util.player.UserManager; import com.herocraftonline.heroes.characters.Hero; import me.blackvein.quests.actions.Action; +import me.blackvein.quests.conditions.Condition; import me.blackvein.quests.events.quest.QuestUpdateCompassEvent; import me.blackvein.quests.events.quester.QuesterPostChangeStageEvent; import me.blackvein.quests.events.quester.QuesterPostCompleteQuestEvent; @@ -32,8 +33,10 @@ import me.blackvein.quests.util.ConfigUtil; import me.blackvein.quests.util.InventoryUtil; import me.blackvein.quests.util.ItemUtil; import me.blackvein.quests.util.Lang; +import me.blackvein.quests.util.MiscUtil; import me.blackvein.quests.util.RomanNumeral; import me.clip.placeholderapi.PlaceholderAPI; +import net.citizensnpcs.api.CitizensAPI; import net.citizensnpcs.api.npc.NPC; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -265,13 +268,79 @@ public class Quest implements Comparable { updateCompass(quester, nextStage); if (player.isOnline()) { final Player p = quester.getPlayer(); - final String msg = Lang.get(p, "objectives").replace("", name); - quester.sendMessage(ChatColor.GOLD + msg); + final String title = Lang.get(p, "objectives").replace("", name); + quester.sendMessage(ChatColor.GOLD + title); plugin.showObjectives(this, quester, false); final String stageStartMessage = quester.getCurrentStage(this).startMessage; if (stageStartMessage != null) { p.sendMessage(ConfigUtil.parseStringWithPossibleLineBreaks(stageStartMessage, this, p)); } + final Condition c = nextStage.getCondition(); + if (c != null && nextStage.getObjectiveOverrides().isEmpty()) { + p.sendMessage(ChatColor.LIGHT_PURPLE + Lang.get("stageEditorConditions")); + if (!c.getEntitiesWhileRiding().isEmpty()) { + final StringBuilder msg = new StringBuilder("- " + Lang.get("conditionEditorRideEntity")); + for (final String e : c.getEntitiesWhileRiding()) { + msg.append(ChatColor.AQUA).append("\n \u2515 ").append(e); + } + p.sendMessage(ChatColor.YELLOW + msg.toString()); + } else if (!c.getNpcsWhileRiding().isEmpty()) { + final StringBuilder msg = new StringBuilder("- " + Lang.get("conditionEditorRideNPC")); + for (final int i : c.getNpcsWhileRiding()) { + if (plugin.getDependencies().getCitizens() != null) { + msg.append(ChatColor.AQUA).append("\n \u2515 ").append(CitizensAPI.getNPCRegistry() + .getById(i).getName()); + } else { + msg.append(ChatColor.AQUA).append("\n \u2515 ").append(i); + } + } + p.sendMessage(ChatColor.YELLOW + msg.toString()); + } else if (!c.getPermissions().isEmpty()) { + final StringBuilder msg = new StringBuilder("- " + Lang.get("conditionEditorPermissions")); + for (final String e : c.getPermissions()) { + msg.append(ChatColor.AQUA).append("\n \u2515 ").append(e); + } + p.sendMessage(ChatColor.YELLOW + msg.toString()); + } else if (!c.getItemsWhileHoldingMainHand().isEmpty()) { + final StringBuilder msg = new StringBuilder("- " + Lang.get("conditionEditorItemsInMainHand")); + for (final ItemStack is : c.getItemsWhileHoldingMainHand()) { + msg.append(ChatColor.AQUA).append("\n \u2515 ").append(ItemUtil.getPrettyItemName(is + .getType().name())); + } + p.sendMessage(ChatColor.YELLOW + msg.toString()); + } else if (!c.getWorldsWhileStayingWithin().isEmpty()) { + final StringBuilder msg = new StringBuilder("- " + Lang.get("conditionEditorStayWithinWorld")); + for (final String w : c.getWorldsWhileStayingWithin()) { + msg.append(ChatColor.AQUA).append("\n \u2515 ").append(w); + } + p.sendMessage(ChatColor.YELLOW + msg.toString()); + } else if (!c.getBiomesWhileStayingWithin().isEmpty()) { + final StringBuilder msg = new StringBuilder("- " + Lang.get("conditionEditorStayWithinBiome")); + for (final String b : c.getBiomesWhileStayingWithin()) { + msg.append(ChatColor.AQUA).append("\n \u2515 ").append(MiscUtil + .snakeCaseToUpperCamelCase(b)); + } + p.sendMessage(ChatColor.YELLOW + msg.toString()); + } else if (!c.getRegionsWhileStayingWithin().isEmpty()) { + final StringBuilder msg = new StringBuilder("- " + Lang.get("conditionEditorStayWithinRegion")); + for (final String r : c.getRegionsWhileStayingWithin()) { + msg.append(ChatColor.AQUA).append("\n \u2515 ").append(r); + } + p.sendMessage(ChatColor.YELLOW + msg.toString()); + } else if (!c.getPlaceholdersCheckIdentifier().isEmpty()) { + final StringBuilder msg = new StringBuilder("- " + Lang.get("conditionEditorCheckPlaceholder")); + int index = 0; + for (final String r : c.getPlaceholdersCheckIdentifier()) { + if (c.getPlaceholdersCheckValue().size() > index) { + msg.append(ChatColor.AQUA).append("\n \u2515 ").append(r).append(ChatColor.GRAY) + .append(" = ").append(ChatColor.AQUA).append(c.getPlaceholdersCheckValue() + .get(index)); + } + index++; + } + p.sendMessage(ChatColor.YELLOW + msg.toString()); + } + } } quester.updateJournal(); if (player.isOnline()) { diff --git a/api/src/main/java/me/blackvein/quests/Quester.java b/api/src/main/java/me/blackvein/quests/Quester.java index 04e14f9bc..3260460d9 100644 --- a/api/src/main/java/me/blackvein/quests/Quester.java +++ b/api/src/main/java/me/blackvein/quests/Quester.java @@ -579,7 +579,7 @@ public class Quester implements Comparable { p.sendMessage(ConfigUtil.parseStringWithPossibleLineBreaks(stageStartMessage, quest, getPlayer())); } final Condition c = stage.getCondition(); - if (c != null) { + if (c != null && stage.getObjectiveOverrides().isEmpty()) { sendMessage(ChatColor.LIGHT_PURPLE + Lang.get("stageEditorConditions")); if (!c.getEntitiesWhileRiding().isEmpty()) { final StringBuilder msg = new StringBuilder("- " + Lang.get("conditionEditorRideEntity"));