# BentoBox {$version} configuration file.
# 
# This configuration file contains settings that mainly apply to or manage the following elements:
#  * Data storage
#  * Gamemodes (commands, ...)
#  * Internet connectivity (web-based content-enriched features, ...)
# 
# Note that this configuration file is dynamic:
#  * It gets updated with the newest settings and comments after BentoBox loaded its settings from it.
#  * Upon updating BentoBox, new settings will be automatically added into this configuration file.
#     * Said settings are distinguishable by a dedicated comment, which looks like this:
#        Added since X.Y.Z.
#     * They are provided with default values that should not cause issues on live production servers.
#  * You can however edit this file while the server is online.
#    You will therefore need to run the following command in order to take the changes into account: /bentobox reload.
# 
# Here are a few pieces of advice before you get started:
#  * You should check out our Wiki, which may provide you useful tips or insights about BentoBox's features.
#     Link: https://github.com/BentoBoxWorld/BentoBox/wiki
#  * You should edit this configuration file while the server is offline.
#  * Moreover, whenever you update BentoBox, you should do so on a test server first.
#     This will allow you to configure the new settings beforehand instead of applying them inadvertently on a live production server.
general:
  # Default language for new players.
  # This is the filename in the locale folder without .yml.
  # If this does not exist, the default en-US will be used.
  default-language: en-US
  # Use economy or not. If true, an economy plugin is required. If false, no money is used or given.
  # If there is no economy plugin present anyway, money will be automatically disabled.
  use-economy: true
  database:
    # JSON, MYSQL, MARIADB, MONGODB, SQLITE, POSTGRESQL and YAML(deprecated).
    # Transition database options are:
    #   YAML2JSON, YAML2MARIADB, YAML2MYSQL, YAML2MONGODB, YAML2SQLITE
    #   JSON2MARIADB, JSON2MYSQL, JSON2MONGODB, JSON2SQLITE, JSON2POSTGRESQL
    #   MYSQL2JSON, MARIADB2JSON, MONGODB2JSON, SQLITE2JSON, POSTGRESQL2JSON
    # If you need others, please make a feature request.
    # Minimum required versions:
    #    MySQL versions 5.7 or later
    #    MariaDB versions 10.2.3 or later
    #    MongoDB versions 3.6 or later
    #    SQLite versions 3.28 or later
    #    PostgreSQL versions 9.4 or later
    # Transition options enable migration from one database type to another. Use /bbox migrate.
    # YAML and JSON are file-based databases.
    # MYSQL might not work with all implementations: if available, use a dedicated database type (e.g. MARIADB).
    # BentoBox uses HikariCP for connecting with SQL databases.
    # If you use MONGODB, you must also run the BSBMongo plugin (not addon).
    # See https://github.com/tastybento/bsbMongo/releases/.
    # You can find more details in this video: https://youtu.be/FFzCk5-y7-g
    type: JSON
    host: localhost
    # Port 3306 is MySQL's default. Port 27017 is MongoDB's default.
    port: 3306
    name: bentobox
    username: username
    password: password
    # How often the data will be saved to file in mins. Default is 5 minutes.
    # This helps prevent issues if the server crashes.
    # Data is also saved at important points in the game.
    backup-period: 5
    # How many players will be saved in one tick. Default is 20
    # Reduce if you experience lag while saving.
    # Do not set this too low or data might get lost!
    max-saved-players-per-tick: 20
    # How many islands will be saved in one tick. Default is 20
    # Reduce if you experience lag while saving.
    # Do not set this too low or data might get lost!
    max-saved-islands-per-tick: 20
    # Number of active connections to the SQL database at the same time.
    # Default 10.
    # Added since 1.21.0.
    max-pool-size: 10
    # Enable SSL connection to MongoDB, MariaDB, MySQL and PostgreSQL databases.
    # Added since 1.12.0.
    use-ssl: false
    # Database table prefix. Adds a prefix to the database tables. Not used by flatfile databases.
    # Only the characters A-Z, a-z, 0-9 can be used. Invalid characters will become an underscore.
    # Set this to a unique value if you are running multiple BentoBox instances that share a database.
    # Be careful about length - databases usually have a limit of 63 characters for table lengths
    # Added since 1.13.0.
    prefix-character: ''
    # Custom connection datasource properties that will be applied to connection pool.
    # Check available values to your SQL driver implementation.
    # Example: ")
    #   custom-properties:
    #     cachePrepStmts: 'true'
    #     prepStmtCacheSize: '250'
    #     prepStmtCacheSqlLimit: '2048'
    # Added since 1.21.0.
    custom-properties: {}
    # MongoDB client connection URI to override default connection options.
    # See: https://docs.mongodb.com/manual/reference/connection-string/
    # Added since 1.14.0.
    mongodb-connection-uri: ''
  # Allow FTB Autonomous Activator to work (will allow a pseudo player [CoFH] to place and break blocks and hang items)
  # Add other fake player names here if required
  # /!\ This feature is experimental and might not work as expected or might not work at all.
  fakeplayers:
  - '[CoFH]'
panel:
  # Toggle whether panels should be closed or not when the player clicks anywhere outside of the inventory view.
  close-on-click-outside: true
  # Defines the Material of the item that fills the gaps (in the header, etc.) of most panels.
  # Added since 1.14.0.
  filler-material: LIGHT_BLUE_STAINED_GLASS_PANE
  # Toggle whether player head texture should be gathered from Mojang API or mc-heads.net cache server.
  # Mojang API sometime may be slow and may limit requests to the player data, so this will allow to
  # get player heads a bit faster then Mojang API.
  # Added since 1.16.0.
  use-cache-server: true
  # Defines how long player skin texture link is stored into local cache before it is requested again.
  # Defined value is in the minutes.
  # Value 0 will not clear cache until server restart.
  # Added since 1.14.1.
  head-cache-time: 60
  # Defines a number of player heads requested per tasks.
  # Setting it too large may lead to temporarily being blocked from head gatherer API.
  # Added since 1.16.0.
  heads-per-call: 9
  # Defines a number of ticks between each player head request task.
  # Setting it too large may lead to temporarily being blocked from head gatherer API.
  # Added since 1.16.0.
  # /!\ In order to apply the changes made to this option, you must restart your server. Reloading BentoBox or the server won't work.
  ticks-between-calls: 10
logs:
  # Toggle whether superflat chunks regeneration should be logged in the server logs or not.
  # It can be spammy if there are a lot of superflat chunks to regenerate.
  # However, as superflat chunks regeneration can be performance-intensive, it is recommended to keep
  # this setting set to true, as it will help you know if there are regenerations taking place.
  # Added since 1.2.0.
  clean-super-flat-chunks: true
  # Toggle whether downloading data from GitHub should be logged in the server logs or not.
  # Added since 1.5.0.
  github-download-data: true
island:
  cooldown:
    time:
      # How long a player must wait until they can rejoin a team island after being kicked in minutes.
      # This slows the effectiveness of players repeating challenges
      # by repetitively being invited to a team island.
      invite: 60
      # How long a player must wait until they can coop a player in minutes.
      coop: 5
      # How long a player must wait until they can trust a player in minutes.
      trust: 5
      # How long a player must wait until they can ban a player after unbanning them. In minutes.
      ban: 10
      # How long a player must wait before they can reset their island again in seconds.
      reset: 300
    options:
      # Whether the reset cooldown should be applied when the player creates an island for the first time or not.
      # Added since 1.2.0.
      set-reset-cooldown-on-create: true
  confirmation:
    # Time in seconds that players have to confirm sensitive commands, e.g. island reset.
    time: 10
    commands:
      # Ask the player to confirm the command he is using by typing it again.
      kick: true
      leave: true
      reset: true
    # Ask the recipient to confirm trust or coop invites.
    # Team invites will always require confirmation, for safety concerns.
    # Added since 1.8.0.
    invites: false
  delay:
    # Time in seconds that players have to stand still before teleport commands activate, e.g. island go.
    time: 0
  name:
    # Sets the minimum length an island custom name is required to have.
    min-length: 4
    # Sets the maximum length an island custom name cannot exceed.
    max-length: 20
    # Requires island custom names to be unique in the gamemode the island is in.
    # As a result, only one island per gamemode are allowed to share the same name.
    # Note that island names are purely cosmetics and are not used as a way to programmatically identify islands.
    # Added since 1.7.0.
    uniqueness: false
  # Remove hostile mob on teleport box radius
  # If hostile mobs are cleared on player teleport, then this sized box will be cleared
  # around the player. e.g. 5 means a 10 x 10 x 10 box around the player
  # Be careful not to make this too big. Does not cover standard nether or end teleports.
  # Added since 1.6.0.
  clear-radius: 5
  # Minimum nether portal search radius. If this is too low, duplicate portals may appear.
  # Vanilla default is 128.
  # Added since 1.16.2.
  portal-search-radius: 64
  # Number of blocks to paste per tick when pasting blueprints.
  # Smaller values will help reduce noticeable lag but will make pasting take slightly longer.
  # On the contrary, greater values will make pasting take less time, but this benefit is quickly severely impacted by the
  # resulting amount of chunks that must be loaded to fulfill the process, which often causes the server to hang out.
  paste-speed: 64
  # Island deletion: Number of chunks per world to regenerate per second.
  # If there is a nether and end then 3x this number will be regenerated per second.
  # Smaller values will help reduce noticeable lag but will make deleting take longer.
  # A setting of 0 will leave island blocks (not recommended).
  # Added since 1.7.0.
  delete-speed: 100
  deletion:
    # Toggles whether islands, when players are resetting them, should be kept in the world or deleted.
    # * If set to 'true', whenever a player resets his island, his previous island will become unowned and won't be deleted from the world.
    #   You can, however, still delete those unowned islands through purging.
    #   On bigger servers, this can lead to an increasing world size.
    #   Yet, this allows admins to retrieve a player's old island in case of an improper use of the reset command.
    #   Admins can indeed re-add the player to his old island by registering him to it.
    # * If set to 'false', whenever a player resets his island, his previous island will be deleted from the world.
    #   This is the default behaviour.
    # Added since 1.13.0.
    keep-previous-island-on-reset: false
    # Toggles how the islands are deleted.
    # * If set to 'false', all islands will be deleted at once.
    #   This is fast but may cause an impact on the performance
    #   as it'll load all the chunks of the in-deletion islands.
    # * If set to 'true', the islands will be deleted one by one.
    #   This is slower but will not cause any impact on the performance.
    # Added since 1.19.1.
    slow-deletion: false
  # By default, If the destination is not safe, the plugin will try to search for a safe spot around the destination,
  # then it will try to expand the y-coordinate up and down from the destination.
  # This setting limits how far the y-coordinate will be expanded.
  # If set to 0 or lower, the plugin will not expand the y-coordinate.
  # Added since 1.19.1.
  safe-spot-search-vertical-range: 400
  # By default, if the destination is not safe, the plugin will try to search for a safe spot around the destination.
  # This allows to change the distance for searching this spot. Larger value will mean longer position search.
  # This value is also used for valid nether portal linking between dimension.
  # Added since 1.21.0.
  safe-spot-search-range: 16
web:
  github:
    # Toggle whether BentoBox can connect to GitHub to get data about updates and addons.
    # Disabling this will result in the deactivation of the update checker and of some other
    # features that rely on the data downloaded from the GitHub API.
    # It does not send any data.
    # Added since 1.5.0.
    download-data: true
    # Time in minutes between each connection to the GitHub API.
    # This allows for up-to-the-minute information gathering.
    # However, as the GitHub API data does not get updated instantly, this value cannot be set to less than 60 minutes.
    # Setting this to 0 will make BentoBox download data only at startup.
    # Added since 1.5.0.
    connection-interval: 120
