> For the complete documentation index, see [llms.txt](https://docs.spoof.dev/asteroid/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.spoof.dev/asteroid/api/usage.md).

# Usage

## Understanding AsteroidAPI Extensions

### Two Ways to Extend AsteroidAPI

#### 1. External Plugins (API-Based)

* Works like regular Bukkit plugins in your `plugins` folder
* Access to all AsteroidAPI features:
  * Movement control
  * Player behavior
  * Block interactions
  * Server performance management
  * And more
* Easy to integrate with existing plugins
* Perfect for most use cases

#### 2. Internal Extensions

* Loaded directly into Asteroid through the `Extensions` folder
* Runs inside Asteroid's core systems
* Can modify core behaviors like:
  * Fake player spawning process
  * Packet handling
  * Tick system modifications
* More powerful but requires careful implementation

### When to Use Each Type

**Use External Plugins when:**

* You want to control fake players from your plugin
* You need to integrate with other plugins
* You're making general server features

**Use Internal Extensions when:**

* You need to modify how fake players work at a core level
* You want to add custom behaviors that run directly in Asteroid
* You need to handle packets or modify spawn behavior

### Getting Started

Check our documentation for examples and guides on both types of extensions. Start with external plugins if you're new to AsteroidAPI - they're easier to work with and cover most common needs.

Need help choosing? Just ask in our Discord server!
