Increment objective index before continue

This commit is contained in:
PikaMug 2023-03-03 21:43:36 -05:00
parent 9b3736be87
commit fc2d558e5c
2 changed files with 128 additions and 5 deletions

View File

@ -1544,14 +1544,15 @@ public class Quester implements IQuester {
plugin.getLogger().warning("Quest data was null when getting objectives for " + quest.getName());
return new LinkedList<>();
}
if (getCurrentStage(quest) == null) {
final IStage stage = getCurrentStage(quest);
if (stage == null) {
//plugin.getLogger().warning("Current stage was null when getting objectives for " + quest.getName());
return new LinkedList<>();
}
final IDependencies depends = plugin.getDependencies();
if (!ignoreOverrides && !getCurrentStage(quest).getObjectiveOverrides().isEmpty()) {
if (!ignoreOverrides && !stage.getObjectiveOverrides().isEmpty()) {
final LinkedList<BukkitObjective> objectives = new LinkedList<>();
for (final String s: getCurrentStage(quest).getObjectiveOverrides()) {
for (final String s: stage.getObjectiveOverrides()) {
String message = ChatColor.GREEN + ConfigUtil.parseString(s, quest, getPlayer());
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(getPlayer(), message);
@ -1562,7 +1563,6 @@ public class Quester implements IQuester {
return objectives;
}
final QuestData data = getQuestData(quest);
final IStage stage = getCurrentStage(quest);
final LinkedList<BukkitObjective> objectives = new LinkedList<>();
for (final ItemStack goal : stage.getBlocksToBreak()) {
for (final ItemStack progress : data.blocksBroken) {

View File

@ -28,6 +28,7 @@ import me.blackvein.quests.convo.misc.NpcOfferQuestPrompt;
import me.blackvein.quests.dependencies.DenizenTrigger;
import me.blackvein.quests.dependencies.IDependencies;
import me.blackvein.quests.entity.BukkitQuestMob;
import me.blackvein.quests.entity.CountableMob;
import me.blackvein.quests.entity.QuestMob;
import me.blackvein.quests.events.misc.MiscPostQuestAcceptEvent;
import me.blackvein.quests.exceptions.ActionFormatException;
@ -47,9 +48,11 @@ import me.blackvein.quests.listeners.ZnpcsListener;
import me.blackvein.quests.logging.QuestsLog4JFilter;
import me.blackvein.quests.module.ICustomObjective;
import me.blackvein.quests.player.IQuester;
import me.blackvein.quests.quests.BukkitObjective;
import me.blackvein.quests.quests.BukkitQuestFactory;
import me.blackvein.quests.quests.IQuest;
import me.blackvein.quests.quests.IStage;
import me.blackvein.quests.quests.Objective;
import me.blackvein.quests.quests.Options;
import me.blackvein.quests.quests.Planner;
import me.blackvein.quests.quests.QuestFactory;
@ -1087,6 +1090,113 @@ public class Quests extends JavaPlugin implements QuestsAPI {
}
}
public void showObjectivesTemp(final IQuest quest, final IQuester quester, final boolean ignoreOverrides) {
Quester q = (Quester)quester;
final IStage stage = quester.getCurrentStage(quest);
if (stage == null) {
getLogger().warning("Current stage was null when showing objectives for " + quest.getName());
return;
}
if (!ignoreOverrides && !stage.getObjectiveOverrides().isEmpty()) {
for (final String s: stage.getObjectiveOverrides()) {
String message = (s.trim().length() > 0 ? "- " : "") + ChatColor.GREEN + ConfigUtil
.parseString(s, quest, quester.getPlayer());
if (depends.getPlaceholderApi() != null) {
message = PlaceholderAPI.setPlaceholders(quester.getPlayer(), message);
}
quester.sendMessage(message);
}
return;
}
for (BukkitObjective objective : q.getCurrentObjectivesTemp(quest, false, false)) {
final String message = "- " + objective.getMessage();
if (objective.getProgressAsItem() != null && objective.getGoalAsItem() != null) {
ItemStack progress = objective.getProgressAsItem();
ItemStack goal = objective.getGoalAsItem();
if (!settings.canShowCompletedObjs() && progress.getAmount() >= goal.getAmount()) {
continue;
}
if (getSettings().canTranslateNames() && goal.hasItemMeta()) {
// Bukkit version is 1.9+
localeManager.sendMessage(quester.getPlayer(), message, goal.getType(), goal.getDurability(),
goal.getEnchantments(), goal.getItemMeta());
} else if (getSettings().canTranslateNames() && !goal.hasItemMeta()
&& Material.getMaterial("LINGERING_POTION") == null) {
// Bukkit version is below 1.9
localeManager.sendMessage(quester.getPlayer(), message, goal.getType(), goal.getDurability(),
goal.getEnchantments());
} else {
if (goal.getEnchantments().isEmpty()) {
quester.sendMessage(message.replace("<item>", ItemUtil.getName(goal))
.replace("<enchantment>", "")
.replace("<level>", "")
.replaceAll("\\s+", " "));
} else {
for (final Entry<Enchantment, Integer> e : goal.getEnchantments().entrySet()) {
quester.sendMessage(message.replace("<item>", ItemUtil.getName(goal))
.replace("<enchantment>", ItemUtil.getPrettyEnchantmentName(e.getKey()))
.replace("<level>", RomanNumeral.getNumeral(e.getValue())));
}
}
}
} else if (objective.getProgressAsMob() != null && objective.getGoalAsMob() != null) {
CountableMob progress = objective.getProgressAsMob();
CountableMob goal = objective.getGoalAsMob();
if (!settings.canShowCompletedObjs() && progress.getCount() >= goal.getCount()) {
continue;
}
if (getSettings().canTranslateNames()) {
localeManager.sendMessage(quester.getPlayer(), message, goal.getEntityType(), null);
} else {
quester.sendMessage(message.replace("<mob>", MiscUtil.getProperMobName(goal.getEntityType())));
}
} else {
if (!settings.canShowCompletedObjs() && objective.getProgress() >= objective.getGoal()) {
continue;
}
quester.sendMessage(message);
}
}
final QuestData data = quester.getQuestData(quest);
if (data == null) {
getLogger().warning("Quest data was null when showing objectives for " + quest.getName());
return;
}
int customIndex = 0;
for (final ICustomObjective customObjective : stage.getCustomObjectives()) {
int progress = data.customObjectiveCounts.size() > customIndex
? data.customObjectiveCounts.get(customIndex) : 0;
final int goal = stage.getCustomObjectiveCounts().get(customIndex);
final ChatColor color = progress < goal ? ChatColor.GREEN : ChatColor.GRAY;
if (!settings.canShowCompletedObjs() && color.equals(ChatColor.GRAY)) {
customIndex++;
continue;
}
String message = "- " + color + customObjective.getDisplay();
for (final Entry<String,Object> prompt : customObjective.getData()) {
final String replacement = "%" + prompt.getKey() + "%";
try {
for (final Entry<String, Object> e : stage.getCustomObjectiveData()) {
if (e.getKey().equals(prompt.getKey())) {
if (message.contains(replacement)) {
message = message.replace(replacement, ((String) e.getValue()));
}
}
}
} catch (final NullPointerException npe) {
getLogger().severe("Unable to fetch display for " + customObjective.getName() + " on "
+ quest.getName());
npe.printStackTrace();
}
}
if (customObjective.canShowCount()) {
message = message.replace("%count%", progress + "/" + goal);
}
quester.sendMessage(ConfigUtil.parseString(message));
customIndex++;
}
}
/**
* Show applicable objectives for the current stage of a player's quest.<p>
*
@ -1107,7 +1217,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
return;
}
final IStage stage = quester.getCurrentStage(quest);
if (quester.getCurrentStage(quest) == null) {
if (stage == null) {
getLogger().warning("Current stage was null when showing objectives for " + quest.getName());
return;
}
@ -1257,6 +1367,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
final int amt = is.getAmount();
final ChatColor color = crafted < amt ? ChatColor.GREEN : ChatColor.GRAY;
if (!settings.canShowCompletedObjs() && color.equals(ChatColor.GRAY)) {
craftIndex++;
continue;
}
String message = color + "- " + Lang.get(quester.getPlayer(), "craftItem");
@ -1286,6 +1397,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
final int amt = is.getAmount();
final ChatColor color = smelted < amt ? ChatColor.GREEN : ChatColor.GRAY;
if (!settings.canShowCompletedObjs() && color.equals(ChatColor.GRAY)) {
smeltIndex++;
continue;
}
String message = color + "- " + Lang.get(quester.getPlayer(), "smeltItem");
@ -1315,6 +1427,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
final int amt = is.getAmount();
final ChatColor color = enchanted < amt ? ChatColor.GREEN : ChatColor.GRAY;
if (!settings.canShowCompletedObjs() && color.equals(ChatColor.GRAY)) {
enchantIndex++;
continue;
}
String message = color + "- " + Lang.get(quester.getPlayer(), "enchItem");
@ -1361,6 +1474,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
final int amt = is.getAmount();
final ChatColor color = brewed < amt ? ChatColor.GREEN : ChatColor.GRAY;
if (!settings.canShowCompletedObjs() && color.equals(ChatColor.GRAY)) {
brewIndex++;
continue;
}
String message = color + "- " + Lang.get(quester.getPlayer(), "brewItem");
@ -1396,6 +1510,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
final int amt = is.getAmount();
final ChatColor color = consumed < amt ? ChatColor.GREEN : ChatColor.GRAY;
if (!settings.canShowCompletedObjs() && color.equals(ChatColor.GRAY)) {
consumeIndex++;
continue;
}
String message = color + "- " + Lang.get(quester.getPlayer(), "consumeItem");
@ -1432,6 +1547,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
final UUID npc = stage.getItemDeliveryTargets().get(deliverIndex);
final ChatColor color = delivered < toDeliver ? ChatColor.GREEN : ChatColor.GRAY;
if (!settings.canShowCompletedObjs() && color.equals(ChatColor.GRAY)) {
deliverIndex++;
continue;
}
String message = color + "- " + Lang.get(quester.getPlayer(), "deliver")
@ -1461,6 +1577,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
}
final ChatColor color = !interacted ? ChatColor.GREEN : ChatColor.GRAY;
if (!settings.canShowCompletedObjs() && color.equals(ChatColor.GRAY)) {
interactIndex++;
continue;
}
String message = color + "- " + Lang.get(quester.getPlayer(), "talkTo")
@ -1480,6 +1597,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
final int toNpcKill = stage.getNpcNumToKill().get(npcKillIndex);
final ChatColor color = npcKilled < toNpcKill ? ChatColor.GREEN : ChatColor.GRAY;
if (!settings.canShowCompletedObjs() && color.equals(ChatColor.GRAY)) {
npcKillIndex++;
continue;
}
String message = color + "- " + Lang.get(quester.getPlayer(), "kill");
@ -1509,6 +1627,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
final int toMobKill = stage.getMobNumToKill().get(mobKillIndex);
final ChatColor color = mobKilled < toMobKill ? ChatColor.GREEN : ChatColor.GRAY;
if (!settings.canShowCompletedObjs() && color.equals(ChatColor.GRAY)) {
mobKillIndex++;
continue;
}
String message = color + "- ";
@ -1547,6 +1666,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
}
final ChatColor color = tamed < toTame ? ChatColor.GREEN : ChatColor.GRAY;
if (!settings.canShowCompletedObjs() && color.equals(ChatColor.GRAY)) {
tameIndex++;
continue;
}
String message = color + "- " + Lang.get(quester.getPlayer(), "tame");
@ -1609,6 +1729,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
}
final ChatColor color = sheared < toShear ? ChatColor.GREEN : ChatColor.GRAY;
if (!settings.canShowCompletedObjs() && color.equals(ChatColor.GRAY)) {
shearIndex++;
continue;
}
String message = color + "- " + Lang.get(quester.getPlayer(), "shearSheep");
@ -1661,6 +1782,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
}
final ChatColor color = !said ? ChatColor.GREEN : ChatColor.GRAY;
if (!settings.canShowCompletedObjs() && color.equals(ChatColor.GRAY)) {
passIndex++;
continue;
}
final String message = color + "- " + s;
@ -1676,6 +1798,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
final int toClear = stage.getCustomObjectiveCounts().get(customIndex);
final ChatColor color = cleared < toClear ? ChatColor.GREEN : ChatColor.GRAY;
if (!settings.canShowCompletedObjs() && color.equals(ChatColor.GRAY)) {
customIndex++;
continue;
}
String message = color + "- " + co.getDisplay();