# Configuration

### Configuration

Use this page to manage the main VxSpawners settings.

Edit the config files carefully.

Reload or reload after changes if required by your setup.

### Config files

Document the files used by VxSpawners here.

Typical files include:

<details>

<summary>Config.yml</summary>

```yaml
database:
  type: "h2" # Change to "mysql" to use the settings below
  mysql:
    host: "localhost"
    port: "3306"
    database: "vxspawners"
    username: "root"
    password: ""

number-formatting:
  mode: 0
  formatted: "#,###.##"

shop-command-aliases:
  - "spawnershop"
  - "vxspawnershop"

my-spawners-command-aliases:
  - "myspawners"

allow-spawner-item-stacking: true
max-spawners-per-player: 100

sounds:
  place: "ENTITY_EXPERIENCE_ORB_PICKUP"
  pickup: "BLOCK_NOTE_BLOCK_HAT"
  boost: "ENTITY_EXPERIENCE_ORB_PICKUP"

particles:
  pickup: "CRIT"
  place: "SPELL"
  upgrade: "VILLAGER_HAPPY"
  boost: "VILLAGER_HAPPY"

auto-save-minutes: 3

blacklisted-worlds:
  - "example-world"
```

</details>

<details>

<summary>Lang.yml</summary>

```yaml
# Vortex Spawners Language Configuration

messages:
  prefix: "<gradient:#00aeff:#066996>Vortex Spawners »</gradient> "

  # =========================================
  # CORE SPAWNER MESSAGES
  # =========================================
  max-spawner-reached: "%prefix%&c&lERROR! &7You have reached your maximum limit of &f%max% &7spawners!"
  inventory-full: "%prefix%&cYour inventory is full! Please clear some space to collect this."
  upgrade-success: "%prefix%&aSuccess! &fSpawner upgraded to <gradient:#00aeff:#066996>Level %level%</gradient>."
  not-owner: "%prefix%&cYou do not own this spawner!"
  pickup-success: "%prefix%&fYou picked up your <gradient:#00aeff:#066996>%type%</gradient> &fspawner!"
  max-level: "%prefix%&cThis spawner is already at the maximum level!"
  insufficient-funds: "%prefix%&cYou need &4$%cost% &cto upgrade this spawner!"
  place-success: "%prefix%&fSuccessfully placed <gradient:#00aeff:#066996>%type%</gradient> &fspawner!"

  # =========================================
  # STACKING SYSTEM
  # =========================================
  stack-success: "%prefix%&aSuccessfully stacked! Spawner is now <gradient:#00aeff:#066996>%amount%x</gradient>"
  stack-wrong-type: "%prefix%&cYou can only stack spawners of the exact same type!"
  stack-disabled: "%prefix%&cSpawner stacking is currently disabled on this server."

  # =========================================
  # COLLECTION & ECONOMY
  # =========================================
  spawner:
    no-loot: "%prefix%&cThis spawner currently has no loot to collect!"
    no-xp: "%prefix%&cThis spawner currently has no stored experience!"

  economy:
    collect-loot-success: "%prefix%&aSuccessfully collected <gradient:#00aeff:#066996>%amount% items</gradient>!"
    withdraw-xp-success: "%prefix%&aSuccessfully withdrew <gradient:#00aeff:#066996>%amount% XP</gradient>!"
    not-enough-money: "%prefix%&cYou do not have enough money! You need &4$%cost%&c."

  # =========================================
  # ADMIN & COMMANDS
  # =========================================
  commands:
    no-permission: "%prefix%&cYou do not have permission to execute this command."
    player-not-found: "%prefix%&cThat player could not be found."
    invalid-amount: "%prefix%&cThe amount must be a valid number."
    spawner-not-found: "%prefix%&cSpawner type '&f%type%&c' not found in the /spawners/ folder!"
    give-success: "%prefix%&7Successfully gave &f%amount%x %type% &7spawner to &f%player%&7."
    reload-success: "%prefix%&aSuccessfully reloaded all configuration files!"
    usage-give: "%prefix%&cUsage: &f/vxspawner give <player> <type> <amount>"

    # =========================================
    # COMMAND HELP MENU
    # =========================================
    help-header: "&8&m----------------------------------------\n<gradient:#00aeff:#066996>&lVortex Spawners Commands:</gradient>"
    help-give: "&7/vxspawner give <player> <type> <amount> &8- &fGive a spawner"
    help-reload: "&7/vxspawner reload &8- &fReload configs"
    help-shop: "&7/vxspawner shop &8- &fOpen the spawner shop"
    help-footer: "&8&m----------------------------------------"
```

</details>

<details>

<summary>Shop.yml</summary>

```yaml
pages:
  1:
    10:
      spawner:
        name: "zombie"
        level: 1
        amount: 1
        stack-size: 1
        price: 1000
      display:
        amount: 1
        material: ZOMBIE_HEAD
        name: "<#AAFFAA>%amount% <#00AA00>ᴢᴏᴍʙɪᴇ <white>Spawner"
        lore:
          - ""
          - "<#00AA00><bold>></bold> <#AAFFAA>Price: <#00AA00>$%price%"
          - "<#00AA00><bold>></bold> <#AAFFAA>Level: <#00AA00>%level%"
          - ""
          - "<#00AA00>ꜱᴛᴀᴛꜱ"
          - " <#555555>❙ <#FFFFFF>Speed: <#00AA00>%speed% seconds"
          - " <#555555>❙ <#FFFFFF>Dropped XP: <#00AA00>%xp%"
          - " <#555555>❙ <#FFFFFF>XP Storage: <#00AA00>%max-xp%"
          - " <#555555>❙ <#FFFFFF>Loot Slots: <#00AA00>%max-slots%"
          - ""
          - "<#00AA00>ᴅʀᴏᴘꜱ"
          - " <#555555>❙ <#FFFFFF>%drop% <#AAAAAA>(<#00AA00>%chance%%<#AAAAAA>)"
          - ""
          - "<#00AA00><bold>></bold> <#AAFFAA>Click to purchase spawner!"
    11:
      spawner:
        name: "skeleton"
        level: 1
        amount: 1
        stack-size: 1
        price: 1500
      display:
        amount: 1
        material: SKELETON_SKULL
        name: "<#DDDDFF>%amount% <#AAAABB><bold>ꜱᴋᴇʟᴇᴛᴏɴ</bold> <white>Spawner"
        lore:
          - ""
          - "<#AAAABB><bold>></bold> <#DDDDFF>Price: <#AAAABB>$%price%"
          - "<#AAAABB><bold>></bold> <#DDDDFF>Level: <#AAAABB>%level%"
          - ""
          - "<#AAAABB>ꜱᴛᴀᴛꜱ"
          - " <#555555>❙ <#FFFFFF>Speed: <#AAAABB>%speed% seconds"
          - " <#555555>❙ <#FFFFFF>Dropped XP: <#AAAABB>%xp%"
          - " <#555555>❙ <#FFFFFF>XP Storage: <#AAAABB>%max-xp%"
          - " <#555555>❙ <#FFFFFF>Loot Slots: <#AAAABB>%max-slots%"
          - ""
          - "<#AAAABB>ᴅʀᴏᴘꜱ"
          - " <#555555>❙ <#FFFFFF>%drop% <#AAAAAA>(<#AAAABB>%chance%%<#AAAAAA>)"
          - ""
          - "<#AAAABB><bold>></bold> <#DDDDFF>Click to purchase spawner!"
    12:
      spawner:
        name: "creeper"
        level: 1
        amount: 1
        stack-size: 1
        price: 2500
      display:
        amount: 1
        material: CREEPER_HEAD
        name: "<#77FF77>%amount% <#00CC00><bold>ᴄʀᴇᴇᴘᴇʀ</bold> <white>Spawner"
        lore:
          - ""
          - "<#00CC00><bold>></bold> <#77FF77>Price: <#00CC00>$%price%"
          - "<#00CC00><bold>></bold> <#77FF77>Level: <#00CC00>%level%"
          - ""
          - "<#00CC00>ꜱᴛᴀᴛꜱ"
          - " <#555555>❙ <#FFFFFF>Speed: <#00CC00>%speed% seconds"
          - " <#555555>❙ <#FFFFFF>Dropped XP: <#00CC00>%xp%"
          - " <#555555>❙ <#FFFFFF>XP Storage: <#00CC00>%max-xp%"
          - " <#555555>❙ <#FFFFFF>Loot Slots: <#00CC00>%max-slots%"
          - ""
          - "<#00CC00>ᴅʀᴏᴘꜱ"
          - " <#555555>❙ <#FFFFFF>%drop% <#AAAAAA>(<#00CC00>%chance%%<#AAAAAA>)"
          - ""
          - "<#00CC00><bold>></bold> <#77FF77>Click to purchase spawner!"
    13:
      spawner:
        name: "witch"
        level: 1
        amount: 1
        stack-size: 1
        price: 10000
      display:
        amount: 1
        material: PLAYER_HEAD
        texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjBlMTNkMTg0NzRmYzk0ZWQ1NWFlYjcwNjk1NjZlNDY4N2Q3NzNkYWMxNmY0YzNmODcyMmZjOTViZjlmMmRmYSJ9fX0=
        name: "<#C95EFF>%amount% <#8844ff><bold>ᴡɪᴛᴄʜ</bold> <white>Spawner"
        lore:
          - ""
          - "<#8844ff><bold>></bold> <#C95EFF>Price: <#8844ff>$%price%"
          - "<#8844ff><bold>></bold> <#C95EFF>Level: <#8844ff>%level%"
          - ""
          - "<#8844ff>ꜱᴛᴀᴛꜱ"
          - " <#555555>❙ <#FFFFFF>Speed: <#8844ff>%speed% seconds"
          - " <#555555>❙ <#FFFFFF>Dropped XP: <#8844ff>%xp%"
          - " <#555555>❙ <#FFFFFF>XP Storage: <#8844ff>%max-xp%"
          - " <#555555>❙ <#FFFFFF>Loot Slots: <#8844ff>%max-slots%"
          - ""
          - "<#8844ff>ᴅʀᴏᴘꜱ"
          - " <#555555>❙ <#FFFFFF>%drop% <#AAAAAA>(<#8844ff>%chance%%<#AAAAAA>)"
          - ""
          - "<#8844ff><bold>></bold> <#C95EFF>Click to purchase spawner!"
    14:
      spawner:
        name: "guardian"
        level: 1
        amount: 1
        stack-size: 1
        price: 50000
      display:
        amount: 1
        material: PLAYER_HEAD
        texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjhlNzI1Nzc5YzIzNGM1OTBjY2U4NTRkYjVjMTA0ODVlZDhkOGEzM2ZhOWIyYmRjMzQyNGI2OGJiMTM4MGJlZCJ9fX0=
        name: "<#CCFFEE>%amount% <#00FFCC><bold>ɢᴜᴀʀᴅɪᴀɴ</bold> <white>Spawner"
        lore:
          - ""
          - "<#00FFCC><bold>></bold> <#CCFFEE>Price: <#00FFCC>$%price%"
          - "<#00FFCC><bold>></bold> <#CCFFEE>Level: <#00FFCC>%level%"
          - ""
          - "<#00FFCC>ꜱᴛᴀᴛꜱ"
          - " <#555555>❙ <#FFFFFF>Speed: <#00FFCC>%speed% seconds"
          - " <#555555>❙ <#FFFFFF>Dropped XP: <#00FFCC>%xp%"
          - " <#555555>❙ <#FFFFFF>XP Storage: <#00FFCC>%max-xp%"
          - " <#555555>❙ <#FFFFFF>Loot Slots: <#00FFCC>%max-slots%"
          - ""
          - "<#00FFCC>ᴅʀᴏᴘꜱ"
          - " <#555555>❙ <#FFFFFF>%drop% <#AAAAAA>(<#00FFCC>%chance%%<#AAAAAA>)"
          - ""
          - "<#00FFCC><bold>></bold> <#CCFFEE>Click to purchase spawner!"
```

</details>

Example Spawner configuration (the plugin comes with 8 included)

<details>

<summary>spawners/zombie.yml</summary>

```yaml
item:
  material: ZOMBIE_HEAD
  name: "<#00AA00><bold>ᴢᴏᴍʙɪᴇ <white>Spawner"
  lore:
    - ""
    - "<#00AA00>ꜱᴛᴀᴛꜱ"
    - " <#555555>❙ <#FFFFFF>Speed: <#00AA00>%speed% seconds"
    - " <#555555>❙ <#FFFFFF>Dropped XP: <#00AA00>%xp%"
    - " <#555555>❙ <#FFFFFF>XP Storage: <#00AA00>%max-xp%"
    - " <#555555>❙ <#FFFFFF>Loot Slots: <#00AA00>%max-slots%"
    - ""
    - "<#00AA00>ᴅʀᴏᴘꜱ"
    - " <#555555>❙ <#FFFFFF>%drop% <#AAAAAA>(<#00AA00>%chance%%<#AAAAAA>)"
    - ""
    - "<#00AA00><bold>></bold> <#AAFFAA>This spawner automatically generates items."

shop:
  enabled: true
  slot: 19
  price: 15000.0

spawner-block:
  material: SPAWNER

spawner-block-item:
  material: ZOMBIE_HEAD

gui-item:
  material: ZOMBIE_HEAD
  name: "<#AAFFAA>%amount% <#00AA00><bold>ᴢᴏᴍʙɪᴇ <white>Spawner <#AAFFAA>(Level %level%)"
  lore:
    - ""
    - "<#00AA00><bold>></bold> <#AAFFAA>Next Spawn: <#00AA00>%next-spawn% seconds"
    - ""
    - "<#00AA00>ꜱᴛᴏʀᴀɢᴇ"
    - " <#555555>❙ <#FFFFFF>XP Storage: <#00AA00>%xp-bar% <#AAAAAA>(%xp-percentage%%)"
    - " <#555555>❙ <#FFFFFF>Loot Slots: <#00AA00>%slots-bar% <#AAAAAA>(%slots-percentage%%)"
    - ""

hologram:
  enabled: true
  height: 1.3
  lines:
    - "<#FFFFFF>%amount% <#00AA00><bold>ᴢᴏᴍʙɪᴇ <white>Spawner <#AAFFAA>(Level %level%)"
    - ""
    - "<#FFFFFF>XP Storage: <#AAFFAA>%xp-bar% (%xp-percentage%%)"
    - "<#FFFFFF>Loot Slots: <#AAFFAA>%slots-bar% (%slots-percentage%%)"
    - ""
    - "<#AAFFAA>Spawning in <bold>></bold> <#FFFFFF>%next-spawn% seconds"

levels:
  price-calculation:
    type: "formula"
    formula: "%level% * 120"
    manual:
      '1': "120"
      '2': "240"
      '3': "360"
      '4': "480"
      '5': "600"
  upgrades:
    1:
      speed: 15-20
      storage:
        xp: 500
        slots: 9
      loot:
        experience: 5
        type: loot-table
        loot-table:
          value: "entities/zombie"
          multiplier: 1
        manual:
          - chance: 100
            drops: 1-3
            item:
              material: ROTTEN_FLESH
          - chance: 1
            drops: 1
            item:
              material: IRON_INGOT
    2:
      speed: 12-15
      storage:
        xp: 800
        slots: 18
      loot:
        experience: 5-10
        type: loot-table
        loot-table:
          value: "entities/zombie"
          multiplier: 1.3
        manual:
          - chance: 100
            drops: 1-3
            item:
              material: ROTTEN_FLESH
          - chance: 3
            drops: 1
            item:
              material: IRON_INGOT
    3:
      speed: 9-12
      storage:
        xp: 1100
        slots: 27
      loot:
        experience: 10-20
        type: loot-table
        loot-table:
          value: "entities/zombie"
          multiplier: 1.6
        manual:
          - chance: 100
            drops: 1-3
            item:
              material: ROTTEN_FLESH
          - chance: 5
            drops: 1
            item:
              material: IRON_INGOT
    4:
      speed: 6-9
      storage:
        xp: 2000
        slots: 36
      loot:
        experience: 20-30
        type: loot-table
        loot-table:
          value: "entities/zombie"
          multiplier: 1.9
        manual:
          - chance: 100
            drops: 1-3
            item:
              material: ROTTEN_FLESH
          - chance: 7
            drops: 1
            item:
              material: IRON_INGOT
    5:
      speed: 3-6
      storage:
        xp: 3200
        slots: 45
      loot:
        experience: 30-50
        type: loot-table
        loot-table:
          value: "entities/zombie"
          multiplier: 2.2
        manual:
          - chance: 100
            drops: 1-3
            item:
              material: ROTTEN_FLESH
          - chance: 9
            drops: 1
            item:
              material: IRON_INGOT
```

</details>

Example GUI configuration (there are 5 different configurable guis)

<details>

<summary>gui/spawner.yml</summary>

```yaml
title: "<#333333>Spawner Control Panel"
size: 54

filler:
  enabled: true
  material: GRAY_STAINED_GLASS_PANE

items:
  info:
    slot: 22

  collect:
    slot: 45
    material: HOPPER
    name: "<#00aeff><bold>Collect Loot</bold>"
    lore:
      - "<dark_gray>▪ <gray>Items Stored: <white>%stored% <gray>/ <white>%max%"
      - ""
      - "<#00aeff>▶ <white>Click to open Storage"

  withdraw:
    slot: 53
    material: EXPERIENCE_BOTTLE
    name: "<#00aeff><bold>Withdraw XP</bold>"
    lore:
      - "<dark_gray>▪ <gray>XP Stored: <white>%stored% <gray>/ <white>%max%"
      - ""
      - "<#00aeff>▶ <white>Click to Claim XP"

  upgrade:
    slot: 49
    material: NETHER_STAR

    name-maxed: "<red><bold>MAX LEVEL REACHED</bold>"
    lore-maxed:
      - "<gray>This spawner is fully upgraded!"

    name-available: "<#00aeff><bold>UPGRADE <gray>(<white>%current% <#00aeff>➔ <white>%next%<gray>)"
    lore-available:
      - "<dark_gray>▪ <gray>Price: <white>%price% money"
      - ""
      - "<#00aeff>UPGRADES"
      - " <dark_gray>▪ <gray>Speed: <white>%cur-speed%s <#00aeff>➔ <white>%next-speed%s"
      - " <dark_gray>▪ <gray>Dropped XP: <white>%cur-xp% <#00aeff>➔ <white>%next-xp%"
      - " <dark_gray>▪ <gray>XP Storage: <white>%cur-max-xp% <#00aeff>➔ <white>%next-max-xp%"
      - " <dark_gray>▪ <gray>Loot Slots: <white>%cur-slots% <#00aeff>➔ <white>%next-slots%"
      - ""
      - "<#00aeff>▶ <white>Click to Upgrade Spawner"
```

</details>

### Safe edit flow

{% stepper %}
{% step %}

#### Stop or prepare your server

Avoid editing while active writes are happening.
{% endstep %}

{% step %}

#### Back up the files

Save a copy before changing values.
{% endstep %}

{% step %}

#### Edit one section at a time

Change small pieces first.
{% endstep %}

{% step %}

#### Apply the changes

Reload plugin.
{% endstep %}

{% step %}

#### Test the result

Check logs and confirm the feature works in game.
{% endstep %}
{% endstepper %}


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://vortexstudio-1.gitbook.io/vortexstudio-docs/vxspawners/configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
