/** * This: * 1. Announces that the VIP event registration period has ended. * 2. Announces that players will be teleported to starting locations. * 3. Teleports the event participants. * 4. Calls for randomly selecting the VIP. * 5. Calls for user data (name colors). * 6. Announces that event participants have been teleported. * 7. Announces the start of the VIP event. * 8. Calls for spawning the Finish NPC. * 9. Announces that VIP event has started, and the goals of the event. * 10. Calls for forcing the players to sit down. */ public static void startEvent() { Announcements.getInstance().announceToAll("Registration for the VIP event involving " + _teamName + " has ended."); Announcements.getInstance().announceToAll("Players will be teleported to their locations in 20 seconds."); ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() { public void run() { teleportPlayers(); chooseVIP(); setUserData(); Announcements.getInstance().announceToAll("Players have been teleported for the VIP event."); Announcements.getInstance().announceToAll("VIP event will start in 20 seconds."); spawnEndNPC(); ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() { public void run() { Announcements.getInstance().announceToAll("VIP event has started. " + _teamName + "'s VIP must get to the starter city and talk with " + getNPCName(_endNPC, null) + ". The opposing team must kill the VIP. All players except the VIP will respawn at their current location if killed."); Announcements.getInstance().announceToAll("VIP event will end if the " + _teamName + " team makes it to their town and finds the NPC or when " + Config.VIP_EVENT_DURATION + " mins have elapsed or when the VIP is killed by the opposing team."); VIP.sit(); ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() { public void run() { endEventTime(); } }, _time); } }, 20000); } }, 20000); }