# Assets Source: https://tehoclient.dev/developers/assets SDK: 1.0.0 **Capability:** `asset:1` **Kinds:** PNG · OGG · OBJ **Client cache:** 64 MB per server Some modules take your own files: sidebar row icons, hologram images, nametag badges, tab icons, UI images, sounds and private branding art. These are **assets**, addressed by their SHA-256 hash. When you send something that references an asset, the SDK first offers the hash. The client answers with the hashes it does not have, and only those are sent. A returning player who already has your art downloads nothing. ## Registering an asset Load assets once, at startup, through the store on `TehoApi`: ```java AssetStore store = TehoApi.get().assets(); Asset coin = store.load(Asset.Kind.PNG, getDataFolder().toPath().resolve("coin.png")); Asset anthem = store.ogg(Files.readAllBytes(getDataFolder().toPath().resolve("anthem.ogg"))); ``` | Method | What it does | |---|---| | `load(kind, Path)` / `load(kind, InputStream)` | Reads and registers a file. | | `png(bytes)`, `ogg(bytes)`, `obj(bytes)` | Registers bytes you already have. | | `register(Asset)` | Registers an `Asset` you built with `Asset.of(kind, bytes)`. | | `find(hash)` | Looks one up by hash. | ## Using an asset Pass the `Asset` wherever a builder accepts one. The SDK handles the offer, the client's request and chunking. ```java teho.hud().sidebar(Sidebar.replace("Skyline") .row(Sidebar.Row.of("coins", "Coins").value("1,250").icon(coin)) .build()); teho.audio().play(Sound.asset("anthem", anthem).music(true).build()); ``` ## Limits | Kind | Max size | Used by | |---|---|---| | PNG | 2 MB | Sidebar and tab icons, hologram images, nametag badges, UI images, branding | | OGG | 4 MB | [Audio](https://tehoclient.dev/modules/audio) | | OBJ | 2 MB | Cached by the client, but no module draws models yet | Builders that need an image check the kind and throw if you pass, say, an OGG as a sidebar icon. `Asset.of` checks the size. The client keeps up to 64 MB per server in an LRU cache and evicts the least recently used assets first.