# Configuration file

~CONFIG_VERSION: 1.89.2

##########################################################################################################
# execution
#--------------------------------------------------------------------------------------------------------#
# Controls execution behaviour of computers. This is largely intended for fine-tuning servers, and generally shouldn't need to be touched
##########################################################################################################

execution {
    # Set the number of threads computers can run on. A higher number means more computers can run at once, but may induce lag.
    # Please note that some mods may not work with a thread count higher than 1. Use with caution.
    I:computer_threads=1

    # The maximum time that can be spent executing tasks in a single tick, in milliseconds.
    # Note, we will quite possibly go over this limit, as there's no way to tell how long a will take - this aims to be the upper bound of the average time.
    I:max_main_global_time=10

    # The ideal maximum time a computer can execute for in a tick, in milliseconds.
    # Note, we will quite possibly go over this limit, as there's no way to tell how long a will take - this aims to be the upper bound of the average time.
    I:max_main_computer_time=5
}


general {
    # The disk space limit for computers and turtles, in bytes
    I:computer_space_limit=1000000

    # The disk space limit for floppy disks, in bytes
    I:floppy_space_limit=125000

    # Set how many files a computer can have open at the same time. Set to 0 for unlimited.
    I:maximum_open_files=128

    # Set this to true to disable Lua 5.1 functions that will be removed in a future update. Useful for ensuring forward compatibility of your programs now.
    B:disable_lua51_features=false

    # A comma separated list of default system settings to set on new computers. Example: "shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false" will disable all autocompletion
    S:default_computer_settings=

    # Enable Lua's debug library. This is sandboxed to each computer, so is generally safe to be used by players.
    B:debug_enabled=true

    # Log exceptions thrown by peripherals and other Lua objects.
    # This makes it easier for mod authors to debug problems, but may result in log spam should people use buggy methods.
    B:log_computer_errors=false

    # Require players to be in creative mode and be opped in order to interact with command computers.This is the default behaviour for vanilla's Command blocks.
    B:command_require_creative=true
}


##########################################################################################################
# http
#--------------------------------------------------------------------------------------------------------#
# Controls the HTTP API
##########################################################################################################

http {
    # Enable the "http" API on Computers (see "allowed_domains" and "blocked_domains" for more fine grained control than this)
    B:enabled=true

    # Enable use of http websockets. This requires the "http.enabled" option to also be true.
    B:websocket_enabled=true

    # A list of wildcards for domains or IP ranges that can be accessed through the "http" API on Computers.
    # Set this to "*" to access to the entire internet. Example: "*.pastebin.com" will restrict access to just subdomains of pastebin.com.
    # You can use domain names ("pastebin.com"), wildcards ("*.pastebin.com") or CIDR notation ("127.0.0.0/8").
    S:allowed_domains <
        *
     >

    # A list of wildcards for domains or IP ranges that cannot be accessed through the "http" API on Computers.
    # If this is empty then all explicitly allowed domains will be accessible. Example: "*.github.com" will block access to all subdomains of github.com.
    # You can use domain names ("pastebin.com"), wildcards ("*.pastebin.com") or CIDR notation ("127.0.0.0/8").
    S:blocked_domains <
        127.0.0.0/8
        10.0.0.0/8
        172.16.0.0/12
        192.168.0.0/16
        fd00::/8
     >

    # The period of time (in milliseconds) to wait before a HTTP request times out. Set to 0 for unlimited.
    I:timeout=30000

    # The number of http requests a computer can make at one time. Additional requests will be queued, and sent when the running requests have finished. Set to 0 for unlimited.
    I:max_requests=16

    # The maximum size (in bytes) that a computer can download in a single request. Note that responses may receive more data than allowed, but this data will not be returned to the client.
    I:max_download=16777216

    # The maximum size (in bytes) that a computer can upload in a single request. This includes headers and POST text.
    I:max_upload=4194304

    # The number of websockets a computer can have open at one time. Set to 0 for unlimited.
    I:max_websockets=4

    # The maximum size (in bytes) that a computer can send or receive in one websocket packet.
    I:max_websocket_message=131072
}


##########################################################################################################
# peripheral
#--------------------------------------------------------------------------------------------------------#
# Various options relating to peripherals.
##########################################################################################################

peripheral {
    # Enable Command Block peripheral support
    B:command_block_enabled=false

    # The range of Wireless Modems at low altitude in clear weather, in meters
    I:modem_range=64

    # The range of Wireless Modems at maximum altitude in clear weather, in meters
    I:modem_high_altitude_range=384

    # The range of Wireless Modems at low altitude in stormy weather, in meters
    I:modem_range_during_storm=64

    # The range of Wireless Modems at maximum altitude in stormy weather, in meters
    I:modem_high_altitude_range_during_storm=384

    # Maximum amount of notes a speaker can play at once
    I:max_notes_per_tick=8

    # The renderer to use for monitors. Generally this should be kept at "best" - if monitors have performance issues, you may wish to experiment with alternative renderers.
    S:monitor_renderer=gui.computercraft:config.peripheral.monitor_renderer.best

    # The limit to how much monitor data can be sent *per tick*. Note:
    #  - Bandwidth is measured before compression, so the data sent to the client is smaller.
    #  - This ignores the number of players a packet is sent to. Updating a monitor for one player consumes the same bandwidth limit as sending to 20.
    #  - A full sized monitor sends ~25kb of data. So the default (1MB) allows for ~40 monitors to be updated in a single tick. 
    # Set to 0 to disable.
    I:monitor_bandwidth=1000000
}


##########################################################################################################
# turtle
#--------------------------------------------------------------------------------------------------------#
# Various options relating to turtles.
##########################################################################################################

turtle {
    # Set whether Turtles require fuel to move
    B:need_fuel=true

    # The fuel limit for Turtles
    I:normal_fuel_limit=20000

    # The fuel limit for Advanced Turtles
    I:advanced_fuel_limit=100000

    # If set to true, Turtles will be unable to build, dig, or enter protected areas (such as near the server spawn point)
    B:obey_block_protection=true

    # If set to true, Turtles will push entities out of the way instead of stopping if there is space to do so
    B:can_push=true

    # A list of turtle actions which are disabled.
    S:disabled_actions <
     >
}


