> For the complete documentation index, see [llms.txt](https://wiki.halosdev.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.halosdev.com/halos-player-spoofer/setup-guide/offline-fake-player-accounts.md).

# Offline Fake Player Accounts

This page covers the `account-fetcher` setting: what it does, and how to switch it to OFFLINE so your fake players are generated locally instead of being looked up through the MineTools or PlayerDB online services. Use OFFLINE when you want fake players with completely custom usernames, zero external API calls, and no dependency on an internet lookup service.

{% hint style="info" %}
**What "offline fakes" actually means:** By default, HalosPlayerSpoofer fetches each fake player's account data (UUID + skin texture) from an online service. In OFFLINE mode it skips that entirely. It builds the account itself from the username, exactly the way a Minecraft server generates UUIDs for offline-mode players, so no HTTP request ever leaves your server for account data.
{% endhint %}

### How account fetching works

The `account-fetcher` setting in `plugins/HalosPlayerSpoofer/config.yml` decides where the plugin gets each fake player's account and texture data:

| Value        | What it does                                    | Skins?              | Custom usernames?             | External calls? |
| ------------ | ----------------------------------------------- | ------------------- | ----------------------------- | --------------- |
| `MINE_TOOLS` | Looks up account + skin from MineTools          | ✅ Real skins        | ❌ Name must be a real account | ✅ Yes           |
| `PLAYER_DB`  | Looks up account + skin from PlayerDB           | ✅ Real skins        | ❌ Name must be a real account | ✅ Yes           |
| `OFFLINE`    | Generates the account locally from the username | ❌ Default skin only | ✅ Any username you want       | ❌ None          |

With `MINE_TOOLS` or `PLAYER_DB`, the fake player's username has to match a **real, registered Minecraft account**, because that's what the service resolves. If it can't find the name, the fake fails to fetch.

`OFFLINE` removes that restriction. The UUID is derived directly from the username (`OfflinePlayer:<name>`, the same scheme Minecraft itself uses in offline mode), so you can use **any username you invent** and there are **no rate limits, timeouts, or network dependencies**.

{% hint style="warning" %}
**The trade-off:** Offline fakes have **no custom skin.** Because textures only come from the online fetchers, an OFFLINE fake renders with the default Steve/Alex skin. If real skins matter more to you than custom names, use `MINE_TOOLS` or `PLAYER_DB` instead. Those work on an offline-mode server too, you'll just be limited to usernames of real accounts.
{% endhint %}

{% hint style="danger" %}
**OFFLINE only works on an offline-mode server.** If the server is in online mode the plugin will reject the OFFLINE fetcher, since a locally-generated account can't authenticate against Mojang.
{% endhint %}

### Switching to OFFLINE mode

#### Step 1: Set the account fetcher to OFFLINE

In `plugins/HalosPlayerSpoofer/config.yml`, find the `account-fetcher` setting and change it to `OFFLINE`:

```yaml
# Where to fetch player account and texture data.
# Possible values: MINE_TOOLS, PLAYER_DB, OFFLINE.
# When your server is running in online mode, this may not be OFFLINE.
account-fetcher: OFFLINE

# The HTTP timeout the account fetcher uses.
# Not used in OFFLINE mode since no requests are made.
account-fetcher-timeout: 2s
```

#### Step 2: Restart

Restart the server, to apply the change.

#### Step 3: Verify

Confirm it's working using the Verifying it works section below.

### Verifying it works

1. Turn on debug logging temporarily. Set `debug: true` in `config.yml` and reload.
2. Add a fake player the way you normally would (via the Fluctuation module or your spoof command).
3. Add a fake with a **made-up username** that isn't a real account. In `MINE_TOOLS`/`PLAYER_DB` this would fail to fetch. In `OFFLINE` it should appear immediately, which confirms the online lookup is being skipped.
4. The fake will show the **default skin** (Steve/Alex). That's expected in OFFLINE mode and further confirms no texture was fetched.
5. Check the console. You should see **no** MineTools or PlayerDB request/timeout log lines for account fetching.

Turn `debug` back to `false` when you're done.

### Troubleshooting

**"OFFLINE fetcher is not allowed in online mode" (or fakes never spawn after switching to OFFLINE)** The plugin only allows OFFLINE on an offline-mode server. Make sure the server is in offline mode, then fully restart.

**Fake players have no skin** Expected behavior in `OFFLINE` mode. Offline accounts carry no texture. If you need skins, switch to `MINE_TOOLS` or `PLAYER_DB` (those work on an offline-mode server too, but your fake usernames must be real registered accounts).

### FAQ

**Q: Why would I use OFFLINE instead of MINE\_TOOLS/PLAYER\_DB?**\
A: Two reasons. You want fakes with **any custom username** (not limited to real accounts), and you want **zero external API calls** (no rate limits, no lookup timeouts, works with no internet).

**Q: Can I have offline fakes and real skins?**\
A: No. Skins come from the online fetchers. It's one or the other: custom names with no skins (`OFFLINE`), or real skins with real-account names (`MINE_TOOLS`/`PLAYER_DB`).

### Support

Stuck? Open a ticket in our Discord: [discord.gg/halosdev](https://discord.gg/halosdev)
