diff --git a/src/main/java/com/gamingmesh/jobs/commands/list/quests.java b/src/main/java/com/gamingmesh/jobs/commands/list/quests.java index 8b58b697..1cd4edb5 100644 --- a/src/main/java/com/gamingmesh/jobs/commands/list/quests.java +++ b/src/main/java/com/gamingmesh/jobs/commands/list/quests.java @@ -14,6 +14,7 @@ import com.gamingmesh.jobs.container.JobProgression; import com.gamingmesh.jobs.container.JobsPlayer; import com.gamingmesh.jobs.container.QuestObjective; import com.gamingmesh.jobs.container.QuestProgression; +import com.gamingmesh.jobs.stuff.Debug; import com.gamingmesh.jobs.CMILib.RawMessage; public class quests implements Cmd { @@ -59,6 +60,7 @@ public class quests implements Cmd { if (q.isCompleted()) progressLine = Jobs.getLanguage().getMessage("command.quests.output.completed"); + RawMessage rm = new RawMessage(); String msg = Jobs.getLanguage().getMessage("command.quests.output.questLine", "[progress]", progressLine, "[questName]", q.getQuest().getQuestName(), "[done]", q.getTotalAmountDone(), "[required]", q.getTotalAmountNeeded()); diff --git a/src/main/java/com/gamingmesh/jobs/commands/list/resetquest.java b/src/main/java/com/gamingmesh/jobs/commands/list/resetquest.java index 6d61ccb3..9f86468d 100644 --- a/src/main/java/com/gamingmesh/jobs/commands/list/resetquest.java +++ b/src/main/java/com/gamingmesh/jobs/commands/list/resetquest.java @@ -60,8 +60,7 @@ public class resetquest implements Cmd { } } - jPlayer.setDoneQuests(0); - jPlayer.getQuestProgressions(job).clear(); + jPlayer.resetQuests(); sender.sendMessage(Jobs.getLanguage().getMessage("command.resetquest.output.reseted", "%playername%", jPlayer.getUserName())); diff --git a/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java b/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java index 9d87d982..4e614381 100644 --- a/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java +++ b/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java @@ -34,6 +34,7 @@ import com.gamingmesh.jobs.dao.JobsDAO; import com.gamingmesh.jobs.economy.PaymentData; import com.gamingmesh.jobs.resources.jfep.Parser; import com.gamingmesh.jobs.stuff.ChatColor; +import com.gamingmesh.jobs.stuff.Debug; import com.gamingmesh.jobs.stuff.FurnaceBrewingHandling; import com.gamingmesh.jobs.stuff.TimeManage; @@ -381,7 +382,7 @@ public class JobsPlayer { public void setPlayerUUID(UUID playerUUID) { setUniqueId(playerUUID); } - + public void setUniqueId(UUID playerUUID) { this.playerUUID = playerUUID; } @@ -878,13 +879,10 @@ public class JobsPlayer { public void resetQuests(Job job) { for (QuestProgression oneQ : getQuestProgressions(job)) { - oneQ.setValidUntil(0l); + oneQ.setValidUntil(oneQ.getQuest().getValidUntil()); for (Entry obj : oneQ.getQuest().getObjectives().entrySet()) { oneQ.setAmountDone(obj.getValue(), 0); } - - setDoneQuests(0); - getQuestProgressions(job).clear(); } } @@ -894,6 +892,16 @@ public class JobsPlayer { } } + public void getNewQuests() { + qProgression.clear(); + } + + public void getNewQuests(Job job) { + HashMap prog = qProgression.get(job.getName()); + if (prog != null) + prog.clear(); + } + public List getQuestProgressions() { List g = new ArrayList<>(); for (JobProgression one : getJobProgression()) { @@ -918,22 +926,8 @@ public class JobsPlayer { for (Entry one : (new HashMap(g)).entrySet()) { QuestProgression qp = one.getValue(); - if (qp == null || !qp.isValid()) { - Quest q = job.getNextQuest(getQuestNameList(job, type), getJobProgression(job).getLevel()); - - if (q == null) - continue; - - qp = new QuestProgression(q); - - if (g.size() >= job.getMaxDailyQuests()) - continue; - - g.put(qp.getQuest().getConfigName(), qp); - } - - if (qp.getQuest() == null) { - g.remove(one.getKey()); + if (qp.isEnded()) { + g.remove(one.getKey().toLowerCase()); continue; } } @@ -946,21 +940,32 @@ public class JobsPlayer { if (q == null) continue; QuestProgression qp = new QuestProgression(q); - g.put(qp.getQuest().getConfigName(), qp); + g.put(qp.getQuest().getConfigName().toLowerCase(), qp); if (g.size() >= job.getMaxDailyQuests()) break; } } + if (g.size() > job.getMaxDailyQuests()) { + int i = g.size(); + while (i > 0) { + --i; + g.remove(g.entrySet().iterator().next().getKey()); + + if (g.size() <= job.getMaxDailyQuests()) + break; + } + } + qProgression.put(job.getName(), g); for (Entry oneJ : g.entrySet()) { if (type == null) { - tmp.put(oneJ.getValue().getQuest().getConfigName(), oneJ.getValue()); + tmp.put(oneJ.getValue().getQuest().getConfigName().toLowerCase(), oneJ.getValue()); } else for (Entry one : oneJ.getValue().getQuest().getObjectives().entrySet()) { if (type.name().equals(one.getValue().getAction().name())) { - tmp.put(oneJ.getValue().getQuest().getConfigName(), oneJ.getValue()); + tmp.put(oneJ.getValue().getQuest().getConfigName().toLowerCase(), oneJ.getValue()); break; } } diff --git a/src/main/java/com/gamingmesh/jobs/container/QuestProgression.java b/src/main/java/com/gamingmesh/jobs/container/QuestProgression.java index a35e9efe..722cb5c1 100644 --- a/src/main/java/com/gamingmesh/jobs/container/QuestProgression.java +++ b/src/main/java/com/gamingmesh/jobs/container/QuestProgression.java @@ -7,11 +7,12 @@ import org.bukkit.Bukkit; import org.bukkit.event.server.ServerCommandEvent; import com.gamingmesh.jobs.Jobs; +import com.gamingmesh.jobs.stuff.Debug; public class QuestProgression { private Quest quest; - private Long validUntil; + private long validUntil; private boolean givenReward = false; private HashMap done = new HashMap<>(); @@ -56,7 +57,7 @@ public class QuestProgression { } public Long getValidUntil() { - return quest.getValidUntil(); + return this.validUntil; } public void setValidUntil(Long validUntil) { @@ -64,7 +65,7 @@ public class QuestProgression { } public boolean isValid() { - return validUntil.equals(getValidUntil()); + return validUntil == getValidUntil(); } public boolean isEnded() { @@ -91,7 +92,7 @@ public class QuestProgression { for (String area : quest.getRestrictedAreas()) { for (Entry a : Jobs.getRestrictedAreaManager().getRestrictedAres().entrySet()) { if (quest.getRestrictedAreas().contains(a.getKey()) && a.getKey().equalsIgnoreCase(area) - && a.getValue().inRestrictedArea(jPlayer.getPlayer().getLocation())) { + && a.getValue().inRestrictedArea(jPlayer.getPlayer().getLocation())) { return; } }