> ## Documentation Index
> Fetch the complete documentation index at: https://www.kitemc.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ItemsAdder integration

<span id="itemsadder-integration" />

KiteMarket provides the complete vanilla GUI and ItemsAdder v4 compatibility. Server owners and developers may create configuration themes or Java renderers with their own resources, for private use, free distribution or independent sale, **without an additional KiteMC theme license**. Shared server flows still handle transactions, actual items, input validation and confirmation.

<Tip>
  **Prepare the theme resources first**

  IA theme resources are not bundled. Install your own theme, a third-party theme or the public MIT development example. Without a theme, the complete vanilla interface remains available.
</Tip>

<h2 id="install-your-own-theme">
  Install your own theme
</h2>

1. Obtain legitimate ItemsAdder v4 and matching ProtocolLib runtime plugins supported by the target server. See the existing [representative environment](/en/kitemarket/compatibility). An API JAR alone cannot run the feature.
2. Install the theme's own ItemsAdder namespace following its instructions, and place its KiteMarket declaration in `plugins/KiteMarket/themes/*.yml`. A Java theme also needs its provider plugin. Working configuration and Java examples are described in [interface development](/en/kitemarket/ui-development).
3. Following the installed IA guide, manually run `/iareload`, wait for completion, then `/iazip` to rebuild and send the pack. KiteMarket does not run third-party rebuild commands for administrators.
4. Register the SHA-1 (40 hexadecimal digits) and UUID of the **actual sent pack containing the theme**. Temporarily enable `gui.itemsadder.diagnostics: true` with `/km reload` to inspect the observed UUID, SHA-1 and URL in `[KITEMARKET_PACK]`. Register them, run `/km reload` again, then disable diagnostics.
5. After successfully loading that pack, players use `/km ui itemsadder example-ia`, or `/km ui auto` once the theme is configured as a default. `/km ui` shows the actual interface and fallback reason.

`example-ia` must identify an installed theme. Replace the pack-identity placeholders below with actual observed values:

```yaml theme={null}
gui:
  renderer: auto
  auto-order: [itemsadder, vanilla]
  default-themes:
    itemsadder: example-ia
  itemsadder:
    enabled: true
    diagnostics: false
    pack-sha1: "REPLACE_WITH_ACTUAL_40_HEX_SHA1"
    pack-id: "REPLACE_WITH_ACTUAL_SENT_UUID"
```

Use `gui.default-themes: {}` when no IA theme is installed. Third-party declarations may register a separate pack through `requires`; see the developer guide. Invalid candidates preserve the current valid configuration. Themes need no KiteMC product ID or download endpoint.

<h2 id="use-and-fallback">
  Use and fallback
</h2>

| Player command | Behavior |
| - | - |
| `/km ui auto` | Try ready providers and default themes in the configured order |
| `/km ui vanilla` | Use the complete vanilla GUI without a resource pack |
| `/km ui itemsadder example-ia` | Select an installed independent theme, explaining and falling back when unavailable |
| `/km ui` | Show requested preference, actual interface and theme availability |

Preferences persist per market network and player across nodes. Missing themes or fallback do not overwrite them. Switching preserves publishing drafts and cannot submit a trade twice. Both interfaces share actual items, listing versions, quotes, final inventory checks and operation IDs.

Registered resources, the adapter and **successful loading of the specific pack by this player** must be ready. Sending or accepting is not successful loading. Rejection, failure, discard/removal of that pack or mismatched identity causes fallback; unrelated packs do not erase IA readiness. Disconnects, node changes, removal of all packs and IA reload require confirmation again. Changed content requires a new actual sent UUID and matching digest; a random UUID entered only in KiteMarket or a different digest assigned to a registered UUID is insufficient.

<h2 id="develop-your-own-interface">
  Develop your own interface
</h2>

The base inventory layout, shared pages and amount input remain. Developers may use their own font images, button-item icons and page configuration. SDK actions and input retain server validation; a theme cannot bypass confirmation or debit funds directly. See [interface development](/en/kitemarket/ui-development) for working examples, the 35 page keys and lifecycle.

Preserve theme declarations, resources and player preferences during migration, backing them up before updates; see [operations](/en/kitemarket/operations). The public examples' MIT license covers only the source and resources identified in those examples. Other themes retain their own licenses.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.