> 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/addons.md).

# Addons

Addons are optional extra features that ship with Asteroid. Each is a separate module you can turn on or off on its own. They live in their own config files under `plugins/Asteroid/addons/`.

Every addon has an `enabled` flag at the top of its file. All addons are off by default. Turn one on, edit its settings, and reload.

| Addon          | File                 | What it does                                                |
| -------------- | -------------------- | ----------------------------------------------------------- |
| Login          | `login.yml`          | Logs fake players into an auth or login plugin              |
| Ranks          | `ranks.yml`          | Gives fake players ranks with weighted probability          |
| Voting         | `voting.yml`         | Makes fake players vote on voting sites                     |
| Ping           | `ping.yml`           | Makes each fake player's ping drift realistically over time |
| Persistent IPs | `persistent_ips.yml` | Keeps a stable IP address per fake player                   |

## Login

If your server uses an auth or login plugin (the kind that asks players to run `/login`), fake players may get stuck at the login screen. This addon logs them in automatically using a password.

```yaml
enabled: false
password: "doarandom"
```

`password` is what fakes log in with. Leave it as `doarandom` to have Asteroid generate one secure random password the first time the addon is enabled.

## Ranks

Gives fake players ranks so they do not all look like default members. Weighted: each rank has a weight, and higher weights are handed out more often.

```yaml
enabled: false
persistent: true
ranks:
  default: 60
  vip: 30
  mvp: 10
```

`persistent` keeps a fake's rank forever once given. Add your own ranks with weights; higher weight means the rank is given more often. Suggested only when giving ranks through commands does not work for your setup.

## Voting

Makes fake players cast votes on Minecraft voting sites, so your vote counts and vote-party progress keep moving.

```yaml
enabled: false
interval: "{random[10,30]}"
vote-cooldown: 24
vote-all-sites: false
voting-sites:
  - "Minecraft-MP"
  - "MinecraftIpList"
```

| Setting          | What it does                                                                                                                                         |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `interval`       | Seconds between votes. Randomize it so votes are spread out.                                                                                         |
| `vote-cooldown`  | Hours before the same fake can vote again on the same site.                                                                                          |
| `vote-all-sites` | If true, the chosen fake votes on all eligible sites at once with a small 3 to 10 second delay between each. If false, one random site per interval. |
| `voting-sites`   | The list of site names votes are sent for.                                                                                                           |

## Ping

Makes each fake player's ping change over time naturally instead of staying frozen. Each fake runs its own timer, so updates are spread out.

```yaml
enabled: false
interval: "{random[10,30]}"
ping:
  useRealisticGenerator: true
  custom: "{random[20,180]}"
  fluctuation: 10
```

| Setting                      | What it does                                                                                                                                    |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `interval`                   | Seconds between ping updates for each fake.                                                                                                     |
| `ping.useRealisticGenerator` | Use Asteroid's built-in realistic generator for the baseline. If false, uses `custom`.                                                          |
| `ping.custom`                | The baseline ping when `useRealisticGenerator` is false.                                                                                        |
| `ping.fluctuation`           | How much, in milliseconds, each update nudges the ping up or down. Set to 0 to fully re-roll the ping each update instead, which looks jumpier. |

## Persistent IPs

Keeps a stable IP address tied to each fake player profile, so the same fake always appears to connect from the same place across sessions and restarts.

```yaml
enabled: false
ips: {}
```

`ips` is managed automatically. Do not edit it by hand unless you know what you are doing.
