|
@@ -20,15 +20,12 @@ package com.l2jserver.gameserver;
|
|
|
|
|
|
import java.awt.Toolkit;
|
|
import java.awt.Toolkit;
|
|
import java.io.File;
|
|
import java.io.File;
|
|
-import java.io.FileInputStream;
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
-import java.io.InputStream;
|
|
|
|
import java.net.InetAddress;
|
|
import java.net.InetAddress;
|
|
import java.net.UnknownHostException;
|
|
import java.net.UnknownHostException;
|
|
import java.nio.file.Paths;
|
|
import java.nio.file.Paths;
|
|
import java.util.Calendar;
|
|
import java.util.Calendar;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeUnit;
|
|
-import java.util.logging.LogManager;
|
|
|
|
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -148,20 +145,25 @@ import com.l2jserver.util.IPv4Filter;
|
|
import com.l2jserver.util.Util;
|
|
import com.l2jserver.util.Util;
|
|
|
|
|
|
public final class GameServer {
|
|
public final class GameServer {
|
|
|
|
+
|
|
private static final Logger LOG = LoggerFactory.getLogger(GameServer.class);
|
|
private static final Logger LOG = LoggerFactory.getLogger(GameServer.class);
|
|
- private static final String LOG_FOLDER = "log"; // Name of folder for log file
|
|
|
|
- private static final String LOG_NAME = "./log.cfg"; // Name of log file
|
|
|
|
|
|
+
|
|
private static final String DATAPACK = "-dp";
|
|
private static final String DATAPACK = "-dp";
|
|
|
|
+
|
|
private static final String GEODATA = "-gd";
|
|
private static final String GEODATA = "-gd";
|
|
|
|
|
|
private final SelectorThread<L2GameClient> _selectorThread;
|
|
private final SelectorThread<L2GameClient> _selectorThread;
|
|
|
|
+
|
|
private final L2GamePacketHandler _gamePacketHandler;
|
|
private final L2GamePacketHandler _gamePacketHandler;
|
|
|
|
+
|
|
private final DeadLockDetector _deadDetectThread;
|
|
private final DeadLockDetector _deadDetectThread;
|
|
|
|
+
|
|
public static GameServer gameServer;
|
|
public static GameServer gameServer;
|
|
|
|
+
|
|
public static final Calendar dateTimeServerStarted = Calendar.getInstance();
|
|
public static final Calendar dateTimeServerStarted = Calendar.getInstance();
|
|
|
|
|
|
public GameServer() throws Exception {
|
|
public GameServer() throws Exception {
|
|
- long serverLoadStart = System.currentTimeMillis();
|
|
|
|
|
|
+ final var serverLoadStart = System.currentTimeMillis();
|
|
|
|
|
|
LOG.info("{}: Used memory: {}MB.", getClass().getSimpleName(), getUsedMemoryMB());
|
|
LOG.info("{}: Used memory: {}MB.", getClass().getSimpleName(), getUsedMemoryMB());
|
|
|
|
|
|
@@ -172,13 +174,9 @@ public final class GameServer {
|
|
|
|
|
|
ThreadPoolManager.getInstance();
|
|
ThreadPoolManager.getInstance();
|
|
EventDispatcher.getInstance();
|
|
EventDispatcher.getInstance();
|
|
-
|
|
|
|
- new File("log/game").mkdirs();
|
|
|
|
-
|
|
|
|
ScriptEngineManager.getInstance();
|
|
ScriptEngineManager.getInstance();
|
|
|
|
|
|
printSection("World");
|
|
printSection("World");
|
|
- // start game time control early
|
|
|
|
GameTimeController.init();
|
|
GameTimeController.init();
|
|
InstanceManager.getInstance();
|
|
InstanceManager.getInstance();
|
|
L2World.getInstance();
|
|
L2World.getInstance();
|
|
@@ -302,12 +300,11 @@ public final class GameServer {
|
|
FortManager.getInstance().activateInstances();
|
|
FortManager.getInstance().activateInstances();
|
|
FortSiegeManager.getInstance();
|
|
FortSiegeManager.getInstance();
|
|
SiegeScheduleData.getInstance();
|
|
SiegeScheduleData.getInstance();
|
|
-
|
|
|
|
MerchantPriceConfigTable.getInstance().updateReferences();
|
|
MerchantPriceConfigTable.getInstance().updateReferences();
|
|
TerritoryWarManager.getInstance();
|
|
TerritoryWarManager.getInstance();
|
|
CastleManorManager.getInstance();
|
|
CastleManorManager.getInstance();
|
|
MercTicketManager.getInstance();
|
|
MercTicketManager.getInstance();
|
|
-
|
|
|
|
|
|
+ printSection("Quests");
|
|
QuestManager.getInstance().report();
|
|
QuestManager.getInstance().report();
|
|
|
|
|
|
if (Config.SAVE_DROPPED_ITEM) {
|
|
if (Config.SAVE_DROPPED_ITEM) {
|
|
@@ -319,13 +316,10 @@ public final class GameServer {
|
|
}
|
|
}
|
|
|
|
|
|
MonsterRace.getInstance();
|
|
MonsterRace.getInstance();
|
|
-
|
|
|
|
SevenSigns.getInstance().spawnSevenSignsNPC();
|
|
SevenSigns.getInstance().spawnSevenSignsNPC();
|
|
SevenSignsFestival.getInstance();
|
|
SevenSignsFestival.getInstance();
|
|
AutoSpawnHandler.getInstance();
|
|
AutoSpawnHandler.getInstance();
|
|
-
|
|
|
|
FaenorScriptEngine.getInstance();
|
|
FaenorScriptEngine.getInstance();
|
|
- // Init of a cursed weapon manager
|
|
|
|
|
|
|
|
LOG.info("AutoSpawnHandler: Loaded {} handlers in total.", AutoSpawnHandler.getInstance().size());
|
|
LOG.info("AutoSpawnHandler: Loaded {} handlers in total.", AutoSpawnHandler.getInstance().size());
|
|
|
|
|
|
@@ -410,7 +404,6 @@ public final class GameServer {
|
|
public static void main(String[] args) throws Exception {
|
|
public static void main(String[] args) throws Exception {
|
|
Server.serverMode = Server.MODE_GAMESERVER;
|
|
Server.serverMode = Server.MODE_GAMESERVER;
|
|
|
|
|
|
- // Initialize configurations.
|
|
|
|
Config.load();
|
|
Config.load();
|
|
|
|
|
|
final String dp = Util.parseArg(args, DATAPACK, true);
|
|
final String dp = Util.parseArg(args, DATAPACK, true);
|
|
@@ -423,18 +416,7 @@ public final class GameServer {
|
|
Config.GEODATA_PATH = Paths.get(gd);
|
|
Config.GEODATA_PATH = Paths.get(gd);
|
|
}
|
|
}
|
|
|
|
|
|
- // Create log folder
|
|
|
|
- File logFolder = new File(Config.DATAPACK_ROOT, LOG_FOLDER);
|
|
|
|
- logFolder.mkdir();
|
|
|
|
-
|
|
|
|
- // Create input stream for log file -- or store file data into memory
|
|
|
|
- try (InputStream is = new FileInputStream(new File(LOG_NAME))) {
|
|
|
|
- LogManager.getLogManager().readConfiguration(is);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
printSection("Database");
|
|
printSection("Database");
|
|
- DAOFactory.getInstance();
|
|
|
|
-
|
|
|
|
ConnectionFactory.builder() //
|
|
ConnectionFactory.builder() //
|
|
.withDriver(Config.DATABASE_DRIVER) //
|
|
.withDriver(Config.DATABASE_DRIVER) //
|
|
.withUrl(Config.DATABASE_URL) //
|
|
.withUrl(Config.DATABASE_URL) //
|
|
@@ -445,6 +427,8 @@ public final class GameServer {
|
|
.withMaxPoolSize(Config.DATABASE_MAX_CONNECTIONS) //
|
|
.withMaxPoolSize(Config.DATABASE_MAX_CONNECTIONS) //
|
|
.build();
|
|
.build();
|
|
|
|
|
|
|
|
+ DAOFactory.getInstance();
|
|
|
|
+
|
|
gameServer = new GameServer();
|
|
gameServer = new GameServer();
|
|
|
|
|
|
if (Config.IS_TELNET_ENABLED) {
|
|
if (Config.IS_TELNET_ENABLED) {
|