fCraft.BuildingCommands.BindHandler C# (CSharp) Method

BindHandler() private static method

private static BindHandler ( Player player, Command cmd ) : void
player Player
cmd Command
return void
        private static void BindHandler( Player player, Command cmd )
        {
            string originalBlockName = cmd.Next();
            if ( originalBlockName == null ) {
                player.Message( "All bindings have been reset." );
                player.ResetAllBinds();
                return;
            }
            Block originalBlock = Map.GetBlockByName( originalBlockName );
            if ( originalBlock == Block.Undefined ) {
                player.Message( "Bind: Unrecognized block name: {0}", originalBlockName );
                return;
            }

            string replacementBlockName = cmd.Next();
            if ( replacementBlockName == null ) {
                if ( player.GetBind( originalBlock ) != originalBlock ) {
                    player.Message( "{0} is no longer bound to {1}",
                                    originalBlock,
                                    player.GetBind( originalBlock ) );
                    player.ResetBind( originalBlock );
                } else {
                    player.Message( "{0} is not bound to anything.",
                                    originalBlock );
                }
                return;
            }

            if ( cmd.HasNext ) {
                CdBind.PrintUsage( player );
                return;
            }

            Block replacementBlock = Map.GetBlockByName( replacementBlockName );
            if ( replacementBlock == Block.Undefined ) {
                player.Message( "Bind: Unrecognized block name: {0}", replacementBlockName );
            } else {
                Permission permission = Permission.Build;
                switch ( replacementBlock ) {
                    case Block.Grass:
                        permission = Permission.PlaceGrass;
                        break;

                    case Block.Admincrete:
                        permission = Permission.PlaceAdmincrete;
                        break;

                    case Block.Water:
                        permission = Permission.PlaceWater;
                        break;

                    case Block.Lava:
                        permission = Permission.PlaceLava;
                        break;
                }
                if ( player.Can( permission ) ) {
                    player.Bind( originalBlock, replacementBlock );
                    player.Message( "{0} is now replaced with {1}", originalBlock, replacementBlock );
                } else {
                    player.Message( "&WYou do not have {0} permission.", permission );
                }
            }
        }