# +----------------------------------------------------------------------------------------------+
# |                                     General Settings                                         |
# |                                                                                              |
# |     Provides a set of generic settings which should apply to all accounts managed by         |
# |     the Impactor economy service.                                                            |
# +----------------------------------------------------------------------------------------------+

# This setting controls if users are capable of transfering currency between two accounts
# via commands or other functionality such as /pay. Currencies without this setting set
# follow this config option, allowing them to either be allowed for transfer or not.
allow-transfer-for-not-set = false

restrictions {
    enabled = true

    minimum-balance = "0.0"
    maximum-balance = "100000000000.0"

}

# +----------------------------------------------------------------------------------------------+
# |                                   Currency Definitions                                       |
# |                                                                                              |
# |     This section allows you to create your own currencies to use within Impactor's           |
# |     economy service.                                                                         |
# |                                                                                              |
# |     A currency is denoted by a key, indicating source of creation as well as the ideal       |
# |     name of the currency. This allows for similarly named currencies, so long as their       |
# |     keys are different.                                                                      |
# +----------------------------------------------------------------------------------------------+
currencies {

    # Creates a currency denoted by the unique key, "impactor:dollars"
    "impactor:dollars" {

        # Represents naming schemes for the currency when formatting balances in a non-condensed mode
        singular = Dollar
        plural = Dollars

        # Specifies the number of decimal places to format numerical values with
        decimals = 2

        # Indicates that this currency should be considered the primary/fallback currency
        primary = true

        # Indicates the amount of money a new account created under this currency should start with
        default-balance = 500.0

        # Specifies the symbol used for the currency
        symbol = "$"

        # States if this currency is capable of being transfered amongst holders
        transferable = true

        # Specifies the ways a currency can be formatted. The following tags are supplied in order to
        # properly display each individual component of the currency:
        #
        # |=> symbol - The symbol for the currency
        # |=> amount - The money based value
        # |=> name   - The name of the currency, in either its singular or plural naming scheme
        formatting {
            condensed = "<green><symbol><amount>"
            expanded = "<yellow><amount> <gray><name>"
        }
    }
}

# +----------------------------------------------------------------------------------------------+ #
# |                                      Messaging Service                                       | #
# |                                                                                              | #
# | These settings specify how the native Impactor economy service will attempt to communicate   | #
# | across servers configured to the same messaging channels.                                    | #
# |                                                                                              | #
# | NOTE: These settings are only relative to Impactor's native service. Another service might   | #
# | not make use of networking.                                                                  | #
# +----------------------------------------------------------------------------------------------+ #
messaging {

    # Define which messaging service should be used by the plugin.
    #
    # - If enabled and configured, GTS will use the messaging service to inform other connected
    #   servers of changes.
    # - Data is NOT stored using this service. It is only used as a messaging platform.
    #
    # - If you decide to enable this feature, you should set "sync-minutes" to -1, as there is no need
    #   for LuckPerms to poll the database for changes.
    #
    # - Possible options:
    #   => pluginmsg Uses the plugin messaging channels to communicate with the proxy.
    #                LuckPerms must be installed on your proxy & all connected servers backend servers.
    #                Won't work if you have more than one proxy.
    #   => redis     Uses Redis pub-sub to push changes. Your server connection info must be configured
    #                below.
    #   => none      Disables the service. This will trigger GTS into single server mode, even when
    #                the multi-server setting is enabled
    messaging-service = "auto"

    # Settings for Redis
    # - Port 6379 is the default port used by Redis.
    # - If you wish to use a different port, set address to the following format: "host:port"
    redis {
        enabled = false
        addresses = [ "localhost" ]
        username = "default"
        password = ""
        useSSL = false
    }

}

# +----------------------------------------------------------------------------------------------+
# |                                       Storage Settings                                       |
# |                                                                                              |
# |     These settings govern how the plugin will maintain and manage its data set. Impactor     |
# |     offers a wide set of options when it comes to data management, and it provides you       |
# |     the freedom to choose exactly how you wish to have it control that data.                 |
# +----------------------------------------------------------------------------------------------+
storage {
    # How the plugin should store data
    #
    # - The various options are explained in more detail on the wiki:
    #   https://github.com/lucko/LuckPerms/wiki/Choosing-a-Storage-type
    #
    # - Possible options:
    #
    #   |  Remote databases - require connection information to be configured below
    #   |=> MySQL
    #   |=> MariaDB (preferred over MySQL)
    #   |=> PostgreSQL
    #
    #   |  Local databases - Databases which exist only locally
    #   |=> H2 (Default)
    #
    #   |  Readable & editable text files - don't require any extra configuration
    #   |=> JSON (.json files)
    #   |=> HOCON (.hocon)
    #   |=> YAML (.yaml)
    #
    # - The JSON flatfile provider is the default option.
    method = "json"

    # The following configuration block is used to define the connection paramters for
    # your selected storage provider.
    #
    # NOTE: These settings are only neccessary when using remote databases. JSON and other
    # local storage providers require no connection information. If you are using a local
    # storage provider option, you can ignore this section
    data {

        # Defines the address and port for the database
        # - The standard DB engine port is used by default
        #   (MySQL = 3306, PostgreSQL = 5432)
        # - Specify as "host:port" if you use a different port
        address = "localhost"

        # Specifies the name of the database to store Impactor data in.
        # - This database must already be created. Impactor will make no attempt to create the database
        #   for you.
        database = "minecraft"

        # Connection credentials for the database
        username = "root"
        password = ""

        # These settings apply to the MySQL/MariaDB connection pool.
        # - The default values will typically be suitable for the majority of users.
        # - Do not change these settings unless you know what you're doing!
        pool-settings {

            # Sets the maximum size of the MySQL/MariaDB connection pool.
            # - Basically, this value will determine the maximum number of actual
            # connections to the database backend.
            # - More information about determining the size of connection pools can be found here:
            #   https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
            maximum-pool-size = 10

            # Sets the minimum number of idle connections that the pool will try to maintain.
            # - For maximum performance and responsiveness to spike demands, it is recommended to not set
            #   this value and instead allow the pool to act as a fixed size connection pool.
            #   (set this value to the same as 'maximum-pool-size')
            minimum-idle = 10

            # This setting controls the maximum lifetime of a connection in the pool in milliseconds.
            # - The value should be at least 30 seconds less than any database or infrastructure imposed
            #   connection time limit.
            maximum-lifetime = 1800000 # 30 minutes

            # This setting controls the maximum number of milliseconds that the plugin will wait for a
            # connection from the pool, before timing out.
            connection-timeout = 5000 # 5 seconds

            # This setting allows you to define extra properties for connections.
            properties {
                useUnicode = true
                characterEncoding = "utf8"
            }
        }
    }

    # The prefix for all Impactor SQL tables.
    # - Change this if you want to use different tables for different servers
    table-prefix = "impactor_"
}