# faq

## Can addons spawn bots?

Yes. Use `BotSpawnRequest` and `PracticeBotApi#spawnBot`.

## Can addons read bot state?

Yes. Use `PracticeBotHandle#getStateSnapshot()` and related snapshot classes.

## Can addons attach custom data to bots?

Yes. Use namespaced metadata through `PracticeBotHandle`.

## Can addons listen to bot lifecycle events?

Yes. Register Bukkit listeners for the public PracticeBot events.

## Can addons modify CPvP behavior?

Only selected validated runtime settings are exposed in API v1: anchoring mode, block breaking, and low-health crystal reserve.

## Can addons replace the combat engine?

No. Combat internals are not part of the public API.

## Can addons access Citizens NPCs directly?

Addons should avoid direct mutation of PracticeBot NPCs. Use the public API to prevent state conflicts.

## Can addons use templates?

Yes. Addons can read `BotTemplateView` values, spawn bots from templates, and apply templates to compatible runtime bots.

## Can addons use async calls?

Most API calls are main-thread only. Metadata reads are the specific documented exception.

## Should I shade the API jar?

No. Use `provided` scope and do not shade the API into your addon.

## Why is the API intentionally limited?

A stable public API must avoid exposing volatile AI, movement, combat, GUI, license, and build internals. The public API focuses on safe integration points that can remain compatible across updates.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://edelweiss-network.gitbook.io/practicebot/developer-guide/faq.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
