Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2020
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.60 KB | None | 0 0
  1. package net.sf.l2j.gameserver;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.InputStream;
  6. import java.net.InetAddress;
  7. import java.util.logging.LogManager;
  8.  
  9. import net.sf.l2j.commons.concurrent.ThreadPool;
  10. import net.sf.l2j.commons.lang.StringUtil;
  11. import net.sf.l2j.commons.logging.CLogger;
  12. import net.sf.l2j.commons.mmocore.SelectorConfig;
  13. import net.sf.l2j.commons.mmocore.SelectorThread;
  14. import net.sf.l2j.commons.util.SysUtil;
  15.  
  16. import net.sf.l2j.Config;
  17. import net.sf.l2j.L2DatabaseFactory;
  18. import net.sf.l2j.gameserver.communitybbs.Manager.ForumsBBSManager;
  19. import net.sf.l2j.gameserver.data.SkillTable;
  20. import net.sf.l2j.gameserver.data.cache.CrestCache;
  21. import net.sf.l2j.gameserver.data.cache.HtmCache;
  22. import net.sf.l2j.gameserver.data.manager.BoatManager;
  23. import net.sf.l2j.gameserver.data.manager.BufferManager;
  24. import net.sf.l2j.gameserver.data.manager.BuyListManager;
  25. import net.sf.l2j.gameserver.data.manager.CastleManager;
  26. import net.sf.l2j.gameserver.data.manager.CastleManorManager;
  27. import net.sf.l2j.gameserver.data.manager.ClanHallManager;
  28. import net.sf.l2j.gameserver.data.manager.CoupleManager;
  29. import net.sf.l2j.gameserver.data.manager.CursedWeaponManager;
  30. import net.sf.l2j.gameserver.data.manager.DayNightManager;
  31. import net.sf.l2j.gameserver.data.manager.DerbyTrackManager;
  32. import net.sf.l2j.gameserver.data.manager.DimensionalRiftManager;
  33. import net.sf.l2j.gameserver.data.manager.FestivalOfDarknessManager;
  34. import net.sf.l2j.gameserver.data.manager.FishingChampionshipManager;
  35. import net.sf.l2j.gameserver.data.manager.FourSepulchersManager;
  36. import net.sf.l2j.gameserver.data.manager.GrandBossManager;
  37. import net.sf.l2j.gameserver.data.manager.HeroManager;
  38. import net.sf.l2j.gameserver.data.manager.LotteryManager;
  39. import net.sf.l2j.gameserver.data.manager.MovieMakerManager;
  40. import net.sf.l2j.gameserver.data.manager.PartyMatchRoomManager;
  41. import net.sf.l2j.gameserver.data.manager.PetitionManager;
  42. import net.sf.l2j.gameserver.data.manager.RaidBossManager;
  43. import net.sf.l2j.gameserver.data.manager.RaidPointManager;
  44. import net.sf.l2j.gameserver.data.manager.SevenSignsManager;
  45. import net.sf.l2j.gameserver.data.manager.ZoneManager;
  46. import net.sf.l2j.gameserver.data.sql.AutoSpawnTable;
  47. import net.sf.l2j.gameserver.data.sql.FakePcsTable;
  48. import net.sf.l2j.gameserver.data.sql.BookmarkTable;
  49. import net.sf.l2j.gameserver.data.sql.ClanTable;
  50. import net.sf.l2j.gameserver.data.sql.PlayerInfoTable;
  51. import net.sf.l2j.gameserver.data.sql.ServerMemoTable;
  52. import net.sf.l2j.gameserver.data.sql.SpawnTable;
  53. import net.sf.l2j.gameserver.data.xml.AdminData;
  54. import net.sf.l2j.gameserver.data.xml.AnnouncementData;
  55. import net.sf.l2j.gameserver.data.xml.ArmorSetData;
  56. import net.sf.l2j.gameserver.data.xml.AugmentationData;
  57. import net.sf.l2j.gameserver.data.xml.DoorData;
  58. import net.sf.l2j.gameserver.data.xml.FishData;
  59. import net.sf.l2j.gameserver.data.xml.HennaData;
  60. import net.sf.l2j.gameserver.data.xml.HerbDropData;
  61. import net.sf.l2j.gameserver.data.xml.ItemData;
  62. import net.sf.l2j.gameserver.data.xml.MapRegionData;
  63. import net.sf.l2j.gameserver.data.xml.MultisellData;
  64. import net.sf.l2j.gameserver.data.xml.NewbieBuffData;
  65. import net.sf.l2j.gameserver.data.xml.NpcData;
  66. import net.sf.l2j.gameserver.data.xml.PlayerData;
  67. import net.sf.l2j.gameserver.data.xml.PlayerLevelData;
  68. import net.sf.l2j.gameserver.data.xml.RecipeData;
  69. import net.sf.l2j.gameserver.data.xml.ScriptData;
  70. import net.sf.l2j.gameserver.data.xml.SkillTreeData;
  71. import net.sf.l2j.gameserver.data.xml.SoulCrystalData;
  72. import net.sf.l2j.gameserver.data.xml.SpellbookData;
  73. import net.sf.l2j.gameserver.data.xml.StaticObjectData;
  74. import net.sf.l2j.gameserver.data.xml.SummonItemData;
  75. import net.sf.l2j.gameserver.data.xml.TeleportLocationData;
  76. import net.sf.l2j.gameserver.data.xml.WalkerRouteData;
  77. import net.sf.l2j.gameserver.geoengine.GeoEngine;
  78. import net.sf.l2j.gameserver.handler.AdminCommandHandler;
  79. import net.sf.l2j.gameserver.handler.ChatHandler;
  80. import net.sf.l2j.gameserver.handler.ItemHandler;
  81. import net.sf.l2j.gameserver.handler.SkillHandler;
  82. import net.sf.l2j.gameserver.handler.UserCommandHandler;
  83. import net.sf.l2j.gameserver.idfactory.IdFactory;
  84. import net.sf.l2j.gameserver.model.World;
  85. import net.sf.l2j.gameserver.model.boat.BoatGiranTalking;
  86. import net.sf.l2j.gameserver.model.boat.BoatGludinRune;
  87. import net.sf.l2j.gameserver.model.boat.BoatInnadrilTour;
  88. import net.sf.l2j.gameserver.model.boat.BoatRunePrimeval;
  89. import net.sf.l2j.gameserver.model.boat.BoatTalkingGludin;
  90. import net.sf.l2j.gameserver.model.olympiad.Olympiad;
  91. import net.sf.l2j.gameserver.model.olympiad.OlympiadGameManager;
  92. import net.sf.l2j.gameserver.network.GameClient;
  93. import net.sf.l2j.gameserver.network.GamePacketHandler;
  94. import net.sf.l2j.gameserver.taskmanager.AttackStanceTaskManager;
  95. import net.sf.l2j.gameserver.taskmanager.DecayTaskManager;
  96. import net.sf.l2j.gameserver.taskmanager.GameTimeTaskManager;
  97. import net.sf.l2j.gameserver.taskmanager.ItemsOnGroundTaskManager;
  98. import net.sf.l2j.gameserver.taskmanager.PvpFlagTaskManager;
  99. import net.sf.l2j.gameserver.taskmanager.RandomAnimationTaskManager;
  100. import net.sf.l2j.gameserver.taskmanager.ShadowItemTaskManager;
  101. import net.sf.l2j.gameserver.taskmanager.WaterTaskManager;
  102. import net.sf.l2j.util.DeadLockDetector;
  103. import net.sf.l2j.util.IPv4Filter;
  104.  
  105. public class GameServer
  106. {
  107. private static final CLogger LOGGER = new CLogger(GameServer.class.getName());
  108.  
  109. private final SelectorThread<GameClient> _selectorThread;
  110.  
  111. private static GameServer _gameServer;
  112.  
  113. public static void main(String[] args) throws Exception
  114. {
  115. _gameServer = new GameServer();
  116. }
  117.  
  118. public GameServer() throws Exception
  119. {
  120. // Create log folder
  121. new File("./log").mkdir();
  122. new File("./log/chat").mkdir();
  123. new File("./log/console").mkdir();
  124. new File("./log/error").mkdir();
  125. new File("./log/gmaudit").mkdir();
  126. new File("./log/item").mkdir();
  127. new File("./data/crests").mkdirs();
  128.  
  129. // Create input stream for log file -- or store file data into memory
  130. try (InputStream is = new FileInputStream(new File("config/logging.properties")))
  131. {
  132. LogManager.getLogManager().readConfiguration(is);
  133. }
  134.  
  135. StringUtil.printSection("aCis");
  136.  
  137. // Initialize config
  138. Config.loadGameServer();
  139.  
  140. // Factories
  141. L2DatabaseFactory.getInstance();
  142. ThreadPool.init();
  143.  
  144. StringUtil.printSection("IdFactory");
  145. IdFactory.getInstance();
  146.  
  147. StringUtil.printSection("World");
  148. World.getInstance();
  149. MapRegionData.getInstance();
  150. AnnouncementData.getInstance();
  151. ServerMemoTable.getInstance();
  152.  
  153. StringUtil.printSection("Skills");
  154. SkillTable.getInstance();
  155. SkillTreeData.getInstance();
  156.  
  157. StringUtil.printSection("Items");
  158. ItemData.getInstance();
  159. SummonItemData.getInstance();
  160. HennaData.getInstance();
  161. BuyListManager.getInstance();
  162. MultisellData.getInstance();
  163. RecipeData.getInstance();
  164. ArmorSetData.getInstance();
  165. FishData.getInstance();
  166. SpellbookData.getInstance();
  167. SoulCrystalData.getInstance();
  168. AugmentationData.getInstance();
  169. CursedWeaponManager.getInstance();
  170.  
  171. StringUtil.printSection("Admins");
  172. AdminData.getInstance();
  173. BookmarkTable.getInstance();
  174. MovieMakerManager.getInstance();
  175. PetitionManager.getInstance();
  176.  
  177. StringUtil.printSection("Characters");
  178. PlayerData.getInstance();
  179. PlayerInfoTable.getInstance();
  180. PlayerLevelData.getInstance();
  181. NewbieBuffData.getInstance();
  182. TeleportLocationData.getInstance();
  183. HtmCache.getInstance();
  184. PartyMatchRoomManager.getInstance();
  185. RaidPointManager.getInstance();
  186.  
  187. StringUtil.printSection("Community server");
  188. if (Config.ENABLE_COMMUNITY_BOARD) // Forums has to be loaded before clan data
  189. ForumsBBSManager.getInstance().initRoot();
  190. else
  191. LOGGER.info("Community server is disabled.");
  192.  
  193. StringUtil.printSection("Clans");
  194. CrestCache.getInstance();
  195. ClanTable.getInstance();
  196.  
  197. StringUtil.printSection("Geodata & Pathfinding");
  198. GeoEngine.getInstance();
  199.  
  200. StringUtil.printSection("Zones");
  201. ZoneManager.getInstance();
  202.  
  203. StringUtil.printSection("Castles & Clan Halls");
  204. CastleManager.getInstance();
  205. ClanHallManager.getInstance();
  206.  
  207. StringUtil.printSection("Task Managers");
  208. AttackStanceTaskManager.getInstance();
  209. DecayTaskManager.getInstance();
  210. GameTimeTaskManager.getInstance();
  211. ItemsOnGroundTaskManager.getInstance();
  212. PvpFlagTaskManager.getInstance();
  213. RandomAnimationTaskManager.getInstance();
  214. ShadowItemTaskManager.getInstance();
  215. WaterTaskManager.getInstance();
  216.  
  217. StringUtil.printSection("Auto Spawns");
  218. AutoSpawnTable.getInstance();
  219.  
  220. StringUtil.printSection("Seven Signs");
  221. SevenSignsManager.getInstance().spawnSevenSignsNPC();
  222. FestivalOfDarknessManager.getInstance();
  223.  
  224. StringUtil.printSection("Manor Manager");
  225. CastleManorManager.getInstance();
  226.  
  227. StringUtil.printSection("NPCs");
  228. BufferManager.getInstance();
  229. HerbDropData.getInstance();
  230. NpcData.getInstance();
  231. WalkerRouteData.getInstance();
  232. DoorData.getInstance().spawn();
  233. StaticObjectData.getInstance();
  234. SpawnTable.getInstance();
  235. RaidBossManager.getInstance();
  236. GrandBossManager.getInstance();
  237. DayNightManager.getInstance().notifyChangeMode();
  238. DimensionalRiftManager.getInstance();
  239.  
  240. StringUtil.printSection("Olympiads & Heroes");
  241. OlympiadGameManager.getInstance();
  242. Olympiad.getInstance();
  243. HeroManager.getInstance();
  244.  
  245. StringUtil.printSection("Four Sepulchers");
  246. FourSepulchersManager.getInstance();
  247.  
  248. StringUtil.printSection("Quests & Scripts");
  249. ScriptData.getInstance();
  250.  
  251. if (Config.ALLOW_BOAT)
  252. {
  253. BoatManager.getInstance();
  254. BoatGiranTalking.load();
  255. BoatGludinRune.load();
  256. BoatInnadrilTour.load();
  257. BoatRunePrimeval.load();
  258. BoatTalkingGludin.load();
  259. BufferTable.getInstance();
  260. HerbDropTable.getInstance();
  261. NpcTable.getInstance();
  262. FakePcsTable.getInstance();
  263. NpcWalkerRoutesTable.getInstance();
  264. DoorTable.getInstance();
  265. StaticObjectData.load();
  266. }
  267.  
  268.  
  269. StringUtil.printSection("Events");
  270. DerbyTrackManager.getInstance();
  271. LotteryManager.getInstance();
  272.  
  273. if (Config.ALLOW_WEDDING)
  274. CoupleManager.getInstance();
  275.  
  276. if (Config.ALT_FISH_CHAMPIONSHIP_ENABLED)
  277. FishingChampionshipManager.getInstance();
  278.  
  279. StringUtil.printSection("Handlers");
  280. LOGGER.info("Loaded {} admin command handlers.", AdminCommandHandler.getInstance().size());
  281. LOGGER.info("Loaded {} chat handlers.", ChatHandler.getInstance().size());
  282. LOGGER.info("Loaded {} item handlers.", ItemHandler.getInstance().size());
  283. LOGGER.info("Loaded {} skill handlers.", SkillHandler.getInstance().size());
  284. LOGGER.info("Loaded {} user command handlers.", UserCommandHandler.getInstance().size());
  285.  
  286. StringUtil.printSection("System");
  287. Runtime.getRuntime().addShutdownHook(Shutdown.getInstance());
  288. ForumsBBSManager.getInstance();
  289.  
  290. if (Config.DEADLOCK_DETECTOR)
  291. {
  292. LOGGER.info("Deadlock detector is enabled. Timer: {}s.", Config.DEADLOCK_CHECK_INTERVAL);
  293.  
  294. final DeadLockDetector deadDetectThread = new DeadLockDetector();
  295. deadDetectThread.setDaemon(true);
  296. deadDetectThread.start();
  297. }
  298. else
  299. LOGGER.info("Deadlock detector is disabled.");
  300.  
  301. System.gc();
  302.  
  303. LOGGER.info("Gameserver has started, used memory: {} / {} Mo.", SysUtil.getUsedMemory(), SysUtil.getMaxMemory());
  304. LOGGER.info("Maximum allowed players: {}.", Config.MAXIMUM_ONLINE_USERS);
  305.  
  306. StringUtil.printSection("Login");
  307. LoginServerThread.getInstance().start();
  308.  
  309. final SelectorConfig sc = new SelectorConfig();
  310. sc.MAX_READ_PER_PASS = Config.MMO_MAX_READ_PER_PASS;
  311. sc.MAX_SEND_PER_PASS = Config.MMO_MAX_SEND_PER_PASS;
  312. sc.SLEEP_TIME = Config.MMO_SELECTOR_SLEEP_TIME;
  313. sc.HELPER_BUFFER_COUNT = Config.MMO_HELPER_BUFFER_COUNT;
  314.  
  315. final GamePacketHandler handler = new GamePacketHandler();
  316. _selectorThread = new SelectorThread<>(sc, handler, handler, handler, new IPv4Filter());
  317.  
  318. InetAddress bindAddress = null;
  319. if (!Config.GAMESERVER_HOSTNAME.equals("*"))
  320. {
  321. try
  322. {
  323. bindAddress = InetAddress.getByName(Config.GAMESERVER_HOSTNAME);
  324. }
  325. catch (Exception e)
  326. {
  327. LOGGER.error("The GameServer bind address is invalid, using all available IPs.", e);
  328. }
  329. }
  330.  
  331. try
  332. {
  333. _selectorThread.openServerSocket(bindAddress, Config.PORT_GAME);
  334. }
  335. catch (Exception e)
  336. {
  337. LOGGER.error("Failed to open server socket.", e);
  338. System.exit(1);
  339. }
  340. _selectorThread.start();
  341. }
  342.  
  343. public static GameServer getInstance()
  344. {
  345. return _gameServer;
  346. }
  347.  
  348. public SelectorThread<GameClient> getSelectorThread()
  349. {
  350. return _selectorThread;
  351. }
  352. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement