> For the complete documentation index, see [llms.txt](https://hayston.gitbook.io/flp-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hayston.gitbook.io/flp-wiki/configuration-reference/bukkit.md).

# Bukkit and Folia configuration

File: `plugins/fastloginplus/config.yml` on Spigot, Paper and Folia. They share the same template and defaults. Stop the server to edit it, then restart. Behind a proxy, shared policies marked **standalone** are controlled on the proxy instead.

Folia account commands use the `fastloginplus.folia.command.*` permission prefix rather than the Bukkit prefix. See [commands and permissions](/flp-wiki/login-and-account-management/commands.md).

## General and login

| Option                          | Default | Purpose                                                                                                   |
| ------------------------------- | ------- | --------------------------------------------------------------------------------------------------------- |
| `language`                      | `en`    | Message language; `en` and `zh` are built in, custom files are supported                                  |
| `debug`                         | `false` | Enable diagnostic logs                                                                                    |
| `check-update`                  | `true`  | Check for releases, without installing them                                                               |
| `update-check-interval`         | `24`    | Update interval in hours                                                                                  |
| `autoRegister`                  | `true`  | Standalone: select eligible new names for premium verification, not a master registration switch          |
| `autoLogin`                     | `true`  | Standalone: allow eligible verified players to log in without a password                                  |
| `auto-register-unknown`         | `true`  | Standalone: allow creating a local account for a verified Java player who lacks one                       |
| `premiumUuid`                   | `true`  | Standalone: use the premium UUID; `false` uses the offline UUID. Back up player data before changing      |
| `nameChangeCheck`               | `true`  | Standalone: check premium name changes and update FLP records, without moving player data                 |
| `secondAttemptCracked`          | `false` | Standalone: allow a later password route after an eligible verification failure                           |
| `offline-whitelist`             | `false` | Standalone: reject offline Java names unknown to FLP                                                      |
| `forwardSkin`                   | `true`  | Standalone: provide verified players' skins and capes                                                     |
| `premium-warning`               | `true`  | Standalone: ask players to repeat self-binding commands for confirmation                                  |
| `kick-toggle`                   | `true`  | Disconnect after standalone switching for manual reconnect; also relevant to queued proxy-backend toggles |
| `require-declared-proxy-policy` | `false` | Proxy backend: require login policies from the proxy; enable after upgrading and confirming proxy support |
| `respectIpLimit`                | `false` | Honor AuthMe's registration limit per IP, including behind a proxy                                        |
| `useProxyAgnosticResolver`      | `true`  | Standalone: omit the IP during session verification, useful for DNAT                                      |
| `verifyClientKeys`              | `false` | Standalone: check applicable client public-key signatures; not a replacement for premium verification     |

## Connection limits

`anti-bot` applies only on standalone servers; configure it on the proxy when using one. Limits reject connections and do not replace a firewall.

| Option                        | Default | Purpose                                        |
| ----------------------------- | ------- | ---------------------------------------------- |
| `anti-bot.enabled`            | `true`  | Enable connection limits                       |
| `anti-bot.connections`        | `600`   | Global connections per window                  |
| `anti-bot.expire`             | `10`    | Global window in minutes                       |
| `anti-bot.per-ip-connections` | `20`    | Connections per IP in the long window          |
| `anti-bot.per-ip-expire`      | `5`     | Per-IP long window in minutes                  |
| `anti-bot.burst-limit`        | `10`    | Connections per IP in the short window         |
| `anti-bot.burst-window`       | `10`    | Short window in seconds                        |
| `anti-bot.ban-duration`       | `5`     | Temporary IP ban in minutes                    |
| `anti-bot.trusted-ips`        | Empty   | IP addresses exempt from FLP connection limits |

## Mojang and Floodgate

| Option                       | Default | Purpose                                                                                |
| ---------------------------- | ------- | -------------------------------------------------------------------------------------- |
| `mojang-retry-count`         | `3`     | Standalone: total attempts per request                                                 |
| `mojang-retry-delay`         | `500`   | Standalone: base retry delay in milliseconds                                           |
| `ip-addresses`               | Empty   | Local outbound request addresses; on proxy backends only used for some Paper lookups   |
| `mojang-request-limit`       | `600`   | Direct name lookups per 10 minutes, 0 to 600; 0 requires an HTTP proxy                 |
| `proxies`                    | Empty   | HTTP proxies for Mojang requests, such as `host:port`                                  |
| `autoLoginFloodgate`         | `false` | Standalone: allow supported Floodgate automatic login                                  |
| `autoRegisterFloodgate`      | `false` | Standalone: allow Floodgate registration; automatic login must also be allowed         |
| `allowFloodgateNameConflict` | `false` | Standalone: permit eligible unlinked Bedrock names to conflict with premium Java names |

`autoLoginFloodgate` and `autoRegisterFloodgate` accept `false`, `true`, `linked` or `no-conflict`; see [Geyser and Floodgate](/flp-wiki/compatibility-and-integrations/bedrock.md). Proxy backends receive Floodgate policy from the proxy. On a proxy backend, `ip-addresses`, `mojang-request-limit` and `proxies` only apply to relevant Paper lookup paths.

## FLP database

These settings control the standalone FLP list; proxy deployments use the proxy database. The authentication plugin has a separate account database.

| Option                    | Default                    | Purpose                                                                                             |
| ------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------- |
| `driver`                  | `sqlite`                   | `sqlite` or `mysql`                                                                                 |
| `database`                | `{pluginDir}/FastLogin.db` | SQLite file path, or MySQL database name                                                            |
| `host`                    | `127.0.0.1`                | MySQL host                                                                                          |
| `port`                    | `3306`                     | MySQL port                                                                                          |
| `username`                | `myUser`                   | MySQL username; change before use                                                                   |
| `password`                | `myPassword`               | MySQL password; change and keep private                                                             |
| `timeout`                 | `30`                       | Connection acquisition timeout in seconds                                                           |
| `lifetime`                | `1800`                     | Maximum connection lifetime in seconds; 0 is unlimited, positive values below 300 are raised to 300 |
| `useSSL`                  | `false`                    | Enable the MySQL SSL path                                                                           |
| `sslMode`                 | `Required`                 | Driver mode for the SSL path                                                                        |
| `allowPublicKeyRetrieval` | `false`                    | MySQL public-key retrieval option on the SSL path                                                   |
| `ServerRSAPublicKeyFile`  | Empty                      | Optional local RSA public-key file                                                                  |

Back up and plan migration before changing databases; configuration changes do not migrate SQLite data. See [database configuration](https://github.com/Hayston1001/FastLoginPlus/tree/main/docs/en/configuration/database.md) for driver and connection details.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hayston.gitbook.io/flp-wiki/configuration-reference/bukkit.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
