Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.sf.l2j.gameserver;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.InputStream;
- import java.net.InetAddress;
- import java.util.logging.LogManager;
- import net.sf.l2j.commons.concurrent.ThreadPool;
- import net.sf.l2j.commons.lang.StringUtil;
- import net.sf.l2j.commons.logging.CLogger;
- import net.sf.l2j.commons.mmocore.SelectorConfig;
- import net.sf.l2j.commons.mmocore.SelectorThread;
- import net.sf.l2j.commons.util.SysUtil;
- import net.sf.l2j.Config;
- import net.sf.l2j.L2DatabaseFactory;
- import net.sf.l2j.gameserver.communitybbs.Manager.ForumsBBSManager;
- import net.sf.l2j.gameserver.data.SkillTable;
- import net.sf.l2j.gameserver.data.cache.CrestCache;
- import net.sf.l2j.gameserver.data.cache.HtmCache;
- import net.sf.l2j.gameserver.data.manager.BoatManager;
- import net.sf.l2j.gameserver.data.manager.BufferManager;
- import net.sf.l2j.gameserver.data.manager.BuyListManager;
- import net.sf.l2j.gameserver.data.manager.CastleManager;
- import net.sf.l2j.gameserver.data.manager.CastleManorManager;
- import net.sf.l2j.gameserver.data.manager.ClanHallManager;
- import net.sf.l2j.gameserver.data.manager.CoupleManager;
- import net.sf.l2j.gameserver.data.manager.CursedWeaponManager;
- import net.sf.l2j.gameserver.data.manager.DayNightManager;
- import net.sf.l2j.gameserver.data.manager.DerbyTrackManager;
- import net.sf.l2j.gameserver.data.manager.DimensionalRiftManager;
- import net.sf.l2j.gameserver.data.manager.FestivalOfDarknessManager;
- import net.sf.l2j.gameserver.data.manager.FishingChampionshipManager;
- import net.sf.l2j.gameserver.data.manager.FourSepulchersManager;
- import net.sf.l2j.gameserver.data.manager.GrandBossManager;
- import net.sf.l2j.gameserver.data.manager.HeroManager;
- import net.sf.l2j.gameserver.data.manager.LotteryManager;
- import net.sf.l2j.gameserver.data.manager.MovieMakerManager;
- import net.sf.l2j.gameserver.data.manager.PartyMatchRoomManager;
- import net.sf.l2j.gameserver.data.manager.PetitionManager;
- import net.sf.l2j.gameserver.data.manager.RaidBossManager;
- import net.sf.l2j.gameserver.data.manager.RaidPointManager;
- import net.sf.l2j.gameserver.data.manager.SevenSignsManager;
- import net.sf.l2j.gameserver.data.manager.ZoneManager;
- import net.sf.l2j.gameserver.data.sql.AutoSpawnTable;
- import net.sf.l2j.gameserver.data.sql.FakePcsTable;
- import net.sf.l2j.gameserver.data.sql.BookmarkTable;
- import net.sf.l2j.gameserver.data.sql.ClanTable;
- import net.sf.l2j.gameserver.data.sql.PlayerInfoTable;
- import net.sf.l2j.gameserver.data.sql.ServerMemoTable;
- import net.sf.l2j.gameserver.data.sql.SpawnTable;
- import net.sf.l2j.gameserver.data.xml.AdminData;
- import net.sf.l2j.gameserver.data.xml.AnnouncementData;
- import net.sf.l2j.gameserver.data.xml.ArmorSetData;
- import net.sf.l2j.gameserver.data.xml.AugmentationData;
- import net.sf.l2j.gameserver.data.xml.DoorData;
- import net.sf.l2j.gameserver.data.xml.FishData;
- import net.sf.l2j.gameserver.data.xml.HennaData;
- import net.sf.l2j.gameserver.data.xml.HerbDropData;
- import net.sf.l2j.gameserver.data.xml.ItemData;
- import net.sf.l2j.gameserver.data.xml.MapRegionData;
- import net.sf.l2j.gameserver.data.xml.MultisellData;
- import net.sf.l2j.gameserver.data.xml.NewbieBuffData;
- import net.sf.l2j.gameserver.data.xml.NpcData;
- import net.sf.l2j.gameserver.data.xml.PlayerData;
- import net.sf.l2j.gameserver.data.xml.PlayerLevelData;
- import net.sf.l2j.gameserver.data.xml.RecipeData;
- import net.sf.l2j.gameserver.data.xml.ScriptData;
- import net.sf.l2j.gameserver.data.xml.SkillTreeData;
- import net.sf.l2j.gameserver.data.xml.SoulCrystalData;
- import net.sf.l2j.gameserver.data.xml.SpellbookData;
- import net.sf.l2j.gameserver.data.xml.StaticObjectData;
- import net.sf.l2j.gameserver.data.xml.SummonItemData;
- import net.sf.l2j.gameserver.data.xml.TeleportLocationData;
- import net.sf.l2j.gameserver.data.xml.WalkerRouteData;
- import net.sf.l2j.gameserver.geoengine.GeoEngine;
- import net.sf.l2j.gameserver.handler.AdminCommandHandler;
- import net.sf.l2j.gameserver.handler.ChatHandler;
- import net.sf.l2j.gameserver.handler.ItemHandler;
- import net.sf.l2j.gameserver.handler.SkillHandler;
- import net.sf.l2j.gameserver.handler.UserCommandHandler;
- import net.sf.l2j.gameserver.idfactory.IdFactory;
- import net.sf.l2j.gameserver.model.World;
- import net.sf.l2j.gameserver.model.boat.BoatGiranTalking;
- import net.sf.l2j.gameserver.model.boat.BoatGludinRune;
- import net.sf.l2j.gameserver.model.boat.BoatInnadrilTour;
- import net.sf.l2j.gameserver.model.boat.BoatRunePrimeval;
- import net.sf.l2j.gameserver.model.boat.BoatTalkingGludin;
- import net.sf.l2j.gameserver.model.olympiad.Olympiad;
- import net.sf.l2j.gameserver.model.olympiad.OlympiadGameManager;
- import net.sf.l2j.gameserver.network.GameClient;
- import net.sf.l2j.gameserver.network.GamePacketHandler;
- import net.sf.l2j.gameserver.taskmanager.AttackStanceTaskManager;
- import net.sf.l2j.gameserver.taskmanager.DecayTaskManager;
- import net.sf.l2j.gameserver.taskmanager.GameTimeTaskManager;
- import net.sf.l2j.gameserver.taskmanager.ItemsOnGroundTaskManager;
- import net.sf.l2j.gameserver.taskmanager.PvpFlagTaskManager;
- import net.sf.l2j.gameserver.taskmanager.RandomAnimationTaskManager;
- import net.sf.l2j.gameserver.taskmanager.ShadowItemTaskManager;
- import net.sf.l2j.gameserver.taskmanager.WaterTaskManager;
- import net.sf.l2j.util.DeadLockDetector;
- import net.sf.l2j.util.IPv4Filter;
- public class GameServer
- {
- private static final CLogger LOGGER = new CLogger(GameServer.class.getName());
- private final SelectorThread<GameClient> _selectorThread;
- private static GameServer _gameServer;
- public static void main(String[] args) throws Exception
- {
- _gameServer = new GameServer();
- }
- public GameServer() throws Exception
- {
- // Create log folder
- new File("./log").mkdir();
- new File("./log/chat").mkdir();
- new File("./log/console").mkdir();
- new File("./log/error").mkdir();
- new File("./log/gmaudit").mkdir();
- new File("./log/item").mkdir();
- new File("./data/crests").mkdirs();
- // Create input stream for log file -- or store file data into memory
- try (InputStream is = new FileInputStream(new File("config/logging.properties")))
- {
- LogManager.getLogManager().readConfiguration(is);
- }
- StringUtil.printSection("aCis");
- // Initialize config
- Config.loadGameServer();
- // Factories
- L2DatabaseFactory.getInstance();
- ThreadPool.init();
- StringUtil.printSection("IdFactory");
- IdFactory.getInstance();
- StringUtil.printSection("World");
- World.getInstance();
- MapRegionData.getInstance();
- AnnouncementData.getInstance();
- ServerMemoTable.getInstance();
- StringUtil.printSection("Skills");
- SkillTable.getInstance();
- SkillTreeData.getInstance();
- StringUtil.printSection("Items");
- ItemData.getInstance();
- SummonItemData.getInstance();
- HennaData.getInstance();
- BuyListManager.getInstance();
- MultisellData.getInstance();
- RecipeData.getInstance();
- ArmorSetData.getInstance();
- FishData.getInstance();
- SpellbookData.getInstance();
- SoulCrystalData.getInstance();
- AugmentationData.getInstance();
- CursedWeaponManager.getInstance();
- StringUtil.printSection("Admins");
- AdminData.getInstance();
- BookmarkTable.getInstance();
- MovieMakerManager.getInstance();
- PetitionManager.getInstance();
- StringUtil.printSection("Characters");
- PlayerData.getInstance();
- PlayerInfoTable.getInstance();
- PlayerLevelData.getInstance();
- NewbieBuffData.getInstance();
- TeleportLocationData.getInstance();
- HtmCache.getInstance();
- PartyMatchRoomManager.getInstance();
- RaidPointManager.getInstance();
- StringUtil.printSection("Community server");
- if (Config.ENABLE_COMMUNITY_BOARD) // Forums has to be loaded before clan data
- ForumsBBSManager.getInstance().initRoot();
- else
- LOGGER.info("Community server is disabled.");
- StringUtil.printSection("Clans");
- CrestCache.getInstance();
- ClanTable.getInstance();
- StringUtil.printSection("Geodata & Pathfinding");
- GeoEngine.getInstance();
- StringUtil.printSection("Zones");
- ZoneManager.getInstance();
- StringUtil.printSection("Castles & Clan Halls");
- CastleManager.getInstance();
- ClanHallManager.getInstance();
- StringUtil.printSection("Task Managers");
- AttackStanceTaskManager.getInstance();
- DecayTaskManager.getInstance();
- GameTimeTaskManager.getInstance();
- ItemsOnGroundTaskManager.getInstance();
- PvpFlagTaskManager.getInstance();
- RandomAnimationTaskManager.getInstance();
- ShadowItemTaskManager.getInstance();
- WaterTaskManager.getInstance();
- StringUtil.printSection("Auto Spawns");
- AutoSpawnTable.getInstance();
- StringUtil.printSection("Seven Signs");
- SevenSignsManager.getInstance().spawnSevenSignsNPC();
- FestivalOfDarknessManager.getInstance();
- StringUtil.printSection("Manor Manager");
- CastleManorManager.getInstance();
- StringUtil.printSection("NPCs");
- BufferManager.getInstance();
- HerbDropData.getInstance();
- NpcData.getInstance();
- WalkerRouteData.getInstance();
- DoorData.getInstance().spawn();
- StaticObjectData.getInstance();
- SpawnTable.getInstance();
- RaidBossManager.getInstance();
- GrandBossManager.getInstance();
- DayNightManager.getInstance().notifyChangeMode();
- DimensionalRiftManager.getInstance();
- StringUtil.printSection("Olympiads & Heroes");
- OlympiadGameManager.getInstance();
- Olympiad.getInstance();
- HeroManager.getInstance();
- StringUtil.printSection("Four Sepulchers");
- FourSepulchersManager.getInstance();
- StringUtil.printSection("Quests & Scripts");
- ScriptData.getInstance();
- if (Config.ALLOW_BOAT)
- {
- BoatManager.getInstance();
- BoatGiranTalking.load();
- BoatGludinRune.load();
- BoatInnadrilTour.load();
- BoatRunePrimeval.load();
- BoatTalkingGludin.load();
- BufferTable.getInstance();
- HerbDropTable.getInstance();
- NpcTable.getInstance();
- FakePcsTable.getInstance();
- NpcWalkerRoutesTable.getInstance();
- DoorTable.getInstance();
- StaticObjectData.load();
- }
- StringUtil.printSection("Events");
- DerbyTrackManager.getInstance();
- LotteryManager.getInstance();
- if (Config.ALLOW_WEDDING)
- CoupleManager.getInstance();
- if (Config.ALT_FISH_CHAMPIONSHIP_ENABLED)
- FishingChampionshipManager.getInstance();
- StringUtil.printSection("Handlers");
- LOGGER.info("Loaded {} admin command handlers.", AdminCommandHandler.getInstance().size());
- LOGGER.info("Loaded {} chat handlers.", ChatHandler.getInstance().size());
- LOGGER.info("Loaded {} item handlers.", ItemHandler.getInstance().size());
- LOGGER.info("Loaded {} skill handlers.", SkillHandler.getInstance().size());
- LOGGER.info("Loaded {} user command handlers.", UserCommandHandler.getInstance().size());
- StringUtil.printSection("System");
- Runtime.getRuntime().addShutdownHook(Shutdown.getInstance());
- ForumsBBSManager.getInstance();
- if (Config.DEADLOCK_DETECTOR)
- {
- LOGGER.info("Deadlock detector is enabled. Timer: {}s.", Config.DEADLOCK_CHECK_INTERVAL);
- final DeadLockDetector deadDetectThread = new DeadLockDetector();
- deadDetectThread.setDaemon(true);
- deadDetectThread.start();
- }
- else
- LOGGER.info("Deadlock detector is disabled.");
- System.gc();
- LOGGER.info("Gameserver has started, used memory: {} / {} Mo.", SysUtil.getUsedMemory(), SysUtil.getMaxMemory());
- LOGGER.info("Maximum allowed players: {}.", Config.MAXIMUM_ONLINE_USERS);
- StringUtil.printSection("Login");
- LoginServerThread.getInstance().start();
- final SelectorConfig sc = new SelectorConfig();
- sc.MAX_READ_PER_PASS = Config.MMO_MAX_READ_PER_PASS;
- sc.MAX_SEND_PER_PASS = Config.MMO_MAX_SEND_PER_PASS;
- sc.SLEEP_TIME = Config.MMO_SELECTOR_SLEEP_TIME;
- sc.HELPER_BUFFER_COUNT = Config.MMO_HELPER_BUFFER_COUNT;
- final GamePacketHandler handler = new GamePacketHandler();
- _selectorThread = new SelectorThread<>(sc, handler, handler, handler, new IPv4Filter());
- InetAddress bindAddress = null;
- if (!Config.GAMESERVER_HOSTNAME.equals("*"))
- {
- try
- {
- bindAddress = InetAddress.getByName(Config.GAMESERVER_HOSTNAME);
- }
- catch (Exception e)
- {
- LOGGER.error("The GameServer bind address is invalid, using all available IPs.", e);
- }
- }
- try
- {
- _selectorThread.openServerSocket(bindAddress, Config.PORT_GAME);
- }
- catch (Exception e)
- {
- LOGGER.error("Failed to open server socket.", e);
- System.exit(1);
- }
- _selectorThread.start();
- }
- public static GameServer getInstance()
- {
- return _gameServer;
- }
- public SelectorThread<GameClient> getSelectorThread()
- {
- return _selectorThread;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement