From a90b1c496aa5ca94f0856bd250281f3f7ed7da4d Mon Sep 17 00:00:00 2001 From: PikaMug <2267126+PikaMug@users.noreply.github.com> Date: Thu, 5 Nov 2020 15:17:13 -0500 Subject: [PATCH] Finalize updates to quester list, fixes #1441 --- .../main/java/me/blackvein/quests/Quests.java | 28 +++++++++++++++++-- .../quests/actions/ActionFactory.java | 4 +-- .../quests/conditions/ConditionFactory.java | 4 +-- .../quests/listeners/CmdExecutor.java | 11 ++++---- .../quests/listeners/PlayerListener.java | 10 +++---- 5 files changed, 40 insertions(+), 17 deletions(-) diff --git a/main/src/main/java/me/blackvein/quests/Quests.java b/main/src/main/java/me/blackvein/quests/Quests.java index 07ebecc05..1b4eb0864 100644 --- a/main/src/main/java/me/blackvein/quests/Quests.java +++ b/main/src/main/java/me/blackvein/quests/Quests.java @@ -319,20 +319,42 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener this.conditions = conditions; } - // TODO Experimental start + /** + * Gets every Quester that has ever played on this server + * + * @return a collection of all Questers + */ public Collection<Quester> getOfflineQuesters() { return questers; } + /** + * Sets every Quester that has ever played on this server + * + * @param questers a collection of Questers + */ public void setOfflineQuesters(final Collection<Quester> questers) { - this.questers = questers; + this.questers = new ConcurrentSkipListSet<>(questers); } - // TODO Experimental end + /** + * Gets every Quester that has ever played on this server + * + * @deprecated Use {@link #getOfflineQuesters()} + * @return a list of all Questers + */ + @Deprecated public LinkedList<Quester> getQuesters() { return new LinkedList<>(questers); } + /** + * Sets every Quester that has ever played on this server + * + * @deprecated Use {@link #setOfflineQuesters(Collection)} + * @param questers a list of Questers + */ + @Deprecated public void setQuesters(final LinkedList<Quester> questers) { this.questers = new ConcurrentSkipListSet<>(questers); } diff --git a/main/src/main/java/me/blackvein/quests/actions/ActionFactory.java b/main/src/main/java/me/blackvein/quests/actions/ActionFactory.java index c52adfcb9..b37b78361 100644 --- a/main/src/main/java/me/blackvein/quests/actions/ActionFactory.java +++ b/main/src/main/java/me/blackvein/quests/actions/ActionFactory.java @@ -306,7 +306,7 @@ public class ActionFactory implements ConversationAbandonedListener { "Player " + ((Player)context.getForWhom()).getUniqueId() : "CONSOLE"; plugin.getLogger().info(identifier + " deleted action " + action); } - for (final Quester q : plugin.getQuesters()) { + for (final Quester q : plugin.getOfflineQuesters()) { for (final Quest quest : q.getCurrentQuests().keySet()) { q.checkQuest(quest); } @@ -469,7 +469,7 @@ public class ActionFactory implements ConversationAbandonedListener { "Player " + ((Player)context.getForWhom()).getUniqueId() : "CONSOLE"; plugin.getLogger().info(identifier + " saved action " + (String) context.getSessionData(CK.E_NAME)); } - for (final Quester q : plugin.getQuesters()) { + for (final Quester q : plugin.getOfflineQuesters()) { for (final Quest quest : q.getCurrentQuests().keySet()) { q.checkQuest(quest); } diff --git a/main/src/main/java/me/blackvein/quests/conditions/ConditionFactory.java b/main/src/main/java/me/blackvein/quests/conditions/ConditionFactory.java index 0c7b21519..b1ee4885d 100644 --- a/main/src/main/java/me/blackvein/quests/conditions/ConditionFactory.java +++ b/main/src/main/java/me/blackvein/quests/conditions/ConditionFactory.java @@ -183,7 +183,7 @@ public class ConditionFactory implements ConversationAbandonedListener { "Player " + ((Player)context.getForWhom()).getUniqueId() : "CONSOLE"; plugin.getLogger().info(identifier + " deleted condition " + condition); } - for (final Quester q : plugin.getQuesters()) { + for (final Quester q : plugin.getOfflineQuesters()) { for (final Quest quest : q.getCurrentQuests().keySet()) { q.checkQuest(quest); } @@ -274,7 +274,7 @@ public class ConditionFactory implements ConversationAbandonedListener { "Player " + ((Player)context.getForWhom()).getUniqueId() : "CONSOLE"; plugin.getLogger().info(identifier + " saved condition " + (String) context.getSessionData(CK.C_NAME)); } - for (final Quester q : plugin.getQuesters()) { + for (final Quester q : plugin.getOfflineQuesters()) { for (final Quest quest : q.getCurrentQuests().keySet()) { q.checkQuest(quest); } diff --git a/main/src/main/java/me/blackvein/quests/listeners/CmdExecutor.java b/main/src/main/java/me/blackvein/quests/listeners/CmdExecutor.java index 0060ac53a..41eec34f1 100644 --- a/main/src/main/java/me/blackvein/quests/listeners/CmdExecutor.java +++ b/main/src/main/java/me/blackvein/quests/listeners/CmdExecutor.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.UUID; +import java.util.concurrent.ConcurrentSkipListSet; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -1142,7 +1143,7 @@ public class CmdExecutor implements CommandExecutor { } cs.sendMessage(ChatColor.YELLOW + Lang.get("settingAllQuestPoints") .replace("<points>", Lang.get("questPoints"))); - for (final Quester q : plugin.getQuesters()) { + for (final Quester q : plugin.getOfflineQuesters()) { q.setQuestPoints(amount); } Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { @@ -1378,13 +1379,13 @@ public class CmdExecutor implements CommandExecutor { } } final UUID id = target.getUniqueId(); - final LinkedList<Quester> temp = plugin.getQuesters(); + final ConcurrentSkipListSet<Quester> temp = (ConcurrentSkipListSet<Quester>) plugin.getOfflineQuesters(); for(final Iterator<Quester> itr = temp.iterator(); itr.hasNext();) { if (itr.next().getUUID().equals(id)) { itr.remove(); } } - plugin.setQuesters(temp); + plugin.setOfflineQuesters(temp); Quester quester = plugin.getQuester(target.getUniqueId()); try { quester.hardClear(); @@ -1407,9 +1408,9 @@ public class CmdExecutor implements CommandExecutor { quester = new Quester(plugin); quester.setUUID(id); quester.saveData(); - final LinkedList<Quester> temp2 = plugin.getQuesters(); + final ConcurrentSkipListSet<Quester> temp2 = (ConcurrentSkipListSet<Quester>) plugin.getOfflineQuesters(); temp2.add(quester); - plugin.setQuesters(temp2); + plugin.setOfflineQuesters(temp2); } else { cs.sendMessage(ChatColor.RED + Lang.get("noPermission")); } diff --git a/main/src/main/java/me/blackvein/quests/listeners/PlayerListener.java b/main/src/main/java/me/blackvein/quests/listeners/PlayerListener.java index 3296d334f..675ad2afe 100644 --- a/main/src/main/java/me/blackvein/quests/listeners/PlayerListener.java +++ b/main/src/main/java/me/blackvein/quests/listeners/PlayerListener.java @@ -15,10 +15,10 @@ package me.blackvein.quests.listeners; import java.io.File; import java.util.Iterator; -import java.util.LinkedList; import java.util.Map; import java.util.Set; import java.util.UUID; +import java.util.concurrent.ConcurrentSkipListSet; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -797,9 +797,9 @@ public class PlayerListener implements Listener { } else if (plugin.getSettings().canGenFilesOnJoin()) { quester.saveData(); } - final LinkedList<Quester> temp = plugin.getQuesters(); + final ConcurrentSkipListSet<Quester> temp = (ConcurrentSkipListSet<Quester>) plugin.getOfflineQuesters(); temp.add(quester); - plugin.setQuesters(temp); + plugin.setOfflineQuesters(temp); for (final String s : quester.getCompletedQuests()) { final Quest q = plugin.getQuest(s); if (q != null) { @@ -867,14 +867,14 @@ public class PlayerListener implements Listener { temp.remove(evt.getPlayer().getUniqueId()); plugin.getQuestFactory().setSelectingNpcs(temp); } - final LinkedList<Quester> temp = plugin.getQuesters(); + final ConcurrentSkipListSet<Quester> temp = (ConcurrentSkipListSet<Quester>) plugin.getOfflineQuesters(); for (final Iterator<Quester> iterator = temp.iterator(); iterator.hasNext();) { final Quester q = iterator.next(); if (q.getUUID().equals(quester.getUUID())) { iterator.remove(); } } - plugin.setQuesters(temp); + plugin.setOfflineQuesters(temp); } }