Temporary workaround for current quests

This commit is contained in:
PikaMug 2022-02-03 04:46:48 -05:00
parent 722ccf7678
commit dc406ce60f
15 changed files with 78 additions and 63 deletions

View File

@ -68,7 +68,10 @@ public interface IQuester extends Comparable<IQuester> {
void removeTimer(final Integer timerId);
ConcurrentHashMap<IQuest, Integer> getCurrentQuests();
/**
* @deprecated Do not use
*/
ConcurrentHashMap<IQuest, Integer> getCurrentQuestsTemp();
void setCurrentQuests(final ConcurrentHashMap<IQuest, Integer> currentQuests);

View File

@ -267,13 +267,13 @@ public class Quest implements IQuest {
if (currentStage.getFinishAction() != null) {
currentStage.getFinishAction().fire(quester, this);
}
if (quester.getCurrentQuests().get(this) == (orderedStages.size() - 1)) {
if (quester.getCurrentQuestsTemp().get(this) == (orderedStages.size() - 1)) {
if (currentStage.getScript() != null) {
plugin.getDenizenTrigger().runDenizenScript(currentStage.getScript(), quester);
}
completeQuest(quester);
} else {
setStage(quester, quester.getCurrentQuests().get(this) + 1);
setStage(quester, quester.getCurrentQuestsTemp().get(this) + 1);
}
if (quester.getQuestData(this) != null) {
quester.getQuestData(this).setDelayStartTime(0);
@ -592,7 +592,7 @@ public class Quest implements IQuest {
return false;
}
for (final IQuest q : requirements.getBlockQuests()) {
if (quester.getCompletedQuests().contains(q) || quester.getCurrentQuests().containsKey(q)) {
if (quester.getCompletedQuests().contains(q) || quester.getCurrentQuestsTemp().containsKey(q)) {
return false;
}
}

View File

@ -339,8 +339,20 @@ public class Quester implements IQuester {
this.timers.remove(timerId);
}
public ConcurrentHashMap<Quest, Integer> getCurrentQuests() {
final ConcurrentHashMap<Quest, Integer> map = new ConcurrentHashMap<>();
for (final Entry<IQuest, Integer> cq : currentQuests.entrySet()) {
final Quest q = (Quest) cq.getKey();
map.put(q, cq.getValue());
}
return map;
}
/**
* @deprecated Do not use
*/
@Override
public ConcurrentHashMap<IQuest, Integer> getCurrentQuests() {
public ConcurrentHashMap<IQuest, Integer> getCurrentQuestsTemp() {
return currentQuests;
}
@ -528,7 +540,7 @@ public class Quester implements IQuester {
if (quest == null) {
return false;
}
if (getCurrentQuests().size() >= plugin.getSettings().getMaxQuests() && plugin.getSettings().getMaxQuests()
if (getCurrentQuestsTemp().size() >= plugin.getSettings().getMaxQuests() && plugin.getSettings().getMaxQuests()
> 0) {
if (giveReason) {
final String msg = Lang.get(getPlayer(), "questMaxAllowed").replace("<number>",
@ -536,7 +548,7 @@ public class Quester implements IQuester {
sendMessage(ChatColor.YELLOW + msg);
}
return false;
} else if (getCurrentQuests().containsKey(quest)) {
} else if (getCurrentQuestsTemp().containsKey(quest)) {
if (giveReason) {
final String msg = Lang.get(getPlayer(), "questAlreadyOn");
sendMessage(ChatColor.YELLOW + msg);
@ -4229,7 +4241,7 @@ public class Quester implements IQuester {
appliedQuestIDs.add(quest.getId());
}
}
q.getCurrentQuests().forEach((otherQuest, i) -> {
q.getCurrentQuestsTemp().forEach((otherQuest, i) -> {
if (otherQuest.getStage(i).containsObjective(type)) {
if (!otherQuest.getOptions().canShareSameQuestOnly()) {
fun.apply(q, otherQuest);
@ -4269,7 +4281,7 @@ public class Quester implements IQuester {
}
// Share only same quest is not necessary here
// The function must be applied to the same quest
if ((q.getCurrentQuests().containsKey(quest) && currentStage.equals(q.getCurrentStage(quest)))) {
if ((q.getCurrentQuestsTemp().containsKey(quest) && currentStage.equals(q.getCurrentStage(quest)))) {
fun.apply(q);
}
}

View File

@ -1689,7 +1689,7 @@ public class Quests extends JavaPlugin implements QuestsAPI {
for (final IQuester quester : questers) {
final CompletableFuture<IQuester> cf = getStorage().loadQuester(quester.getUUID());
final IQuester loaded = cf.get();
for (final IQuest q : loaded.getCurrentQuests().keySet()) {
for (final IQuest q : loaded.getCurrentQuestsTemp().keySet()) {
loaded.checkQuest(q);
}
}

View File

@ -314,7 +314,7 @@ public class BukkitActionFactory implements ActionFactory, ConversationAbandoned
plugin.getLogger().info(identifier + " deleted action " + action);
}
for (final IQuester q : plugin.getOfflineQuesters()) {
for (final IQuest quest : q.getCurrentQuests().keySet()) {
for (final IQuest quest : q.getCurrentQuestsTemp().keySet()) {
q.checkQuest(quest);
}
}
@ -471,7 +471,7 @@ public class BukkitActionFactory implements ActionFactory, ConversationAbandoned
plugin.getLogger().info(identifier + " saved action " + context.getSessionData(CK.E_NAME));
}
for (final IQuester q : plugin.getOfflineQuesters()) {
for (final IQuest quest : q.getCurrentQuests().keySet()) {
for (final IQuest quest : q.getCurrentQuestsTemp().keySet()) {
q.checkQuest(quest);
}
}

View File

@ -180,7 +180,7 @@ public class BukkitConditionFactory implements ConditionFactory, ConversationAba
plugin.getLogger().info(identifier + " deleted condition " + condition);
}
for (final IQuester q : plugin.getOfflineQuesters()) {
for (final IQuest quest : q.getCurrentQuests().keySet()) {
for (final IQuest quest : q.getCurrentQuestsTemp().keySet()) {
q.checkQuest(quest);
}
}
@ -268,7 +268,7 @@ public class BukkitConditionFactory implements ConditionFactory, ConversationAba
plugin.getLogger().info(identifier + " saved condition " + context.getSessionData(CK.C_NAME));
}
for (final IQuester q : plugin.getOfflineQuesters()) {
for (final IQuest quest : q.getCurrentQuests().keySet()) {
for (final IQuest quest : q.getCurrentQuestsTemp().keySet()) {
q.checkQuest(quest);
}
}

View File

@ -39,13 +39,13 @@ public class QuestJournal {
book.setDisplayName(ChatColor.LIGHT_PURPLE + title);
book.setTitle(ChatColor.LIGHT_PURPLE + title);
book.setAuthor(player.getName());
if (owner.getCurrentQuests().isEmpty()) {
if (owner.getCurrentQuestsTemp().isEmpty()) {
book.addPage(ChatColor.DARK_RED + Lang.get(player, "journalNoQuests").replace("<journal>", title));
} else {
int currentLength = 0;
int currentLines = 0;
StringBuilder page = new StringBuilder();
final List<IQuest> sortedList = owner.getCurrentQuests().keySet().stream()
final List<IQuest> sortedList = owner.getCurrentQuestsTemp().keySet().stream()
.sorted(Comparator.comparing(IQuest::getName))
.collect(Collectors.toList());
for (final IQuest quest : sortedList) {

View File

@ -68,7 +68,7 @@ public class BlockListener implements Listener {
if (!quester.meetsCondition(quest, true)) {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)) {
if (quester.getCurrentQuestsTemp().containsKey(quest)) {
final IStage currentStage = quester.getCurrentStage(quest);
if (currentStage == null) {
plugin.getLogger().severe("Player " + player.getName() + " (" + player.getUniqueId()
@ -186,7 +186,7 @@ public class BlockListener implements Listener {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)
if (quester.getCurrentQuestsTemp().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(type)) {
quester.damageBlock(quest, blockItemStack);
}
@ -218,7 +218,7 @@ public class BlockListener implements Listener {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)
if (quester.getCurrentQuestsTemp().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(type)) {
quester.placeBlock(quest, blockItemStack);
}
@ -262,7 +262,7 @@ public class BlockListener implements Listener {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)
if (quester.getCurrentQuestsTemp().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(type)) {
quester.useBlock(quest, blockItemStack);
}

View File

@ -197,8 +197,8 @@ public class CmdExecutor implements CommandExecutor {
if (args.length == 0) {
final Player player = (Player) cs;
final IQuester quester = plugin.getQuester(player.getUniqueId());
if (!quester.getCurrentQuests().isEmpty()) {
for (final IQuest q : quester.getCurrentQuests().keySet()) {
if (!quester.getCurrentQuestsTemp().isEmpty()) {
for (final IQuest q : quester.getCurrentQuestsTemp().keySet()) {
final IStage stage = quester.getCurrentStage(q);
q.updateCompass(quester, stage);
if (plugin.getQuester(player.getUniqueId()).getQuestData(q).getDelayStartTime() == 0) {
@ -617,11 +617,11 @@ public class CmdExecutor implements CommandExecutor {
cs.sendMessage(ChatColor.GOLD + "- " + target.getName() + " -");
cs.sendMessage(ChatColor.YELLOW + Lang.get("questPoints") + " - " + ChatColor.DARK_PURPLE
+ quester.getQuestPoints());
if (quester.getCurrentQuests().isEmpty()) {
if (quester.getCurrentQuestsTemp().isEmpty()) {
cs.sendMessage(ChatColor.YELLOW + Lang.get("currentQuest") + " " + ChatColor.DARK_PURPLE+ Lang.get("none"));
} else {
cs.sendMessage(ChatColor.YELLOW + Lang.get("currentQuest"));
for (final Entry<IQuest, Integer> set : quester.getCurrentQuests().entrySet()) {
for (final Entry<IQuest, Integer> set : quester.getCurrentQuestsTemp().entrySet()) {
final IQuest q = set.getKey();
final String msg = ChatColor.LIGHT_PURPLE + " - " + ChatColor.DARK_PURPLE + q.getName()
+ ChatColor.LIGHT_PURPLE + " (" + Lang.get("stageEditorStage") + " " + (set.getValue() + 1) + ")";
@ -697,7 +697,7 @@ public class CmdExecutor implements CommandExecutor {
return;
}
final IQuester quester = plugin.getQuester(player.getUniqueId());
if (!quester.getCurrentQuests().isEmpty()) {
if (!quester.getCurrentQuestsTemp().isEmpty()) {
final IQuest quest = plugin.getQuest(concatArgArray(args, 1, args.length - 1, ' '));
if (quest != null) {
if (quest.getOptions().canAllowQuitting()) {
@ -727,7 +727,7 @@ public class CmdExecutor implements CommandExecutor {
final IQuest questToFind = plugin.getQuest(concatArgArray(args, 1, args.length - 1, ' '));
final IQuester quester = plugin.getQuester(player.getUniqueId());
if (questToFind != null) {
for (final IQuest q : quester.getCurrentQuests().keySet()) {
for (final IQuest q : quester.getCurrentQuestsTemp().keySet()) {
if (q.getId().equals(questToFind.getId())) {
Lang.send(player, ChatColor.RED + Lang.get(player, "questAlreadyOn"));
return;
@ -1054,7 +1054,7 @@ public class CmdExecutor implements CommandExecutor {
cs.sendMessage(ChatColor.YELLOW + Lang.get("questNotFound"));
} else {
final IQuester quester = plugin.getQuester(target.getUniqueId());
for (final IQuest q : quester.getCurrentQuests().keySet()) {
for (final IQuest q : quester.getCurrentQuestsTemp().keySet()) {
if (q.getName().equalsIgnoreCase(questToGive.getName())) {
String msg = Lang.get("questsPlayerHasQuestAlready");
msg = msg.replace("<player>", ChatColor.ITALIC + "" + ChatColor.GREEN + target.getName()
@ -1155,7 +1155,7 @@ public class CmdExecutor implements CommandExecutor {
}
}
final IQuester quester = plugin.getQuester(target.getUniqueId());
if (quester.getCurrentQuests().isEmpty() && target.getName() != null) {
if (quester.getCurrentQuestsTemp().isEmpty() && target.getName() != null) {
String msg = Lang.get("noCurrentQuest");
msg = msg.replace("<player>", target.getName());
cs.sendMessage(ChatColor.YELLOW + msg);
@ -1207,7 +1207,7 @@ public class CmdExecutor implements CommandExecutor {
return;
}
final IQuester quester = plugin.getQuester(target.getUniqueId());
if (quester.getCurrentQuests().isEmpty() && target.getName() != null) {
if (quester.getCurrentQuestsTemp().isEmpty() && target.getName() != null) {
String msg = Lang.get("noCurrentQuest");
msg = msg.replace("<player>", target.getName());
cs.sendMessage(ChatColor.YELLOW + msg);
@ -1243,7 +1243,7 @@ public class CmdExecutor implements CommandExecutor {
}
}
final IQuester quester = plugin.getQuester(target.getUniqueId());
if (quester.getCurrentQuests().isEmpty() && target.getName() != null) {
if (quester.getCurrentQuestsTemp().isEmpty() && target.getName() != null) {
String msg = Lang.get("noCurrentQuest");
msg = msg.replace("<player>", target.getName());
cs.sendMessage(ChatColor.YELLOW + msg);
@ -1284,7 +1284,7 @@ public class CmdExecutor implements CommandExecutor {
}
}
final IQuester quester = plugin.getQuester(target.getUniqueId());
if (quester.getCurrentQuests().isEmpty() && target.getName() != null) {
if (quester.getCurrentQuestsTemp().isEmpty() && target.getName() != null) {
String msg = Lang.get("noCurrentQuest");
msg = msg.replace("<player>", target.getName());
cs.sendMessage(ChatColor.YELLOW + msg);

View File

@ -57,7 +57,7 @@ public class ItemListener implements Listener {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)
if (quester.getCurrentQuestsTemp().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(type)) {
quester.craftItem(quest, craftedItem);
}
@ -108,7 +108,7 @@ public class ItemListener implements Listener {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)
if (quester.getCurrentQuestsTemp().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(type)) {
quester.smeltItem(quest, evt.getCurrentItem());
}
@ -131,7 +131,7 @@ public class ItemListener implements Listener {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)
if (quester.getCurrentQuestsTemp().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(type)) {
quester.brewItem(quest, evt.getCurrentItem());
}
@ -162,7 +162,7 @@ public class ItemListener implements Listener {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)
if (quester.getCurrentQuestsTemp().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(type)) {
if (enchantedItem.getType().equals(Material.BOOK)) {
quester.enchantBook(quest, enchantedItem, evt.getEnchantsToAdd());
@ -199,7 +199,7 @@ public class ItemListener implements Listener {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)
if (quester.getCurrentQuestsTemp().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(type)) {
quester.consumeItem(quest, consumedItem);
}

View File

@ -65,7 +65,7 @@ public class NpcListener implements Listener {
if (!evt.getClicker().isConversing()) {
final Player player = evt.getClicker();
final IQuester quester = plugin.getQuester(player.getUniqueId());
for (final IQuest quest : quester.getCurrentQuests().keySet()) {
for (final IQuest quest : quester.getCurrentQuestsTemp().keySet()) {
if (quester.getCurrentStage(quest).containsObjective(ObjectiveType.DELIVER_ITEM)) {
final ItemStack hand = player.getItemInHand();
int currentIndex = -1;
@ -183,7 +183,7 @@ public class NpcListener implements Listener {
}
if (plugin.getQuestNpcIds().contains(evt.getNPC().getId())) {
boolean hasObjective = false;
for (final IQuest quest : quester.getCurrentQuests().keySet()) {
for (final IQuest quest : quester.getCurrentQuestsTemp().keySet()) {
if (quester.getCurrentStage(quest).containsObjective(ObjectiveType.TALK_TO_NPC)) {
final int npcIndex
= quester.getCurrentStage(quest).getCitizensToInteract().indexOf(evt.getNPC().getId());
@ -198,7 +198,7 @@ public class NpcListener implements Listener {
boolean hasAtLeastOneGUI = false;
final LinkedList<IQuest> npcQuests = new LinkedList<>();
for (final IQuest q : plugin.getLoadedQuests()) {
if (quester.getCurrentQuests().containsKey(q))
if (quester.getCurrentQuestsTemp().containsKey(q))
continue;
if (q.getNpcStart() != null && q.getNpcStart().getId() == evt.getNPC().getId()) {
if (plugin.getSettings().canIgnoreLockedQuests()
@ -290,12 +290,12 @@ public class NpcListener implements Listener {
}
if (player != null) {
final IQuester quester = plugin.getQuester(player.getUniqueId());
for (final IQuest quest : quester.getCurrentQuests().keySet()) {
for (final IQuest quest : quester.getCurrentQuestsTemp().keySet()) {
if (!quester.meetsCondition(quest, true)) {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)
if (quester.getCurrentQuestsTemp().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(type)) {
quester.killNPC(quest, evt.getNPC());
}

View File

@ -220,7 +220,7 @@ public class PlayerListener implements Listener {
boolean hasObjective = false;
if (!evt.isCancelled()) {
for (final IQuest quest : plugin.getLoadedQuests()) {
if (quester.getCurrentQuests().containsKey(quest)
if (quester.getCurrentQuestsTemp().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(ObjectiveType.USE_BLOCK)) {
hasObjective = true;
}
@ -367,7 +367,7 @@ public class PlayerListener implements Listener {
for (final IQuest q : plugin.getLoadedQuests()) {
if (q.getBlockStart() != null && evt.getClickedBlock() != null) {
if (q.getBlockStart().equals(evt.getClickedBlock().getLocation())) {
if (quester.getCurrentQuests().size() >= plugin.getSettings().getMaxQuests()
if (quester.getCurrentQuestsTemp().size() >= plugin.getSettings().getMaxQuests()
&& plugin.getSettings().getMaxQuests() > 0) {
String msg = Lang.get(player, "questMaxAllowed");
msg = msg.replace("<number>", String
@ -458,7 +458,7 @@ public class PlayerListener implements Listener {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)
if (quester.getCurrentQuestsTemp().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(type)) {
quester.milkCow(quest);
}
@ -484,7 +484,7 @@ public class PlayerListener implements Listener {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)) {
if (quester.getCurrentQuestsTemp().containsKey(quest)) {
final IStage currentStage = quester.getCurrentStage(quest);
if (currentStage == null) {
continue;
@ -531,8 +531,8 @@ public class PlayerListener implements Listener {
public void onPlayerCommandPreprocess(final PlayerCommandPreprocessEvent evt) {
if (plugin.canUseQuests(evt.getPlayer().getUniqueId())) {
final IQuester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
if (!quester.getCurrentQuests().isEmpty()) {
for (final IQuest quest : quester.getCurrentQuests().keySet()) {
if (!quester.getCurrentQuestsTemp().isEmpty()) {
for (final IQuest quest : quester.getCurrentQuestsTemp().keySet()) {
if (!quest.getOptions().canAllowCommands()) {
if (!evt.getMessage().startsWith("/quest")) {
final Player player = evt.getPlayer();
@ -578,7 +578,7 @@ public class PlayerListener implements Listener {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)
if (quester.getCurrentQuestsTemp().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(type)) {
quester.shearSheep(quest, sheep.getColor());
}
@ -608,7 +608,7 @@ public class PlayerListener implements Listener {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)
if (quester.getCurrentQuestsTemp().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(type)) {
quester.tameMob(quest, evt.getEntityType());
}
@ -678,7 +678,7 @@ public class PlayerListener implements Listener {
if (!quester.meetsCondition(quest, true)) {
continue;
}
if (!quester.getCurrentQuests().containsKey(quest)) {
if (!quester.getCurrentQuestsTemp().containsKey(quest)) {
continue;
}
@ -733,7 +733,7 @@ public class PlayerListener implements Listener {
final Player target = evt.getEntity();
if (plugin.canUseQuests(target.getUniqueId())) {
final IQuester quester = plugin.getQuester(target.getUniqueId());
for (final IQuest quest : quester.getCurrentQuests().keySet()) {
for (final IQuest quest : quester.getCurrentQuestsTemp().keySet()) {
final IStage stage = quester.getCurrentStage(quest);
if (stage != null && stage.getDeathAction() != null) {
quester.getCurrentStage(quest).getDeathAction().fire(quester, quest);
@ -782,7 +782,7 @@ public class PlayerListener implements Listener {
if (!quester.meetsCondition(quest, true)) {
continue;
}
if (!quester.getCurrentQuests().containsKey(quest)) {
if (!quester.getCurrentQuestsTemp().containsKey(quest)) {
continue;
}
@ -814,7 +814,7 @@ public class PlayerListener implements Listener {
}
if (evt.getState().equals(State.CAUGHT_FISH)) {
if (quester.getCurrentQuests().containsKey(quest)
if (quester.getCurrentQuestsTemp().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective(type)) {
quester.catchFish(quest);
}
@ -885,10 +885,10 @@ public class PlayerListener implements Listener {
}
}
}
for (final IQuest quest : quester.getCurrentQuests().keySet()) {
for (final IQuest quest : quester.getCurrentQuestsTemp().keySet()) {
quester.checkQuest(quest);
}
for (final IQuest quest : quester.getCurrentQuests().keySet()) {
for (final IQuest quest : quester.getCurrentQuestsTemp().keySet()) {
if (quester.getCurrentStage(quest).getDelay() > -1) {
quester.startStageTimer(quest);
}
@ -912,7 +912,7 @@ public class PlayerListener implements Listener {
public void onPlayerQuit(final PlayerQuitEvent evt) {
if (plugin.canUseQuests(evt.getPlayer().getUniqueId())) {
final IQuester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
for (final IQuest quest : quester.getCurrentQuests().keySet()) {
for (final IQuest quest : quester.getCurrentQuestsTemp().keySet()) {
final IStage currentStage = quester.getCurrentStage(quest);
if (currentStage == null) {
plugin.getLogger().severe("currentStage was null for " + quester.getUUID().toString()
@ -989,7 +989,7 @@ public class PlayerListener implements Listener {
continue;
}
if (quester.getCurrentQuests().containsKey(quest)) {
if (quester.getCurrentQuestsTemp().containsKey(quest)) {
if (quester.getCurrentStage(quest) != null
&& quester.getCurrentStage(quest).containsObjective(type)) {
plugin.getServer().getScheduler().runTask(plugin, () -> quester

View File

@ -139,7 +139,7 @@ public class SeparatedYamlStorage implements StorageImplementation {
final List<String> questIds = data.getStringList("currentQuests");
final List<Integer> questStages = data.getIntegerList("currentStages");
final int maxSize = Math.min(questIds.size(), questStages.size());
final ConcurrentHashMap<IQuest, Integer> currentQuests = quester.getCurrentQuests();
final ConcurrentHashMap<IQuest, Integer> currentQuests = quester.getCurrentQuestsTemp();
for (int i = 0; i < maxSize; i++) {
if (plugin.getQuestById(questIds.get(i)) != null) {
currentQuests.put(plugin.getQuestById(questIds.get(i)), questStages.get(i));
@ -156,7 +156,7 @@ public class SeparatedYamlStorage implements StorageImplementation {
for (final String key : dataSec.getKeys(false)) {
final ConfigurationSection questSec = dataSec.getConfigurationSection(key);
final IQuest quest = plugin.getQuestById(key) != null ? plugin.getQuestById(key) : plugin.getQuest(key);
if (quest == null || !quester.getCurrentQuests().containsKey(quest)) {
if (quest == null || !quester.getCurrentQuestsTemp().containsKey(quest)) {
continue;
}
final IStage stage = quester.getCurrentStage(quest);
@ -166,7 +166,7 @@ public class SeparatedYamlStorage implements StorageImplementation {
+ quest.getName() + "\". Quest ended.");
continue;
}
quester.addEmptiesFor(quest, quester.getCurrentQuests().get(quest));
quester.addEmptiesFor(quest, quester.getCurrentQuestsTemp().get(quest));
if (questSec == null) {
continue;
}

View File

@ -252,7 +252,7 @@ public class SqlStorage implements StorageImplementation {
final UUID uniqueId = quester.getUUID();
final String lastKnownName = quester.getLastKnownName();
final String oldLastKnownName = getQuesterLastKnownName(uniqueId);
final Set<String> currentQuests = quester.getCurrentQuests().keySet().stream().map(IQuest::getId).collect(Collectors.toSet());
final Set<String> currentQuests = quester.getCurrentQuestsTemp().keySet().stream().map(IQuest::getId).collect(Collectors.toSet());
final Set<String> oldCurrentQuests = getQuesterCurrentQuests(uniqueId).keySet().stream().map(IQuest::getId).collect(Collectors.toSet());
oldCurrentQuests.removeAll(currentQuests);
final Set<String> completedQuests = quester.getCompletedQuests().stream().map(IQuest::getId).collect(Collectors.toSet());
@ -290,7 +290,7 @@ public class SqlStorage implements StorageImplementation {
}
}
} else {
for (final Entry<IQuest, Integer> entry : quester.getCurrentQuests().entrySet()) {
for (final Entry<IQuest, Integer> entry : quester.getCurrentQuestsTemp().entrySet()) {
try (final PreparedStatement ps = c.prepareStatement(statementProcessor.apply(PLAYER_CURRENT_QUESTS_INSERT))) {
ps.setString(1, uniqueId.toString());
ps.setString(2, entry.getKey().getId());

View File

@ -48,7 +48,7 @@ public class StageTimer implements Runnable {
}
quest.completeQuest(quester);
} else {
final int stageNum = quester.getCurrentQuests().get(quest) + 1;
final int stageNum = quester.getCurrentQuestsTemp().get(quest) + 1;
quester.getQuestData(quest).setDelayStartTime(0);
quester.getQuestData(quest).setDelayTimeLeft(-1);
try {