> For the complete documentation index, see [llms.txt](https://docs.ohalee.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ohalee.com/products/ultimateguilds/configuration.md).

# Configuration

## Configuration File

```yaml
database:
  # H2 or MariaDB
  type: "H2"
  mariadb:
    host: "localhost"
    port: 3306
    username: "root"
    password: "password"
    database: "ultimateguilds"

  # Redis is only used for multiserver support
  redis:
    host: "localhost"
    port: 6379
    username: ""
    password: "password"
    database: 0
    clientName: "UltimateGuilds"
    minimumPoolSize: 5
    maximumPoolSize: 10

# Enable multiserver support with Redis. This allows guilds to be shared across multiple servers.
# If you run only one server, do not enable this
enable-proxy-support: false

date-format: "HH:mm:ss dd/MM/yyyy"

cooldown:
  disband-confirm-time: 15

limits:
  name:
    max-length: 10
    # Regex supported
    allowed-characters:
      - "[a-zA-Z0-9_]+"
  tag:
    max-length: 10
    format: "<yellow>[<tag>]"
    # Regex supported
    allowed-characters:
      - "[a-zA-Z0-9_]+"
  description:
    max-length: 128

# Default is at the creation of the guild
# The other is when a player executes /guild maxmembers
# permission: guild.maxmembers.<group>
#             guild.maxmembers.vip
#             guild.maxmembers.admin
max-members:
  default: 10
  vip: 50
  admin: 100

luckperms:
  use-prefix-in-messages: true

prefix:
  # Set empty to disable -> ""
  set-tag: "lp user %uuid% meta setsuffix 1 \"%tag%\""
  # Set empty to disable -> ""
  remove-tag: "lp user %uuid% meta removesuffix 1"

gui:
  common:
    fill:
      material: BLACK_STAINED_GLASS_PANE
      displayName: "gui.common.fill.name"
      slot: "0-53"
  no-guild:
    info:
      material: PAPER
      displayName: "gui.no_guild.info.name"
      lore: "gui.no_guild.info.lore"
      row: 2
      column: 4
  guild:
    info:
      material: BOOK
      displayName: "gui.guild.info.name"
      lore: "gui.guild.info.lore"
      row: 0
      column: 4
  other:
    filter:
      material: HOPPER
      displayName: "gui.other.filter.name"
      lore: "gui.other.filter.lore"
      row: 0
      column: 1
    log:
      material: PAPER
      displayName: "gui.other.log.name"
      lore: "gui.other.log.lore"
    invite:
      material: PAPER
      displayName: "gui.other.invite.name"
      lore: "gui.other.invite.lore"
    ban:
      material: BARRIER
      displayName: "gui.other.ban.name"
      lore: "gui.other.ban.lore"
    member:
      material: PLAYER_HEAD
      displayName: "gui.other.member.name"
      lore: "gui.other.member.lore"
    empty-member-slot:
      material: GRAY_STAINED_GLASS_PANE
      displayName: "gui.other.empty_member_slot.name"
    back:
      material: ARROW
      displayName: "gui.other.back.name"
    next-page:
      material: ARROW
      displayName: "gui.other.next_page.name"
    previous-page:
      material: ARROW
      displayName: "gui.other.previous_page.name"

confirm-gui:
  confirm:
    material: LIME_STAINED_GLASS_PANE
    displayName: "confirm-gui.confirm.name"
    row: 0
    column: 3
  cancel:
    material: RED_STAINED_GLASS_PANE
    displayName: "confirm-gui.cancel.name"
    row: 0
    column: 5
```

## Other files

Alongside `config.yml`, UltimateGuilds writes two more files on first start. Both are merged with the bundled defaults on every start, so keys added by an upgrade appear without you having to reset the file.

<table><thead><tr><th width="180">File</th><th>Holds</th></tr></thead><tbody><tr><td>ranks.yml</td><td>The ranks a guild can have and what each may do — see <a href="/products/ultimateguilds/ranks.md">ranks.md</a></td></tr><tr><td>levels.yml</td><td>The experience curve and what each level is worth — see <a href="/products/ultimateguilds/progression.md">progression.md</a></td></tr></tbody></table>

## Invites

```yaml
invites:
  expire-after-seconds: 300
```

How long a pending invite stands before it lapses. Set it to `0` to keep invites until the server restarts, which is what versions before 3.0 did.
