public static World FindWorldOrPrintMatches(Player player, string worldName) { if (player == null) { throw new ArgumentNullException("player"); } if (worldName == null) { throw new ArgumentNullException("worldName"); } List <World> matches = new List <World>(FindWorlds(worldName)); SearchingForWorldEventArgs e = new SearchingForWorldEventArgs(player, worldName, matches, false); RaiseSearchingForWorldEvent(e); matches = e.Matches; if (matches.Count == 0) { player.NoWorldMessage(worldName); return(null); } else if (matches.Count > 1) { player.ManyMatchesMessage("world", matches.ToArray()); return(null); } else { return(matches[0]); } }
internal static void Join( Player player, Command cmd ) { string worldName = cmd.Next(); if( worldName == null ) { cdJoin.PrintUsage( player ); return; } World[] worlds = WorldManager.FindWorlds( worldName ); SearchingForWorldEventArgs e = new SearchingForWorldEventArgs( player, worldName, worlds.ToList(), true ); WorldManager.RaiseSearchingForWorldEvent( e ); worlds = e.Matches.ToArray(); if( worlds.Length > 1 ) { player.ManyMatchesMessage( "world", worlds ); } else if( worlds.Length == 1 ) { World world = worlds[0]; switch( world.AccessSecurity.CheckDetailed( player.Info ) ) { case SecurityCheckResult.Allowed: case SecurityCheckResult.WhiteListed: if( world.IsFull ) { player.Message( "Cannot join {0}&S: world is full.", world.GetClassyName() ); return; } player.StopSpectating(); if( !player.Session.JoinWorldNow( world, false, true ) ) { player.Message( "ERROR: Failed to join world. See log for details." ); } break; case SecurityCheckResult.BlackListed: player.Message( "Cannot join world {0}&S: you are blacklisted", world.GetClassyName(), world.AccessSecurity.MinRank.GetClassyName() ); break; case SecurityCheckResult.RankTooLow: player.Message( "Cannot join world {0}&S: must be {1}+", world.GetClassyName(), world.AccessSecurity.MinRank.GetClassyName() ); break; } } else { // no worlds found - see if player meant to type in "/join" and not "/tp" Player[] players = Server.FindPlayers( player, worldName ); if( players.Length == 1 ) { player.StopSpectating(); player.ParseMessage( "/tp " + players[0].Name, false ); } else { player.NoWorldMessage( worldName ); } } }
public static World FindWorldOrPrintMatches( Player player, string worldName ) { if( player == null ) throw new ArgumentNullException( "player" ); if( worldName == null ) throw new ArgumentNullException( "worldName" ); List<World> matches = new List<World>( FindWorlds( worldName ) ); SearchingForWorldEventArgs e = new SearchingForWorldEventArgs( player, worldName, matches, false ); RaiseSearchingForWorldEvent( e ); matches = e.Matches; if( matches.Count == 0 ) { player.NoWorldMessage( worldName ); return null; } else if( matches.Count > 1 ) { player.ManyMatchesMessage( "world", matches.ToArray() ); return null; } else { return matches[0]; } }