Skip to content

Configuration Guide

Encho edited this page Aug 19, 2023 · 25 revisions

See this page for a better version of this guide with anchor links


account {type: object}

  • username {type: string} : The in-game playername of the account
  • password {type: string} {default: ""} : The password of the account (only required for Mojang accounts, leave it empty for Microsoft accounts. Microsoft accounts will just get instructions in the console to put a token into microsoft.com/link
  • auth {type: string} {default: "microsoft"} : Authentication type (options: 'microsoft', 'mojang', 'offline')

discord {type: object}

  • active {type: boolean} {default: false} : Whether to send Discord webhooks
  • webhook {type: object}
    • spam {type: string} {default: ""} : Url of webhook to relay position in queue, new tunnels, connects/disconnects, and other spam
    • livechat {type: string} {default: ""} : Url of webhook to relay livechat
    • status {type: string} {default: ""} : Url of webhook to relay pertinent info for connecting and nothing else (e.g. joining server, low queue position)
  • color {type: number} {default: 2123412} : Color of Discord embeds sent to the webhooks in decimal value (you can use convertingcolors.com to find the decimal value of a color you want)
  • id {type: string} {default: 0} : ID of the Discord user or role to ping when below the queueThreshold

queueThreshold {type: number} {default: 21} : Minimum queue position before toast notifications & Discord pings start getting sent

reconnectInterval {type: number} {default: 69} : Time (in seconds) between each reconnection attempt (see: How to Auto-Reconnect with Supervisor)

uncleanDisconnectInterval {type: number} {default: 196} : Time (in seconds) proxy will go without getting a single packet from 2B2T before assuming it was uncleanly disconnected and initiating a reconnect attempt

log {type: object}

  • active {type: object} : Settings for which logging categories should be enabled
    • error {type: boolean} {default: true} : Whether to log errors
    • proxy {type: boolean} {default: true} : Whether to log proxy status (e.g. connecting to server, starting Mineflayer, etc.)
    • chat {type: boolean} {default: true} : Whether to log chat
    • bridgeClientPackets {type: boolean} {default: true} : Whether to log packets being sent from the controller to the proxy
    • serverPackets {type: boolean} {default: true} : Whether to log packets being sent from 2b2t to the proxy
    • mineflayer {type: boolean} {default: false} : Whether to log high-level Mineflayer events, if the Mineflayer bot is active (e.g. player join/leave, items, etc.)
  • cutoff {type: number} {default: 69000} : Maximum size a log file can be (in bytes) before it gets split up
  • packetFilters {type: object} : Settings for which packets we shouldn't log
    • server {type: array} {default: ["map","map_chunk","player_info","entity_metadata","entity_velocity","entity_move_look","entity_look","update_time","world_particles","unload_chunk","teams","rel_entity_move","entity_head_rotation","entity_update_attributes","block_change"]} : Packets being sent from 2b2t to not log
    • bridgeClient {type: array} {default: ["position","look","position_look","arm_animation","keep_alive"]} : Packets being sent from the controller to not log
  • compression {type: object} : Settings for log compression. Tweak with caution. The default options maximize memory usage for the fastest speed
    • active {type: boolean} {default: false} : [Warning, Event Thread-Blocking!] Whether to compress log files with Gzip. Leave this off unless you have a really good reason to enable it
    • level {type: number} {default: 1} : How much compression to apply between 1 and 9. Higher values result in better compression ratio at the expense of speed ([Warning, Event Thread-Blocking!])
    • memLevel {type: number} {default: 9} : How much memory to allocate to the internal compression state between 1 and 9. Higher values result in better compression ratio and speed at the expense of memory usage
    • windowBits {type: number} {default: 15} : How much memory to allocate to the history buffer between 8 and 15. Higher values result in better compression ratio at the expense of memory usage
  • alwaysIncrement {type: boolean} {default: false} : Whether to increment the log file every session (can lead to thousands of 1kb log files in production, but is pretty useful when rapidly testing during development)

server {type: object} : Settings for how the proxy connects to the server

  • host {type: string} {default: "connect.2b2t.org"} : Address of the server to connect to
  • version {type: string} {default: "1.12.2"} : Version of Minecraft the server is on
  • port {type: number} {default: 25565} : Port of the server to connect to

proxy {type: object} : Settings for how you connect to the proxy

  • active {type: boolean} {default: true} : Whether to allow players to control the account by connecting through a tunnel
  • whitelist {type: array} : Playernames of accounts that are allowed to connect to the proxy
  • onlineMode {type: boolean} {default: true} : Whether to enable online-mode on the proxy. This probably should never be touched
  • loopbackAddress {type: string} {default: "127.0.0.1"} : Loopback address to connect to the proxy. (options: '127.0.0.1', 'localhost', '0.0.0.0', '::1')
  • port {type: number} {default: 25565} : Port on the machine to connect to the proxy

ngrok {type: object} : Settings for ngrok tunneling

  • active {type: boolean} {default: false} : Whether to create an ngrok tunnel
  • authtoken {type: string} {default: ""} : The auth token for your Ngrok.io account
  • region {type: string} {default: "us"} : Tunnel region (options: 'us', 'eu', 'au', 'ap', 'sa', 'jp', or 'in')

mineflayer {type: object} : Settings for the mineflayer bot

  • active {type: boolean} {default: true} : Whether to enable Mineflayer
  • autoQueueMainInterval {type: number} {default: 690} : Time (in seconds) between every /queue main command
  • killAura {type: object} : Settings for killaura
    • interval {type: number} {default: 0.69} : Time (in seconds) between every attack attempt
    • blacklist {type: array} {default: ["zombie_pigman","enderman"]} : Array of mobs that will not be attacked
  • autoEat {type: object} : Settings for autoeat
    • priority {type: string} {default: "saturation"} : What type of food to prioritize eating (options: 'saturation', 'foodPoints', 'effectiveQuality')
    • startAt {type: number} {default: 19} : Hunger level at which to start eating
    • eatingTimeout {type: number} {default: 6969} : Maximum time (in ms) the proxy will attempt to eat an item before giving up
    • bannedFood {type: array} {default: ["rotten_flesh","pufferfish","chorus_fruit","poisonous_potato","spider_eye"]} : Foods that will not be eaten
    • ignoreInventoryCheck {type: boolean} {default: false} : Whether to disable inventory window click confirmation as a dirty hack to get around ViaBackwards' protocol noncompliance
    • checkOnItemPickup {type: boolean} {default: true} : Whether to attempt to eat food that's picked up when below the startAt threshold
    • offhand {type: boolean} {default: false} : Whether to use the offhand slot to eat food
    • equipOldItem {type: boolean} {default: true} : Whether to reequip the previously held item after eating
  • antiAfk {type: object} : Settings for antiafk
    • actions {type: array} {default: ["rotate"]} : Actions the proxy can do (options: 'rotate', 'walk', 'jump', 'jumpWalk', 'swingArm', 'breakBlock')
    • fishing {type: boolean} {default: false} : Whether the proxy will fish. The account must be standing in water and have a fishing rod to autofish.
    • chatting {type: boolean} {default: false} : Whether the proxy will chat
    • chatMessages {type: array} {default: ["!pt","!queue"]} : Chat messages that the proxy will send if chatting is enabled
    • chatInterval {type: number} {default: 690420} : Time (in milliseconds) between each chat message

experimental {type: object} : Settings for experimental features that may be more unstable in resource usage and/or server and version parity

  • spoofPlayerInfo {type: object}
  • spoofPing {type: object}
    • active {type: boolean} {default: false} : Whether to spoof the Status Response packet when pinging the proxy server
    • noResponse {type: boolean} {default: false} : Whether to cancel the response entirely. Otherwise, the packet described in fakeResponse will be sent.
    • fakeResponse {type: object}
      • version {type: object}
        • name {type: string} {default: "1.12.2"} : Spoofed server version
        • protocol {type: number} {default: 340} : Spoofed protocol number
      • players {type: object}
        • max {type: number} {default: 20} : Spoofed max players
        • online {type: number} {default: 0} : Spoofed number of players online
        • sample {type: array} {default: []}
          • name {type: string} : Spoofed playername
          • id {type: string} : Spoofed player UUID
      • description {type: object}
        • text {type: string} {default: "A Minecraft server"} : Spoofed MOTD
      • favicon {type: string} {default: "undefined"} : Spoofed Base64-encoded 64x64 png favicon
  • disconnectIfNoController {type: object}
    • active {type: boolean} {default: false} : Whether to disconnect if noone is controlling the proxy disconnectIfNoController.delay seconds after a controller disconnects from the proxy while it isn't in queue
    • delay {type: number} {default: 7} : How long to wait (in seconds) after a controller disconnects from the proxy while it isn't in queue before disconnecting from the server
  • worldDownloader {type: object}
    • active {type: boolean} {default: false} : [Warning, Event Thread-Blocking!] Whether to use the experimental world downloader
    • compression {type: object} : Settings for packet archive compression. Tweak with caution. The default options maximize memory usage for the fastest speed
      • level {type: number} {default: 1} : How much compression to apply between 1 and 9. Higher values result in better compression ratio at the expense of speed ([Warning, Event Thread-Blocking!])
      • memLevel {type: number} {default: 9} : How much memory to allocate to the internal compression state between 1 and 9. Higher values result in better compression ratio and speed at the expense of memory usage
      • windowBits {type: number} {default: 15} : How much memory to allocate to the history buffer between 8 and 15. Higher values result in better compression ratio at the expense of memory usage
  • maxThreadpool {type: object}
    • active {type: boolean} {default: true} : Whether to set UV_THREADPOOL_SIZE to use all possible CPU logic cores

waitForControllerBeforeConnect {type: boolean} {default: false} : Whether the proxy will wait for someone to take control before it connects to the server

notify {type: object} : Settings for what the proxy will send notifications about

  • whenJoining {type: boolean} {default: true} : Whether to send a toast notification and status webhook message when the proxy joins the server from queue
  • whenBelowQueueThreshold {type: boolean} {default: true} : Whether to send a toast notification and status webhook message when the proxy dips below position queueThreshold in queue
  • whenControlling {type: boolean} {default: false} : Whether to send a status webhook message when a controller connects and disconnects from the proxy

noCliGui {type: boolean} {default: false} : Whether to disable the cli gui

coordination {type: object} : Settings for coordinating multiple proxies

  • active {type: boolean} {default: false} : Whether to use a master config file and coordinator
  • path {type: string} {default: "./../"} : Path to the folder where the shared master-config.json and coordinator.flag files should go