void TP( Player player, Command cmd ) {
if( player.Can( Permissions.Teleport ) ) {
string name = cmd.Next();
if ( name == null ) {
player.Send( PacketWriter.MakeTeleport( 255, world.map.spawn ) );
} else {
Player target = world.FindPlayer( name );
if ( target != null ) {
Position pos = target.pos;
pos.x += 1;
pos.y += 1;
pos.h += 1;
player.Send( PacketWriter.MakeTeleport( 255, pos ) );
} else if ( cmd.Next() == null ) {
world.NoPlayerMessage( player, name );
} else {
cmd.Rewind();
int x, y, h;
if ( cmd.NextInt( out x ) && cmd.NextInt( out y ) && cmd.NextInt( out h ) ) {
if ( x < 0 || x > world.map.widthX ||
y < 0 || y > world.map.widthY ||
y < 0 || y > world.map.height ) {
player.Message( "Specified coordinates are outside the map!" );
} else {
player.pos.Set( x * 32 + 16, y * 32 + 16, h * 32 + 16, player.pos.r, player.pos.l );
player.Send( PacketWriter.MakeTeleport( 255, player.pos ) );
}
} else {
player.Message( "See " + Color.Help + "/help tp" + Color.Sys + " for information on using /tp" );
}
}
}
} else {
world.NoAccessMessage( player );
}
}