Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2018
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.51 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.IOException;
  6. import java.io.InputStream;
  7. import java.net.InetAddress;
  8. import java.net.UnknownHostException;
  9. import java.util.logging.Level;
  10. import java.util.logging.LogManager;
  11. import java.util.logging.Logger;
  12.  
  13. import net.sf.l2j.commons.concurrent.ThreadPool;
  14. import net.sf.l2j.commons.lang.StringUtil;
  15. import net.sf.l2j.commons.mmocore.SelectorConfig;
  16. import net.sf.l2j.commons.mmocore.SelectorThread;
  17. import net.sf.l2j.commons.util.SysUtil;
  18.  
  19. import net.sf.l2j.Config;
  20. import net.sf.l2j.L2DatabaseFactory;
  21. import net.sf.l2j.gameserver.cache.CrestCache;
  22. import net.sf.l2j.gameserver.cache.HtmCache;
  23. import net.sf.l2j.gameserver.communitybbs.Manager.ForumsBBSManager;
  24. import net.sf.l2j.gameserver.datatables.AccessLevels;
  25. import net.sf.l2j.gameserver.datatables.AdminCommandAccessRights;
  26. import net.sf.l2j.gameserver.datatables.AnnouncementTable;
  27. import net.sf.l2j.gameserver.datatables.ArmorSetsTable;
  28. import net.sf.l2j.gameserver.datatables.AugmentationData;
  29. import net.sf.l2j.gameserver.datatables.BookmarkTable;
  30. import net.sf.l2j.gameserver.datatables.BufferTable;
  31. import net.sf.l2j.gameserver.datatables.BuyListTable;
  32. import net.sf.l2j.gameserver.datatables.CharTemplateTable;
  33. import net.sf.l2j.gameserver.datatables.ClanTable;
  34. import net.sf.l2j.gameserver.datatables.DoorTable;
  35. import net.sf.l2j.gameserver.datatables.FishTable;
  36. import net.sf.l2j.gameserver.datatables.GmListTable;
  37. import net.sf.l2j.gameserver.datatables.HelperBuffTable;
  38. import net.sf.l2j.gameserver.datatables.HennaTable;
  39. import net.sf.l2j.gameserver.datatables.HerbDropTable;
  40. import net.sf.l2j.gameserver.datatables.ItemTable;
  41. import net.sf.l2j.gameserver.datatables.MapRegionTable;
  42. import net.sf.l2j.gameserver.datatables.MultisellData;
  43. import net.sf.l2j.gameserver.datatables.NpcTable;
  44. import net.sf.l2j.gameserver.datatables.NpcWalkerRoutesTable;
  45. import net.sf.l2j.gameserver.datatables.PlayerNameTable;
  46. import net.sf.l2j.gameserver.datatables.RecipeTable;
  47. import net.sf.l2j.gameserver.datatables.ServerMemo;
  48. import net.sf.l2j.gameserver.datatables.SkillTable;
  49. import net.sf.l2j.gameserver.datatables.SkillTreeTable;
  50. import net.sf.l2j.gameserver.datatables.SoulCrystalsTable;
  51. import net.sf.l2j.gameserver.datatables.SpawnTable;
  52. import net.sf.l2j.gameserver.datatables.SpellbookTable;
  53. import net.sf.l2j.gameserver.datatables.StaticObjects;
  54. import net.sf.l2j.gameserver.datatables.SummonItemsData;
  55. import net.sf.l2j.gameserver.datatables.TeleportLocationTable;
  56. import net.sf.l2j.gameserver.geoengine.GeoEngine;
  57. import net.sf.l2j.gameserver.handler.AdminCommandHandler;
  58. import net.sf.l2j.gameserver.handler.ChatHandler;
  59. import net.sf.l2j.gameserver.handler.ItemHandler;
  60. import net.sf.l2j.gameserver.handler.SkillHandler;
  61. import net.sf.l2j.gameserver.handler.UserCommandHandler;
  62. import net.sf.l2j.gameserver.idfactory.IdFactory;
  63. import net.sf.l2j.gameserver.instancemanager.AuctionManager;
  64. import net.sf.l2j.gameserver.instancemanager.AutoSpawnManager;
  65. import net.sf.l2j.gameserver.instancemanager.BoatManager;
  66. import net.sf.l2j.gameserver.instancemanager.CastleManager;
  67. import net.sf.l2j.gameserver.instancemanager.CastleManorManager;
  68. import net.sf.l2j.gameserver.instancemanager.ClanHallManager;
  69. import net.sf.l2j.gameserver.instancemanager.CoupleManager;
  70. import net.sf.l2j.gameserver.instancemanager.CursedWeaponsManager;
  71. import net.sf.l2j.gameserver.instancemanager.DayNightSpawnManager;
  72. import net.sf.l2j.gameserver.instancemanager.DimensionalRiftManager;
  73. import net.sf.l2j.gameserver.instancemanager.FishingChampionshipManager;
  74. import net.sf.l2j.gameserver.instancemanager.FourSepulchersManager;
  75. import net.sf.l2j.gameserver.instancemanager.GrandBossManager;
  76. import net.sf.l2j.gameserver.instancemanager.MovieMakerManager;
  77. import net.sf.l2j.gameserver.instancemanager.PetitionManager;
  78. import net.sf.l2j.gameserver.instancemanager.RaidBossPointsManager;
  79. import net.sf.l2j.gameserver.instancemanager.RaidBossSpawnManager;
  80. import net.sf.l2j.gameserver.instancemanager.SevenSigns;
  81. import net.sf.l2j.gameserver.instancemanager.SevenSignsFestival;
  82. import net.sf.l2j.gameserver.instancemanager.ZoneManager;
  83. import net.sf.l2j.gameserver.instancemanager.games.MonsterRace;
  84. import net.sf.l2j.gameserver.model.World;
  85. import net.sf.l2j.gameserver.model.entity.Hero;
  86. import net.sf.l2j.gameserver.model.olympiad.Olympiad;
  87. import net.sf.l2j.gameserver.model.olympiad.OlympiadGameManager;
  88. import net.sf.l2j.gameserver.model.partymatching.PartyMatchRoomList;
  89. import net.sf.l2j.gameserver.model.partymatching.PartyMatchWaitingList;
  90. import net.sf.l2j.gameserver.model.vehicles.BoatGiranTalking;
  91. import net.sf.l2j.gameserver.model.vehicles.BoatGludinRune;
  92. import net.sf.l2j.gameserver.model.vehicles.BoatInnadrilTour;
  93. import net.sf.l2j.gameserver.model.vehicles.BoatRunePrimeval;
  94. import net.sf.l2j.gameserver.model.vehicles.BoatTalkingGludin;
  95. import net.sf.l2j.gameserver.network.L2GameClient;
  96. import net.sf.l2j.gameserver.network.L2GamePacketHandler;
  97. import net.sf.l2j.gameserver.scripting.ScriptManager;
  98. import net.sf.l2j.gameserver.taskmanager.AttackStanceTaskManager;
  99. import net.sf.l2j.gameserver.taskmanager.DecayTaskManager;
  100. import net.sf.l2j.gameserver.taskmanager.GameTimeTaskManager;
  101. import net.sf.l2j.gameserver.taskmanager.ItemsOnGroundTaskManager;
  102. import net.sf.l2j.gameserver.taskmanager.MovementTaskManager;
  103. import net.sf.l2j.gameserver.taskmanager.PvpFlagTaskManager;
  104. import net.sf.l2j.gameserver.taskmanager.RandomAnimationTaskManager;
  105. import net.sf.l2j.gameserver.taskmanager.ShadowItemTaskManager;
  106. import net.sf.l2j.gameserver.taskmanager.WaterTaskManager;
  107. import net.sf.l2j.gameserver.xmlfactory.XMLDocumentFactory;
  108. import net.sf.l2j.util.DeadLockDetector;
  109. import net.sf.l2j.util.IPv4Filter;
  110.  
  111. import custom.OfflineTradersTable;
  112. import custom.SkillDurationTable;
  113. import custom.Util;
  114. import custom.AcisVote.VoteSystem;
  115. import custom.VoicedCommandHandler.VoicedCommandHandler;
  116. import custom.events.TriviaEventManager;
  117. import custom.events.dm.DMManager;
  118. import custom.events.tvt.TvTManager;
  119.  
  120. public class GameServer
  121. {
  122. private static final Logger _log = Logger.getLogger(GameServer.class.getName());
  123.  
  124. private final SelectorThread<L2GameClient> _selectorThread;
  125.  
  126. private static GameServer _gameServer;
  127.  
  128. public static void main(String[] args) throws Exception
  129. {
  130. _gameServer = new GameServer();
  131. }
  132.  
  133. public GameServer() throws Exception
  134. {
  135. // Create log folder
  136. new File("./log").mkdir();
  137. new File("./log/chat").mkdir();
  138. new File("./log/console").mkdir();
  139. new File("./log/error").mkdir();
  140. new File("./log/gmaudit").mkdir();
  141. new File("./log/item").mkdir();
  142. new File("./data/crests").mkdirs();
  143.  
  144. // Create input stream for log file -- or store file data into memory
  145. try (InputStream is = new FileInputStream(new File("config/logging.properties")))
  146. {
  147. LogManager.getLogManager().readConfiguration(is);
  148. }
  149.  
  150. StringUtil.printSection("aCis");
  151.  
  152. // Initialize config
  153. Config.loadGameServer();
  154.  
  155. // Factories
  156. XMLDocumentFactory.getInstance();
  157. L2DatabaseFactory.getInstance();
  158.  
  159. StringUtil.printSection("ThreadPool");
  160. ThreadPool.init();
  161.  
  162. StringUtil.printSection("IdFactory");
  163. IdFactory.getInstance();
  164.  
  165. StringUtil.printSection("World");
  166. World.getInstance();
  167. MapRegionTable.getInstance();
  168. AnnouncementTable.getInstance();
  169. ServerMemo.getInstance();
  170.  
  171. StringUtil.printSection("Skills");
  172. SkillTable.getInstance();
  173. SkillTreeTable.getInstance();
  174.  
  175. StringUtil.printSection("Items");
  176. ItemTable.getInstance();
  177. SummonItemsData.getInstance();
  178. BuyListTable.getInstance();
  179. MultisellData.getInstance();
  180. RecipeTable.getInstance();
  181. ArmorSetsTable.getInstance();
  182. FishTable.getInstance();
  183. SpellbookTable.getInstance();
  184. SoulCrystalsTable.load();
  185. AugmentationData.getInstance();
  186. CursedWeaponsManager.getInstance();
  187.  
  188. StringUtil.printSection("Admins");
  189. AccessLevels.getInstance();
  190. AdminCommandAccessRights.getInstance();
  191. BookmarkTable.getInstance();
  192. GmListTable.getInstance();
  193. MovieMakerManager.getInstance();
  194. PetitionManager.getInstance();
  195.  
  196. StringUtil.printSection("Characters");
  197. CharTemplateTable.getInstance();
  198. PlayerNameTable.getInstance();
  199. HennaTable.getInstance();
  200. HelperBuffTable.getInstance();
  201. TeleportLocationTable.getInstance();
  202. HtmCache.getInstance();
  203. PartyMatchWaitingList.getInstance();
  204. PartyMatchRoomList.getInstance();
  205. RaidBossPointsManager.getInstance();
  206.  
  207. StringUtil.printSection("Community server");
  208. if (Config.ENABLE_COMMUNITY_BOARD) // Forums has to be loaded before clan data
  209. ForumsBBSManager.getInstance().initRoot();
  210. else
  211. _log.config("Community server is disabled.");
  212.  
  213. StringUtil.printSection("Clans");
  214. CrestCache.getInstance();
  215. ClanTable.getInstance();
  216. AuctionManager.getInstance();
  217. ClanHallManager.getInstance();
  218.  
  219. StringUtil.printSection("Geodata & Pathfinding");
  220. GeoEngine.getInstance();
  221.  
  222. StringUtil.printSection("Zones");
  223. ZoneManager.getInstance();
  224.  
  225. StringUtil.printSection("Task Managers");
  226. AttackStanceTaskManager.getInstance();
  227. DecayTaskManager.getInstance();
  228. GameTimeTaskManager.getInstance();
  229. ItemsOnGroundTaskManager.getInstance();
  230. MovementTaskManager.getInstance();
  231. PvpFlagTaskManager.getInstance();
  232. RandomAnimationTaskManager.getInstance();
  233. ShadowItemTaskManager.getInstance();
  234. WaterTaskManager.getInstance();
  235.  
  236. StringUtil.printSection("Castles");
  237. CastleManager.getInstance();
  238.  
  239. StringUtil.printSection("Seven Signs");
  240. SevenSigns.getInstance().spawnSevenSignsNPC();
  241. SevenSignsFestival.getInstance();
  242.  
  243. StringUtil.printSection("Manor Manager");
  244. CastleManorManager.getInstance();
  245.  
  246. StringUtil.printSection("NPCs");
  247. BufferTable.getInstance();
  248. HerbDropTable.getInstance();
  249. NpcTable.getInstance();
  250. NpcWalkerRoutesTable.getInstance();
  251. DoorTable.getInstance().spawn();
  252. StaticObjects.load();
  253. SpawnTable.getInstance();
  254. RaidBossSpawnManager.getInstance();
  255. GrandBossManager.getInstance();
  256. DayNightSpawnManager.getInstance();
  257. DimensionalRiftManager.getInstance();
  258.  
  259. StringUtil.printSection("Olympiads & Heroes");
  260. OlympiadGameManager.getInstance();
  261. Olympiad.getInstance();
  262. Hero.getInstance();
  263.  
  264. StringUtil.printSection("Four Sepulchers");
  265. FourSepulchersManager.getInstance().init();
  266.  
  267. StringUtil.printSection("Quests & Scripts");
  268. ScriptManager.getInstance();
  269.  
  270. if (Config.VOTE_SYSTEM_ENABLED)
  271. {
  272. StringUtil.printSection("Vote System Settings");
  273. VoteSystem.getInstance();
  274. }
  275.  
  276. if (Config.VOTE_MANAGER_ENABLED)
  277.  
  278. if (Config.ALLOW_BOAT)
  279. {
  280. BoatManager.getInstance();
  281. BoatGiranTalking.load();
  282. BoatGludinRune.load();
  283. BoatInnadrilTour.load();
  284. BoatRunePrimeval.load();
  285. BoatTalkingGludin.load();
  286. }
  287.  
  288. StringUtil.printSection("Protection");
  289.  
  290. Util.printSection("Custom - Events");
  291. if(Config.TVT_EVENT_ENABLED)
  292. {
  293. TvTManager.getInstance();
  294. }
  295.  
  296. if(Config.DM_EVENT_ENABLED)
  297. {
  298. DMManager.getInstance();
  299. }
  300.  
  301. if(Config.TRIVIA_ENABLED)
  302. {
  303. TriviaEventManager.getInstance();
  304. }
  305. TriviaEventManager.getInstance();
  306. Util.printSection("Customs");
  307.  
  308. if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.RESTORE_OFFLINERS)
  309. OfflineTradersTable.getInstance().restoreOfflineTraders();
  310. SkillDurationTable.getInstance();
  311.  
  312. StringUtil.printSection("Events");
  313. MonsterRace.getInstance();
  314.  
  315. if (Config.ALLOW_WEDDING)
  316. CoupleManager.getInstance();
  317.  
  318. if (Config.ALT_FISH_CHAMPIONSHIP_ENABLED)
  319. FishingChampionshipManager.getInstance();
  320.  
  321. StringUtil.printSection("Handlers");
  322. _log.config("AutoSpawnHandler: Loaded " + AutoSpawnManager.getInstance().size() + " handlers.");
  323. _log.config("AdminCommandHandler: Loaded " + AdminCommandHandler.getInstance().size() + " handlers.");
  324. _log.config("ChatHandler: Loaded " + ChatHandler.getInstance().size() + " handlers.");
  325. _log.config("ItemHandler: Loaded " + ItemHandler.getInstance().size() + " handlers.");
  326. _log.config("SkillHandler: Loaded " + SkillHandler.getInstance().size() + " handlers.");
  327. _log.config("UserCommandHandler: Loaded " + UserCommandHandler.getInstance().size() + " handlers.");
  328. /*
  329. ErUtils.getInstance();
  330. */
  331. // RnP (Dejau cia voicecommand bbz kam jis reikalingas)
  332. _log.config("VoicedCommandHandler: Loaded " + VoicedCommandHandler.getInstance().size() + " handlers.");
  333.  
  334. StringUtil.printSection("System");
  335. Runtime.getRuntime().addShutdownHook(Shutdown.getInstance());
  336. ForumsBBSManager.getInstance();
  337. _log.config("IdFactory: Free ObjectIDs remaining: " + IdFactory.getInstance().size());
  338.  
  339.  
  340. if (Config.DEADLOCK_DETECTOR)
  341. {
  342. _log.info("Deadlock detector is enabled. Timer: " + Config.DEADLOCK_CHECK_INTERVAL + "s.");
  343.  
  344. final DeadLockDetector deadDetectThread = new DeadLockDetector();
  345. deadDetectThread.setDaemon(true);
  346. deadDetectThread.start();
  347. }
  348. else
  349. _log.info("Deadlock detector is disabled.");
  350.  
  351. System.gc();
  352.  
  353. _log.info("Gameserver have started, used memory: " + SysUtil.getUsedMemory() + " / " + SysUtil.getMaxMemory() + " Mo.");
  354. _log.info("Maximum allowed players: " + Config.MAXIMUM_ONLINE_USERS);
  355.  
  356. StringUtil.printSection("Login");
  357. LoginServerThread.getInstance().start();
  358.  
  359. final SelectorConfig sc = new SelectorConfig();
  360. sc.MAX_READ_PER_PASS = Config.MMO_MAX_READ_PER_PASS;
  361. sc.MAX_SEND_PER_PASS = Config.MMO_MAX_SEND_PER_PASS;
  362. sc.SLEEP_TIME = Config.MMO_SELECTOR_SLEEP_TIME;
  363. sc.HELPER_BUFFER_COUNT = Config.MMO_HELPER_BUFFER_COUNT;
  364.  
  365. final L2GamePacketHandler handler = new L2GamePacketHandler();
  366. _selectorThread = new SelectorThread<>(sc, handler, handler, handler, new IPv4Filter());
  367.  
  368. InetAddress bindAddress = null;
  369. if (!Config.GAMESERVER_HOSTNAME.equals("*"))
  370. {
  371. try
  372. {
  373. bindAddress = InetAddress.getByName(Config.GAMESERVER_HOSTNAME);
  374. }
  375. catch (UnknownHostException e1)
  376. {
  377. _log.log(Level.SEVERE, "WARNING: The GameServer bind address is invalid, using all available IPs. Reason: " + e1.getMessage(), e1);
  378. }
  379. }
  380.  
  381. try
  382. {
  383. _selectorThread.openServerSocket(bindAddress, Config.PORT_GAME);
  384. }
  385. catch (IOException e)
  386. {
  387. _log.log(Level.SEVERE, "FATAL: Failed to open server socket. Reason: " + e.getMessage(), e);
  388. System.exit(1);
  389. }
  390. _selectorThread.start();
  391. }
  392.  
  393. public static GameServer getInstance()
  394. {
  395. return _gameServer;
  396. }
  397.  
  398. public SelectorThread<L2GameClient> getSelectorThread()
  399. {
  400. return _selectorThread;
  401. }
  402. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement