fCraft.WorldCommands.GenTaskCallback C# (CSharp) Method

GenTaskCallback() static private method

static private GenTaskCallback ( SchedulerTask task ) : void
task SchedulerTask
return void
        static void GenTaskCallback( SchedulerTask task ) {
            GenTaskParams args = (GenTaskParams)task.UserState;

            // Generate!
            Map map;
            try {
                map = args.GenState.Generate();

            } catch( Exception ex ) {
                // Report a generator crash
                Logger.LogAndReportCrash( "Generation error",
                                          args.GenState.GetType().AssemblyQualifiedName,
                                          ex,
                                          false );
                args.Player.Message( "&wAn error occurred while trying to generate the map: {0} {1}",
                                     ex.GetType().Name,
                                     ex.Message );
                return;
            }

            // Make sure generator returned a proper map, as expected.
            if( map == null ) {
                string message =
                    String.Format( "{0}.Generate() returned null in GenTaskCallback for these parameters: {1}",
                                   args.GenState.GetType(),
                                   args.GenState.Parameters );
                throw new NullReferenceException( message );
            }

            // Save the map file, either into a world or a file.
            if( args.World != null ) {
                args.Player.Message( "Generation done. Changing map on {0}&S...", args.World.ClassyName );
                var playersToAlert = args.World.Players.Except( args.Player );
                args.World.ChangeMap( map, args.Player.Name );

                playersToAlert.Message( "&SPlayer {0}&S generated a new map for this world.", args.Player.ClassyName );
                Logger.Log( LogType.UserActivity,
                            "Player {0} generated a new map for world {1}: {2}",
                            args.Player.Name,
                            args.World.Name,
                            args.GenState.Parameters );

            } else {
                if( map.Save( args.FullFileName ) ) {
                    args.Player.Message( "Generation done. Saved to {0}", args.FileName );
                    args.Player.Message( "You may now use &H/WLoad&S to create a world from this map file." );
                    Logger.Log( LogType.UserActivity,
                                "Player {0} saved a newly-generated new map to file \"{1}\": {2}",
                                args.Player.Name,
                                args.FullFileName,
                                args.GenState.Parameters );
                } else {
                    args.Player.Message( "&WAn error occurred while saving generated map to {0}", args.FileName );
                }
            }
            Server.RequestGC();
        }

Same methods

WorldCommands::GenTaskCallback ( [ task ) : void