package server;
import clientside.SkillFactory;
import client.inventory.MapleInventoryIdentifier;
import database.DatabaseConnection;
import handling.MapleServerHandler;
import handling.cashshop.CashShopServer;
import handling.cashshop.handler.CashShopOperation;
import handling.channel.ChannelServer;
import handling.channel.MapleGuildRanking;
import handling.login.LoginInformationProvider;
import handling.login.LoginServer;
import handling.world.World;
import handling.world.family.MapleFamily;
import handling.world.guild.MapleGuild;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.concurrent.atomic.AtomicInteger;
import server.life.MapleLifeFactory;
import server.life.MapleMonsterInformationProvider;
import server.life.MobSkillFactory;
import server.life.PlayerNPC;
import server.maps.MapleMapFactory;
import server.quest.MapleQuest;
public class Start {
public static long startTime = System.currentTimeMillis();
public static final Start instance = new Start();
public static AtomicInteger CompletedLoadingThreads = new AtomicInteger(0);
public static String nexonip = "8.31.99.141";
public void run()
throws InterruptedException {
try {
PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE accounts SET loggedin = 0,SessionIP=''");
ps.executeUpdate();
ps.close();
} catch (SQLException ex) {
throw new RuntimeException("[EXCEPTION] Please check if the SQL server is active.");
}
World.init();
Timer.WorldTimer.getInstance().start();
Timer.EtcTimer.getInstance().start();
Timer.MapTimer.getInstance().start();
Timer.CloneTimer.getInstance().start();
Timer.EventTimer.getInstance().start();
Timer.BuffTimer.getInstance().start();
Timer.PingTimer.getInstance().start();
System.out.println("Loader 1...");
MapleGuildRanking.getInstance().load();
MapleGuild.loadAll();
System.out.println("Loader 2...");
MapleFamily.loadAll();
System.out.println("Loader 3...");
MapleLifeFactory.loadQuestCounts();
MapleQuest.initQuests();
System.out.println("Loader 4...");
MapleItemInformationProvider.getInstance().runEtc();
System.out.println("Loader 5...");
MapleMonsterInformationProvider.getInstance().load();
System.out.println("Loader 6...");
MapleItemInformationProvider.getInstance().runItems();
System.out.println("Loader 7...");
SkillFactory.load();
System.out.println("Loader 8...");
LoginInformationProvider.getInstance();
RandomRewards.load();
MapleCarnivalFactory.getInstance();
CharacterCardFactory.getInstance().initialize();
MobSkillFactory.getInstance();
SpeedRunner.loadSpeedRuns();
MTSStorage.load();
System.out.println("Loader 9...");
MapleInventoryIdentifier.getInstance();
MapleMapFactory.loadCustomLife();
System.out.println("Loader 10...");
CashItemFactory.getInstance().initialize();
CashShopOperation.runCashItems();
MapleServerHandler.initiate();
System.out.println("[Loading Login]");
LoginServer.run_startup_configurations();
System.out.println("[Login Initialized]");
System.out.println("[Loading Channel]");
ChannelServer.startChannel_Main();
System.out.println("[Channel Initialized]");
System.out.println("[Loading CS]");
CashShopServer.run_startup_configurations();
System.out.println("[CS Initialized]");
World.registerRespawn();
MapleMonsterInformationProvider.getInstance().addExtra();
PlayerNPC.loadAll();
LoginServer.setOn();
System.out.println("[Fully Initialized in " + (System.currentTimeMillis() - startTime) / 1000L + " seconds]");
}
public static void main(String[] args)
throws InterruptedException {
instance.run();
}
}