
# `client`

## Timing and scale

| Function | Returns |
|----------|---------|
| `client.fps()` | Current FPS |
| `client.millis()` | Wall-clock time in milliseconds |
| `client.tick_delta()` | Progress between ticks, `0..1`, for smooth motion between them |
| `client.scale()` | DPI scale factor, relative to a 1920px base |

## Sound and clipboard

| Function | Does |
|----------|------|
| `client.play_sound(id[, volume[, pitch]])` | Plays a sound locally, e.g. `"minecraft:ui.button.click"` |
| `client.clipboard()` | Reads the system clipboard |
| `client.set_clipboard(s)` | Replaces it |

## `kawaki`

| Function | Does |
|----------|------|
| `kawaki.log(msg)` | Writes to the game log, prefixed with the script name |
| `kawaki.script` | File name of the running script |

## Standard libraries

`math`, `string`, `table`, `bit32`, `coroutine`, `os` and `io` are available; `require` and
`package` are not. `dofile`/`loadfile` resolve relative to the scripts folder. `io` paths resolve relative to the game
directory and must stay inside the scripts folder (`config/kawaki/scripts/`); anything
else fails to open. `io.popen` is not available, and `os` only has `clock`, `date`,
`difftime` and `time`.
