# Main configuration file for PocketMine-MP
# These settings are the ones that cannot be included in server.properties
# Some of these settings are safe, others can break your server if modified incorrectly
# New settings/defaults won't appear automatically in this file when upgrading.

settings:
  #Whether to send all strings translated to server locale or let the device handle them
  force-language: false
  shutdown-message: "Server closed"
  #Allow listing plugins via Query
  query-plugins: true
  #Enable plugin and core profiling by default
  enable-profiling: false
  #Will only add results when tick measurement is below or equal to given value (default 20)
  profile-report-trigger: 20
  #Number of AsyncTask workers.
  #Used for plugin asynchronous tasks, world generation, compression and web communication.
  #Set this approximately to your number of cores.
  #If set to auto, it'll try to detect the number of cores (or use 2)
  async-workers: auto
  #Whether to allow running development builds. Dev builds might crash, break your plugins, corrupt your world and more.
  #It is recommended to avoid using development builds where possible.
  enable-dev-builds: false

memory:
  #Global soft memory limit in megabytes. Set to 0 to disable
  #This will trigger low-memory-triggers and fire an event to free memory when the usage goes over this
  global-limit: 0

  #Main thread soft memory limit in megabytes. Set to 0 to disable
  #This will trigger low-memory-triggers and fire an event to free memory when the usage goes over this
  main-limit: 0

  #Main thread hard memory limit in megabytes. Set to 0 to disable
  #This will stop the server when the limit is surpassed
  main-hard-limit: 2048

  #AsyncWorker threads' hard memory limit in megabytes. Set to 0 to disable
  #This will crash the task currently executing on the worker if the task exceeds the limit
  #NOTE: THIS LIMIT APPLIES PER WORKER, NOT TO THE WHOLE PROCESS.
  async-worker-hard-limit: 256

  #Period in ticks to check memory (default 1 second)
  check-rate: 20

  #Continue firing low-memory-triggers and event while on low memory
  continuous-trigger: true

  #Only if memory.continuous-trigger is enabled. Specifies the rate in memory.check-rate steps (default 30 seconds)
  continuous-trigger-rate: 30

  garbage-collection:
    #Period in ticks to fire the garbage collector manually (default 30 minutes), set to 0 to disable
    #This only affects the main thread. Other threads should fire their own collections
    period: 36000

    #Fire asynchronous tasks to collect garbage from workers
    collect-async-worker: true

    #Trigger on low memory
    low-memory-trigger: true

  #Settings controlling memory dump handling.
  memory-dump:
    #Dump memory from async workers as well as the main thread. If you have issues with segfaults when dumping memory, disable this setting.
    dump-async-worker: true

  max-chunks:
    #Cap maximum render distance per player when low memory is triggered. Set to 0 to disable cap.
    chunk-radius: 4

    #Do chunk garbage collection on trigger
    trigger-chunk-collect: true

  world-caches:
    #Disallow adding to world chunk-packet caches when memory is low
    disable-chunk-cache: true
    #Clear world caches when memory is low
    low-memory-trigger: true


network:
  #Threshold for batching packets, in bytes. Only these packets will be compressed
  #Set to 0 to compress everything, -1 to disable.
  batch-threshold: 256
  #Compression level used when sending batched packets. Higher = more CPU, less bandwidth usage
  compression-level: 6
  #Use AsyncTasks for compression. Adds half/one tick delay, less CPU load on main thread
  async-compression: false
  #Experimental. Use UPnP to automatically port forward
  upnp-forwarding: false
  #Maximum size in bytes of packets sent over the network (default 1492 bytes). Packets larger than this will be
  #fragmented or split into smaller parts. Clients can request MTU sizes up to but not more than this number.
  max-mtu-size: 1492

debug:
  #If > 1, it will show debug messages in the console
  level: 1

player:
  #Choose whether to enable player data saving.
  save-player-data: true
  #If true, checks that joining players' Xbox user ID (XUID) match what was previously recorded.
  #This also prevents non-XBL players using XBL players' usernames to steal their data on servers with xbox-auth=off.
  verify-xuid: true
  anti-cheat:
    #If false, will try to prevent speed and noclip cheats. May cause movement issues.
    allow-movement-cheats: true

level-settings:
  #The default format that worlds will use when created
  default-format: pmanvil

chunk-sending:
  #To change server normal render distance, change view-distance in server.properties.
  #Amount of chunks sent to players per tick
  per-tick: 8
  #Radius of chunks that need to be sent before spawning the player
  spawn-radius: 4

chunk-ticking:
  #Max amount of chunks processed each tick
  per-tick: 40
  #Radius of chunks around a player to tick
  tick-radius: 3
  light-updates: false
  clear-tick-list: true
  #IDs of blocks not to perform random ticking on.
  disable-block-ticking:
    #- 2 # grass

chunk-generation:
  #Max. amount of chunks in the waiting queue to be populated
  population-queue-size: 32

ticks-per:
  autosave: 6000

auto-report:
  #Send crash reports for processing
  enabled: true
  send-code: true
  send-settings: true
  send-phpinfo: false
  use-https: true
  host: crash.pmmp.io

anonymous-statistics:
  #Sends anonymous statistics for data aggregation, plugin usage tracking
  enabled: false #TODO: re-enable this when we have a new stats host
  host: stats.pocketmine.net

auto-updater:
  enabled: true
  on-update:
    warn-console: true
    warn-ops: true
  #Can be development, alpha, beta or stable.
  preferred-channel: stable
  #If using a development version, it will suggest changing the channel
  suggest-channels: true
  host: update.pmmp.io

timings:
  #Choose the host to use for viewing your timings results.
  host: timings.pmmp.io

console:
  #Choose whether to enable server stats reporting on the console title.
  #NOTE: The title ticker will be disabled regardless if console colours are not enabled.
  title-tick: true

aliases:
  #Examples:
  #showtheversion: version
  #savestop: [save-all, stop]

worlds:
  #These settings will override the generator set in server.properties and allows loading multiple worlds
  #Example:
  #world:
  # seed: 404
  # generator: FLAT:2;7,59x1,3x3,2;1;decoration(treecount=80 grasscount=45)

plugins:
  #Setting this to true will cause the legacy structure to be used where plugin data is placed inside the --plugins dir.
  #False will place plugin data under plugin_data under --data.
  #This option exists for backwards compatibility with existing installations.
  legacy-data-dir: false