Load quests async on startup
This commit is contained in:
@@ -856,15 +856,11 @@ public class Server {
|
|||||||
final List<Future<?>> futures = new ArrayList<>();
|
final List<Future<?>> futures = new ArrayList<>();
|
||||||
futures.add(initExecutor.submit(() -> SkillFactory.loadAllSkills()));
|
futures.add(initExecutor.submit(() -> SkillFactory.loadAllSkills()));
|
||||||
futures.add(initExecutor.submit(() -> CashItemFactory.loadAllCashItems()));
|
futures.add(initExecutor.submit(() -> CashItemFactory.loadAllCashItems()));
|
||||||
|
futures.add(initExecutor.submit(() -> MapleQuest.loadAllQuests()));
|
||||||
|
|
||||||
ThreadManager.getInstance().start();
|
ThreadManager.getInstance().start();
|
||||||
initializeTimelyTasks(); // aggregated method for timely tasks thanks to lxconan
|
initializeTimelyTasks(); // aggregated method for timely tasks thanks to lxconan
|
||||||
|
|
||||||
long timeToTake = System.currentTimeMillis();
|
|
||||||
MapleQuest.loadAllQuest();
|
|
||||||
final double questLoadTime = (System.currentTimeMillis() - timeToTake) / 1000.0;
|
|
||||||
log.info("Quest loaded in {} seconds", questLoadTime);
|
|
||||||
|
|
||||||
NewYearCardRecord.startPendingNewYearCardRequests();
|
NewYearCardRecord.startPendingNewYearCardRequests();
|
||||||
|
|
||||||
if (YamlConfig.config.server.USE_THREAD_TRACKER) {
|
if (YamlConfig.config.server.USE_THREAD_TRACKER) {
|
||||||
@@ -888,7 +884,7 @@ public class Server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (YamlConfig.config.server.USE_FAMILY_SYSTEM) {
|
if (YamlConfig.config.server.USE_FAMILY_SYSTEM) {
|
||||||
timeToTake = System.currentTimeMillis();
|
long timeToTake = System.currentTimeMillis();
|
||||||
MapleFamily.loadAllFamilies();
|
MapleFamily.loadAllFamilies();
|
||||||
final double familyLoadTime = (System.currentTimeMillis() - timeToTake) / 1000.0;
|
final double familyLoadTime = (System.currentTimeMillis() - timeToTake) / 1000.0;
|
||||||
log.info("Families loaded in {} seconds", familyLoadTime);
|
log.info("Families loaded in {} seconds", familyLoadTime);
|
||||||
|
|||||||
@@ -21,20 +21,10 @@
|
|||||||
*/
|
*/
|
||||||
package server.quest;
|
package server.quest;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import client.MapleCharacter;
|
import client.MapleCharacter;
|
||||||
import client.MapleQuestStatus;
|
import client.MapleQuestStatus;
|
||||||
import client.MapleQuestStatus.Status;
|
import client.MapleQuestStatus.Status;
|
||||||
import config.YamlConfig;
|
import config.YamlConfig;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.EnumMap;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.Set;
|
|
||||||
import provider.MapleData;
|
import provider.MapleData;
|
||||||
import provider.MapleDataProvider;
|
import provider.MapleDataProvider;
|
||||||
import provider.MapleDataProviderFactory;
|
import provider.MapleDataProviderFactory;
|
||||||
@@ -44,6 +34,10 @@ import server.quest.requirements.*;
|
|||||||
import tools.MaplePacketCreator;
|
import tools.MaplePacketCreator;
|
||||||
import tools.StringUtil;
|
import tools.StringUtil;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Matze
|
* @author Matze
|
||||||
@@ -51,8 +45,8 @@ import tools.StringUtil;
|
|||||||
*/
|
*/
|
||||||
public class MapleQuest {
|
public class MapleQuest {
|
||||||
|
|
||||||
private static Map<Integer, MapleQuest> quests = new HashMap<>();
|
private static volatile Map<Integer, MapleQuest> quests = new HashMap<>();
|
||||||
private static Map<Integer, Integer> infoNumberQuests = new HashMap<>();
|
private static volatile Map<Integer, Integer> infoNumberQuests = new HashMap<>();
|
||||||
private static Map<Short, Integer> medals = new HashMap<>();
|
private static Map<Short, Integer> medals = new HashMap<>();
|
||||||
|
|
||||||
private static final Set<Short> exploitableQuests = new HashSet<>();
|
private static final Set<Short> exploitableQuests = new HashSet<>();
|
||||||
@@ -459,9 +453,7 @@ public class MapleQuest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void clearCache(int quest) {
|
public static void clearCache(int quest) {
|
||||||
if(quests.containsKey(quest)){
|
quests.remove(quest);
|
||||||
quests.remove(quest);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void clearCache() {
|
public static void clearCache() {
|
||||||
@@ -657,28 +649,30 @@ public class MapleQuest {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void loadAllQuest() {
|
public static void loadAllQuests() {
|
||||||
try {
|
final Map<Integer, MapleQuest> loadedQuests = new HashMap<>();
|
||||||
for(MapleData quest : questInfo.getChildren()) {
|
final Map<Integer, Integer> loadedInfoNumberQuests = new HashMap<>();
|
||||||
int questID = Integer.parseInt(quest.getName());
|
|
||||||
|
|
||||||
MapleQuest q = new MapleQuest(questID);
|
for (MapleData quest : questInfo.getChildren()) {
|
||||||
quests.put(questID, q);
|
int questID = Integer.parseInt(quest.getName());
|
||||||
|
|
||||||
int infoNumber;
|
MapleQuest q = new MapleQuest(questID);
|
||||||
|
loadedQuests.put(questID, q);
|
||||||
|
|
||||||
infoNumber = q.getInfoNumber(Status.STARTED);
|
int infoNumber;
|
||||||
if (infoNumber > 0) {
|
|
||||||
infoNumberQuests.put(infoNumber, questID);
|
|
||||||
}
|
|
||||||
|
|
||||||
infoNumber = q.getInfoNumber(Status.COMPLETED);
|
infoNumber = q.getInfoNumber(Status.STARTED);
|
||||||
if (infoNumber > 0) {
|
if (infoNumber > 0) {
|
||||||
infoNumberQuests.put(infoNumber, questID);
|
loadedInfoNumberQuests.put(infoNumber, questID);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} catch (Exception ex) {
|
infoNumber = q.getInfoNumber(Status.COMPLETED);
|
||||||
ex.printStackTrace();
|
if (infoNumber > 0) {
|
||||||
}
|
loadedInfoNumberQuests.put(infoNumber, questID);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MapleQuest.quests = loadedQuests;
|
||||||
|
MapleQuest.infoNumberQuests = loadedInfoNumberQuests;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user