2013-08-27 17:14:08 +02:00
package mineplex.hub.server ;
import java.io.BufferedReader ;
import java.io.File ;
import java.io.FileInputStream ;
import java.io.IOException ;
import java.io.InputStreamReader ;
2013-09-27 21:40:09 +02:00
import java.util.ArrayList ;
2013-09-11 22:53:24 +02:00
import java.util.Collection ;
2013-09-27 21:40:09 +02:00
import java.util.Collections ;
2013-09-11 22:53:24 +02:00
import java.util.HashSet ;
2013-09-18 00:50:23 +02:00
import java.util.List ;
2013-08-27 17:14:08 +02:00
import java.util.Set ;
import org.bukkit.ChatColor ;
2013-09-14 00:25:01 +02:00
import org.bukkit.Material ;
2013-08-27 17:14:08 +02:00
import org.bukkit.entity.Player ;
import org.bukkit.event.EventHandler ;
2013-09-14 00:25:01 +02:00
import org.bukkit.event.EventPriority ;
2013-09-27 21:40:09 +02:00
import org.bukkit.event.entity.EntityPortalEnterEvent ;
import org.bukkit.event.entity.EntityPortalEvent ;
2013-09-14 00:25:01 +02:00
import org.bukkit.event.player.PlayerInteractEvent ;
import org.bukkit.event.player.PlayerJoinEvent ;
2013-09-27 21:40:09 +02:00
import org.bukkit.event.player.PlayerMoveEvent ;
import org.bukkit.event.player.PlayerPortalEvent ;
2013-08-27 17:14:08 +02:00
import org.bukkit.plugin.java.JavaPlugin ;
2013-09-27 21:40:09 +02:00
import org.bukkit.util.Vector ;
2013-08-27 17:14:08 +02:00
import mineplex.core.MiniPlugin ;
import mineplex.core.account.CoreClientManager ;
import mineplex.core.common.Rank ;
import mineplex.core.common.util.C ;
2013-09-18 00:50:23 +02:00
import mineplex.core.common.util.Callback ;
2013-08-27 17:14:08 +02:00
import mineplex.core.common.util.F ;
import mineplex.core.common.util.NautHashMap ;
2013-09-27 21:40:09 +02:00
import mineplex.core.common.util.UtilAction ;
import mineplex.core.common.util.UtilAlg ;
2013-08-27 17:14:08 +02:00
import mineplex.core.common.util.UtilPlayer ;
import mineplex.core.common.util.UtilTime ;
import mineplex.core.common.util.UtilTime.TimeUnit ;
import mineplex.core.donation.DonationManager ;
2013-09-14 00:25:01 +02:00
import mineplex.core.itemstack.ItemStackFactory ;
2013-08-27 17:14:08 +02:00
import mineplex.core.portal.Portal ;
2013-09-27 21:40:09 +02:00
import mineplex.core.recharge.Recharge ;
2013-09-18 00:50:23 +02:00
import mineplex.core.status.ServerStatusData ;
import mineplex.core.status.ServerStatusManager ;
2013-08-27 17:14:08 +02:00
import mineplex.core.updater.UpdateType ;
import mineplex.core.updater.event.UpdateEvent ;
2013-09-27 21:40:09 +02:00
import mineplex.hub.HubManager ;
import mineplex.hub.modules.StackerManager ;
2013-09-09 10:28:35 +02:00
import mineplex.hub.party.Party ;
import mineplex.hub.party.PartyManager ;
2013-08-27 17:14:08 +02:00
import mineplex.hub.server.command.ServerNpcCommand ;
2013-09-14 00:25:01 +02:00
import mineplex.hub.server.ui.ServerGameMenu ;
2013-08-27 17:14:08 +02:00
import mineplex.hub.server.ui.ServerNpcShop ;
2013-09-19 07:11:49 +02:00
public class ServerManager extends MiniPlugin
2013-08-27 17:14:08 +02:00
{
private CoreClientManager _clientManager ;
private DonationManager _donationManager ;
private Portal _portal ;
2013-09-09 10:28:35 +02:00
private PartyManager _partyManager ;
2013-09-18 00:50:23 +02:00
private ServerStatusManager _statusManager ;
2013-09-27 21:40:09 +02:00
private HubManager _hubManager ;
private StackerManager _stackerManager ;
2013-08-27 17:14:08 +02:00
2013-09-11 22:53:24 +02:00
private NautHashMap < String , HashSet < ServerInfo > > _serverNpcMap = new NautHashMap < String , HashSet < ServerInfo > > ( ) ;
2013-09-27 21:40:09 +02:00
private NautHashMap < String , String > _serverNpcTag = new NautHashMap < String , String > ( ) ;
2013-08-27 17:14:08 +02:00
private NautHashMap < String , ServerNpcShop > _serverNpcShopMap = new NautHashMap < String , ServerNpcShop > ( ) ;
private NautHashMap < String , ServerInfo > _serverInfoMap = new NautHashMap < String , ServerInfo > ( ) ;
private NautHashMap < String , Long > _serverUpdate = new NautHashMap < String , Long > ( ) ;
2013-09-27 21:40:09 +02:00
private NautHashMap < Vector , String > _serverPortalLocations = new NautHashMap < Vector , String > ( ) ;
2013-08-27 17:14:08 +02:00
2013-09-14 00:25:01 +02:00
private ServerNpcShop _quickShop ;
2013-09-18 00:50:23 +02:00
private boolean _alternateUpdateFire = false ;
private boolean _retrieving = false ;
2013-08-27 17:14:08 +02:00
2013-09-27 21:40:09 +02:00
public ServerManager ( JavaPlugin plugin , CoreClientManager clientManager , DonationManager donationManager , Portal portal , PartyManager partyManager , ServerStatusManager statusManager , HubManager hubManager , StackerManager stackerManager )
2013-08-27 17:14:08 +02:00
{
super ( " Server Manager " , plugin ) ;
_clientManager = clientManager ;
_donationManager = donationManager ;
_portal = portal ;
2013-09-09 10:28:35 +02:00
_partyManager = partyManager ;
2013-09-18 00:50:23 +02:00
_statusManager = statusManager ;
2013-09-27 21:40:09 +02:00
_hubManager = hubManager ;
_stackerManager = stackerManager ;
2013-08-27 17:14:08 +02:00
plugin . getServer ( ) . getMessenger ( ) . registerOutgoingPluginChannel ( plugin , " BungeeCord " ) ;
LoadServers ( ) ;
2013-09-11 22:53:24 +02:00
new ServerManagerUpdater ( this ) ;
2013-09-19 07:11:49 +02:00
_quickShop = new ServerNpcShop ( this , clientManager , donationManager , " Quick Menu " ) ;
2013-08-27 17:14:08 +02:00
}
public void AddCommands ( )
{
AddCommand ( new ServerNpcCommand ( this ) ) ;
}
2013-09-14 00:25:01 +02:00
@EventHandler ( priority = EventPriority . LOW )
2013-09-27 21:40:09 +02:00
public void playerPortalEvent ( PlayerPortalEvent event )
2013-09-14 00:25:01 +02:00
{
2013-09-27 21:40:09 +02:00
event . setCancelled ( true ) ;
2013-09-14 00:25:01 +02:00
}
2013-09-27 21:40:09 +02:00
@EventHandler ( priority = EventPriority . LOW )
public void entityPortalEvent ( EntityPortalEvent event )
2013-09-14 00:25:01 +02:00
{
2013-09-27 21:40:09 +02:00
event . setCancelled ( true ) ;
2013-09-14 00:25:01 +02:00
}
2013-09-27 21:40:09 +02:00
@EventHandler ( priority = EventPriority . LOW )
public void playerCheckPortalEvent ( EntityPortalEnterEvent event )
2013-08-27 17:14:08 +02:00
{
2013-09-27 21:40:09 +02:00
if ( ! ( event . getEntity ( ) instanceof Player ) )
{
UtilAction . velocity ( event . getEntity ( ) , UtilAlg . getTrajectory ( event . getEntity ( ) . getLocation ( ) , _hubManager . GetSpawn ( ) ) , 1 , true , 0 . 8 , 0 , 1 , true ) ;
return ;
}
Player player = ( Player ) event . getEntity ( ) ;
2013-08-27 17:14:08 +02:00
2013-09-27 21:40:09 +02:00
if ( ! _stackerManager . CanPortal ( player ) )
2013-08-27 17:14:08 +02:00
{
2013-09-27 21:40:09 +02:00
UtilAction . velocity ( player , UtilAlg . getTrajectory ( player . getLocation ( ) , _hubManager . GetSpawn ( ) ) , 1 , true , 0 . 8 , 0 , 1 , true ) ;
return ;
2013-08-27 17:14:08 +02:00
}
2013-09-27 21:40:09 +02:00
if ( ! Recharge . Instance . use ( player , " Portal Server " , 1000 , false ) )
return ;
2013-09-11 22:53:24 +02:00
2013-09-27 21:40:09 +02:00
String serverName = _serverPortalLocations . get ( player . getLocation ( ) . getBlock ( ) . getLocation ( ) . toVector ( ) ) ;
if ( serverName ! = null )
{
List < ServerInfo > serverList = new ArrayList < ServerInfo > ( GetServerList ( serverName ) ) ;
int slots = 1 ;
if ( serverList . size ( ) > 0 )
{
slots = GetRequiredSlots ( player , serverList . get ( 0 ) . ServerType ) ;
}
try
{
Collections . sort ( serverList , new ServerSorter ( slots ) ) ;
for ( ServerInfo serverInfo : serverList )
{
if ( ( serverInfo . MOTD . contains ( " Starting " ) | | serverInfo . MOTD . contains ( " Recruiting " ) | | serverInfo . MOTD . contains ( " Waiting " ) | | serverInfo . MOTD . contains ( " Cup " ) ) & & ( serverInfo . MaxPlayers - serverInfo . CurrentPlayers ) > = slots )
{
SelectServer ( player , serverInfo ) ;
return ;
}
}
}
catch ( Exception exception )
{
exception . printStackTrace ( ) ;
for ( ServerInfo serverInfo : serverList )
{
System . out . println ( F . main ( " ServerManager " , ChatColor . YELLOW + serverInfo . Name + " : " + serverInfo . MOTD + " " + serverInfo . CurrentPlayers + " / " + serverInfo . MaxPlayers ) ) ;
}
}
player . sendMessage ( F . main ( " Server Portal " , " There are currently no joinable servers! " ) ) ;
}
}
@EventHandler ( priority = EventPriority . LOW )
public void playerJoin ( PlayerJoinEvent event )
{
event . getPlayer ( ) . getInventory ( ) . addItem ( ItemStackFactory . Instance . CreateStack ( Material . COMPASS . getId ( ) , ( byte ) 0 , 1 , ChatColor . GREEN + " Game Menu " ) ) ;
}
@EventHandler ( priority = EventPriority . LOWEST )
public void playerInteract ( PlayerInteractEvent event )
{
if ( event . getItem ( ) ! = null & & event . getItem ( ) . getType ( ) = = Material . COMPASS )
{
_quickShop . OpenPageForPlayer ( event . getPlayer ( ) , new ServerGameMenu ( this , _quickShop , _clientManager , _donationManager , " " + ChatColor . UNDERLINE + " Quick Game Menu " , event . getPlayer ( ) ) ) ;
}
2013-08-27 17:14:08 +02:00
}
public void RemoveServer ( String serverName )
{
for ( String key : _serverNpcMap . keySet ( ) )
{
_serverNpcMap . get ( key ) . remove ( serverName ) ;
}
_serverInfoMap . remove ( serverName ) ;
}
public void AddServerNpc ( String serverNpcName )
{
2013-09-11 22:53:24 +02:00
_serverNpcMap . put ( serverNpcName , new HashSet < ServerInfo > ( ) ) ;
2013-08-27 17:14:08 +02:00
_serverNpcShopMap . put ( serverNpcName , new ServerNpcShop ( this , _clientManager , _donationManager , serverNpcName ) ) ;
}
public void RemoveServerNpc ( String serverNpcName )
{
2013-09-11 22:53:24 +02:00
Set < ServerInfo > mappedServers = _serverNpcMap . remove ( serverNpcName ) ;
2013-08-27 17:14:08 +02:00
_serverNpcShopMap . remove ( serverNpcName ) ;
if ( mappedServers ! = null )
{
for ( ServerInfo mappedServer : mappedServers )
{
boolean isMappedElseWhere = false ;
for ( String key : _serverNpcMap . keySet ( ) )
{
for ( ServerInfo value : _serverNpcMap . get ( key ) )
{
if ( value . Name . equalsIgnoreCase ( mappedServer . Name ) )
{
isMappedElseWhere = true ;
break ;
}
}
if ( isMappedElseWhere )
break ;
}
if ( ! isMappedElseWhere )
_serverInfoMap . remove ( mappedServer . Name ) ;
}
}
}
2013-09-11 22:53:24 +02:00
public Collection < ServerInfo > GetServerList ( String serverNpcName )
2013-08-27 17:14:08 +02:00
{
return _serverNpcMap . get ( serverNpcName ) ;
}
public Set < String > GetAllServers ( )
{
return _serverInfoMap . keySet ( ) ;
}
public ServerInfo GetServerInfo ( String serverName )
{
return _serverInfoMap . get ( serverName ) ;
}
public boolean HasServerNpc ( String serverNpcName )
{
return _serverNpcMap . containsKey ( serverNpcName ) ;
}
@EventHandler
2013-09-14 00:25:01 +02:00
public void updatePages ( UpdateEvent event )
2013-08-27 17:14:08 +02:00
{
2013-09-14 00:25:01 +02:00
if ( event . getType ( ) ! = UpdateType . FAST )
2013-08-27 17:14:08 +02:00
return ;
2013-09-19 07:11:49 +02:00
_quickShop . UpdatePages ( ) ;
2013-08-27 17:14:08 +02:00
2013-09-14 00:25:01 +02:00
for ( ServerNpcShop shop : _serverNpcShopMap . values ( ) )
2013-08-27 17:14:08 +02:00
{
2013-09-14 00:25:01 +02:00
shop . UpdatePages ( ) ;
2013-08-27 17:14:08 +02:00
}
2013-09-14 00:25:01 +02:00
}
@EventHandler
public void updateServers ( UpdateEvent event )
{
2013-09-18 00:50:23 +02:00
if ( event . getType ( ) ! = UpdateType . SEC | | _retrieving )
2013-09-14 00:25:01 +02:00
return ;
2013-08-27 17:14:08 +02:00
2013-09-18 00:50:23 +02:00
_alternateUpdateFire = ! _alternateUpdateFire ;
if ( ! _alternateUpdateFire )
return ;
_retrieving = true ;
_statusManager . retrieveServerStatuses ( new Callback < List < ServerStatusData > > ( )
2013-08-27 17:14:08 +02:00
{
2013-09-18 00:50:23 +02:00
public void run ( List < ServerStatusData > serverStatusList )
{
for ( ServerStatusData serverStatus : serverStatusList )
2013-08-27 17:14:08 +02:00
{
2013-09-27 21:40:09 +02:00
if ( ! _serverInfoMap . containsKey ( serverStatus . Name ) )
{
ServerInfo newServerInfo = new ServerInfo ( ) ;
newServerInfo . Name = serverStatus . Name ;
_serverInfoMap . put ( serverStatus . Name , newServerInfo ) ;
2013-09-18 00:50:23 +02:00
}
2013-09-27 21:40:09 +02:00
String [ ] args = serverStatus . Motd . split ( " \\ | " ) ;
String tag = ( serverStatus . Name ! = null & & serverStatus . Name . contains ( " - " ) ) ? serverStatus . Name . split ( " - " ) [ 0 ] : " N/A " ;
ServerInfo serverInfo = _serverInfoMap . get ( serverStatus . Name ) ;
serverInfo . MOTD = args . length > 0 ? args [ 0 ] : serverStatus . Motd ;
serverInfo . CurrentPlayers = serverStatus . Players ;
serverInfo . MaxPlayers = serverStatus . MaxPlayers ;
if ( args . length > 1 )
serverInfo . ServerType = args [ 1 ] ;
if ( args . length > 2 )
serverInfo . Game = args [ 2 ] ;
if ( args . length > 3 )
serverInfo . Map = args [ 3 ] ;
_serverUpdate . put ( serverStatus . Name , System . currentTimeMillis ( ) ) ;
2013-08-27 17:14:08 +02:00
2013-09-27 21:40:09 +02:00
if ( _serverNpcTag . containsKey ( tag ) )
2013-09-18 00:50:23 +02:00
{
2013-09-27 21:40:09 +02:00
_serverNpcMap . get ( _serverNpcTag . get ( tag ) ) . add ( serverInfo ) ;
}
}
for ( String name : _serverUpdate . keySet ( ) )
{
if ( _serverUpdate . get ( name ) ! = - 1L & & System . currentTimeMillis ( ) - _serverUpdate . get ( name ) > 5000 )
{
ServerInfo serverInfo = _serverInfoMap . get ( name ) ;
serverInfo . MOTD = ChatColor . DARK_RED + " OFFLINE " ;
serverInfo . CurrentPlayers = 0 ;
serverInfo . MaxPlayers = 0 ;
_serverUpdate . put ( name , - 1L ) ;
2013-09-18 00:50:23 +02:00
}
2013-08-27 17:14:08 +02:00
}
2013-09-18 00:50:23 +02:00
// Reset
_retrieving = false ;
2013-08-27 17:14:08 +02:00
}
2013-09-18 00:50:23 +02:00
} ) ;
2013-08-27 17:14:08 +02:00
}
public void Help ( Player caller , String message )
{
UtilPlayer . message ( caller , F . main ( _moduleName , " Commands List: " ) ) ;
UtilPlayer . message ( caller , F . help ( " /servernpc create <name> " , " <name> is name of npc. " , Rank . OWNER ) ) ;
UtilPlayer . message ( caller , F . help ( " /servernpc delete <name> " , " <name> is name of npc. " , Rank . OWNER ) ) ;
UtilPlayer . message ( caller , F . help ( " /servernpc addserver <servernpc> | <name> " , " Adds server. " , Rank . OWNER ) ) ;
UtilPlayer . message ( caller , F . help ( " /servernpc removeserver <name> " , " Removes server. " , Rank . OWNER ) ) ;
UtilPlayer . message ( caller , F . help ( " /servernpc listnpcs " , " Lists all server npcs. " , Rank . OWNER ) ) ;
UtilPlayer . message ( caller , F . help ( " /servernpc listservers <servernpc> " , " Lists all servers. " , Rank . OWNER ) ) ;
UtilPlayer . message ( caller , F . help ( " /servernpc listoffline " , " Shows all servers offline. " , Rank . OWNER ) ) ;
if ( message ! = null )
UtilPlayer . message ( caller , F . main ( _moduleName , ChatColor . RED + message ) ) ;
}
public void Help ( Player caller )
{
Help ( caller , null ) ;
}
2013-09-09 10:28:35 +02:00
public PartyManager getPartyManager ( )
2013-08-27 17:14:08 +02:00
{
2013-09-09 10:28:35 +02:00
return _partyManager ;
}
public void SelectServer ( org . bukkit . entity . Player player , ServerInfo serverInfo )
{
Party party = _partyManager . GetParty ( player ) ;
2013-08-27 17:14:08 +02:00
2013-09-09 10:28:35 +02:00
if ( party ! = null )
{
if ( player . getName ( ) . equals ( party . GetLeader ( ) ) )
{
for ( String name : party . GetPlayers ( ) )
{
Player partyPlayer = UtilPlayer . searchExact ( name ) ;
if ( partyPlayer = = null )
continue ;
if ( _clientManager . Get ( partyPlayer ) . GetRank ( ) . Has ( Rank . ULTRA ) | | _donationManager . Get ( partyPlayer . getName ( ) ) . OwnsUnknownPackage ( serverInfo . ServerType + " ULTRA " ) )
continue ;
partyPlayer . leaveVehicle ( ) ;
partyPlayer . eject ( ) ;
_portal . SendPlayerToServer ( partyPlayer , serverInfo . Name ) ;
}
for ( String name : party . GetPlayers ( ) )
{
Player partyPlayer = UtilPlayer . searchExact ( name ) ;
if ( partyPlayer = = null )
continue ;
if ( _clientManager . Get ( partyPlayer ) . GetRank ( ) . Has ( Rank . ULTRA ) | | _donationManager . Get ( partyPlayer . getName ( ) ) . OwnsUnknownPackage ( serverInfo . ServerType + " ULTRA " ) )
{
partyPlayer . leaveVehicle ( ) ;
partyPlayer . eject ( ) ;
_portal . SendPlayerToServer ( partyPlayer , serverInfo . Name ) ;
}
}
}
}
else
{
player . leaveVehicle ( ) ;
player . eject ( ) ;
_portal . SendPlayerToServer ( player , serverInfo . Name ) ;
}
2013-08-27 17:14:08 +02:00
}
public void ListServerNpcs ( Player caller )
{
UtilPlayer . message ( caller , F . main ( GetName ( ) , " Listing Server Npcs: " ) ) ;
for ( String serverNpc : _serverNpcMap . keySet ( ) )
{
UtilPlayer . message ( caller , F . main ( GetName ( ) , C . cYellow + serverNpc ) ) ;
}
}
public void ListServers ( Player caller , String serverNpcName )
{
UtilPlayer . message ( caller , F . main ( GetName ( ) , " Listing Servers for ' " + serverNpcName + " ': " ) ) ;
for ( ServerInfo serverNpc : _serverNpcMap . get ( serverNpcName ) )
{
UtilPlayer . message ( caller , F . main ( GetName ( ) , C . cYellow + serverNpc . Name + C . cWhite + " - " + serverNpc . MOTD + " " + serverNpc . CurrentPlayers + " / " + serverNpc . MaxPlayers ) ) ;
}
}
public void ListOfflineServers ( Player caller )
{
UtilPlayer . message ( caller , F . main ( GetName ( ) , " Listing Offline Servers: " ) ) ;
for ( ServerInfo serverNpc : _serverInfoMap . values ( ) )
{
if ( serverNpc . MOTD . equalsIgnoreCase ( ChatColor . DARK_RED + " OFFLINE " ) )
{
UtilPlayer . message ( caller , F . main ( GetName ( ) , C . cYellow + serverNpc . Name + C . cWhite + " - " + F . time ( UtilTime . convertString ( System . currentTimeMillis ( ) - _serverUpdate . get ( serverNpc . Name ) , 0 , TimeUnit . FIT ) ) ) ) ;
}
}
}
public void LoadServers ( )
{
2013-09-11 22:53:24 +02:00
_serverInfoMap . clear ( ) ;
_serverUpdate . clear ( ) ;
for ( String npcName : _serverNpcMap . keySet ( ) )
{
_serverNpcMap . get ( npcName ) . clear ( ) ;
}
2013-09-27 21:40:09 +02:00
_serverNpcTag . clear ( ) ;
2013-08-27 17:14:08 +02:00
FileInputStream fstream = null ;
BufferedReader br = null ;
2013-09-11 22:53:24 +02:00
HashSet < String > npcNames = new HashSet < String > ( ) ;
2013-08-27 17:14:08 +02:00
try
{
File npcFile = new File ( " ServerManager.dat " ) ;
if ( npcFile . exists ( ) )
{
fstream = new FileInputStream ( npcFile ) ;
br = new BufferedReader ( new InputStreamReader ( fstream ) ) ;
String line = br . readLine ( ) ;
while ( line ! = null )
{
String serverNpcName = line . substring ( 0 , line . indexOf ( '|' ) ) . trim ( ) ;
2013-09-27 21:40:09 +02:00
String serverTag = line . substring ( line . indexOf ( '|' ) + 1 , line . indexOf ( '|' , line . indexOf ( '|' ) + 1 ) ) . trim ( ) ;
String [ ] locations = line . substring ( line . indexOf ( '|' , line . indexOf ( '|' ) + 1 ) + 1 ) . trim ( ) . split ( " , " ) ;
for ( String location : locations )
{
_serverPortalLocations . put ( ParseVector ( location ) , serverNpcName ) ;
}
2013-08-27 17:14:08 +02:00
if ( ! HasServerNpc ( serverNpcName ) )
{
AddServerNpc ( serverNpcName ) ;
}
2013-09-27 21:40:09 +02:00
_serverNpcTag . put ( serverTag , serverNpcName ) ;
2013-09-11 22:53:24 +02:00
npcNames . add ( serverNpcName ) ;
2013-08-27 17:14:08 +02:00
line = br . readLine ( ) ;
}
}
}
catch ( Exception e )
{
System . out . println ( " ServerManager - Error parsing servers file : " + e . getMessage ( ) ) ;
}
finally
{
if ( br ! = null )
{
try
{
br . close ( ) ;
}
catch ( IOException e )
{
e . printStackTrace ( ) ;
}
}
if ( fstream ! = null )
{
try
{
fstream . close ( ) ;
}
catch ( IOException e )
{
e . printStackTrace ( ) ;
}
}
}
2013-09-11 22:53:24 +02:00
for ( String npcName : npcNames )
{
if ( ! _serverNpcShopMap . containsKey ( npcName ) )
_serverNpcShopMap . remove ( npcName ) ;
if ( ! _serverNpcMap . containsKey ( npcName ) )
_serverNpcMap . remove ( npcName ) ;
}
2013-08-27 17:14:08 +02:00
}
2013-09-09 10:28:35 +02:00
public int GetRequiredSlots ( Player player , String serverType )
{
int slots = 0 ;
Party party = _partyManager . GetParty ( player ) ;
if ( party ! = null )
{
if ( player . getName ( ) . equals ( party . GetLeader ( ) ) )
{
for ( String name : party . GetPlayers ( ) )
{
Player partyPlayer = UtilPlayer . searchExact ( name ) ;
if ( partyPlayer = = null )
continue ;
if ( _clientManager . Get ( partyPlayer ) . GetRank ( ) . Has ( Rank . ULTRA ) | | _donationManager . Get ( partyPlayer . getName ( ) ) . OwnsUnknownPackage ( serverType + " ULTRA " ) )
continue ;
slots + + ;
}
}
}
else
{
if ( ! _clientManager . Get ( player ) . GetRank ( ) . Has ( Rank . ULTRA ) & & ! _donationManager . Get ( player . getName ( ) ) . OwnsUnknownPackage ( serverType + " ULTRA " ) )
slots + + ;
}
return slots ;
}
2013-09-19 07:11:49 +02:00
public ServerNpcShop getMixedArcadeShop ( )
{
2013-09-27 21:40:09 +02:00
return _serverNpcShopMap . get ( " Mixed Arcade " ) ;
2013-09-19 07:11:49 +02:00
}
public ServerNpcShop getSuperSmashMobsShop ( )
{
return _serverNpcShopMap . get ( " Super Smash Mobs " ) ;
}
public ServerNpcShop getDominateShop ( )
{
2013-09-27 21:40:09 +02:00
return _serverNpcShopMap . get ( " Dominate " ) ;
2013-09-19 07:11:49 +02:00
}
public ServerNpcShop getBridgesShop ( )
{
return _serverNpcShopMap . get ( " The Bridges " ) ;
}
public ServerNpcShop getMinekartShop ( )
{
2013-09-27 21:40:09 +02:00
return _serverNpcShopMap . get ( " Minekart " ) ;
}
private Vector ParseVector ( String vectorString )
{
Vector vector = new Vector ( ) ;
String [ ] parts = vectorString . trim ( ) . split ( " " ) ;
vector . setX ( Double . parseDouble ( parts [ 0 ] ) ) ;
vector . setY ( Double . parseDouble ( parts [ 1 ] ) ) ;
vector . setZ ( Double . parseDouble ( parts [ 2 ] ) ) ;
return vector ;
2013-09-19 07:11:49 +02:00
}
2013-08-27 17:14:08 +02:00
}