В связи с готовящимся официальным переименованием изданий Minecraft на вики потребуются значительные изменения.
Пока обсуждение ведётся на портале сообщества. Возможно, будет создан отдельный проект.

OpenComputers/Конфигурация мода

Материал из Minecraft Wiki
Перейти к: навигация, поиск

Файл настроек модификации OpenComputers находится в папке .minecraft\config. Он позволяет провести более тонкую настройку модификации.

Ниже приведен полный текст этого файла, с переводом комментариев на русский язык.


OpenComputers.cfg
# Конфигурации OpenComputers. Этот файл использует типизированный синтаксис HOCON.
# Вы можете включить подсветку кода Ruby, для простоты чтения конфигураций. 
# Обратите внимание, что этот файл перезаписывается когда вы запускаете игру!
# Изменения комментариев могут исчезнуть.
# Примечание: "KB" или "килобайт" означает 1024 байта.

opencomputers {

  # Настройки клиента. Отображение, производительность и т.д.
  client {

    # Это масштаб символов на экране. По умолчанию установлен на небольшое 
    # увеличение, во избежание
    fontCharScale=1.01

    # Максимальная дистанция, на которой рендерится текст на мониторах.
    # Рендеринг текста может отразиться на производительности, особенно,
    # если у вас много мониторов. Обратите внимание, что эта настройка
    # относится только к производительности на стороне клиента.
    maxScreenTextRenderDistance=20

    # Отображает названия роботов в виде меток сверху, когда вы рядом
    robotLabels=true

    # Расстояние, на котором текст на экранах начинает темнеть. Это
    # декоративный эффект, сделанный, чтобы текст не исчезал с мониторов 
    # внезапно. Не оказывает особенного эффекта на производительность.
    # Внимание: для отображения эффекта необходим OpenGL 1.4.
    screenTextFadeStartDistance=15

    # Громкость звуков мода. (Например — жужжание компьютера.)
    # Установка параметра в 0 — отключает звуки.
    soundVolume=1

    # Если вы предпочитаете не сглаженный текст на мониторах
    # (без анти-алиасинга) отключите этот параметр
    textAntiAlias=true

    # Применяется ли линейная фильтрация для текста на мониторах, когда
    # изменяется разрешение монитора, или игрок смотрит на текст издалека.
    # Функция сгладит текстуру, но символы могут плохо соединяться вместе.
    # (Например при отображении псевдографики)
    textLinearFiltering=false
  }

  # Параметры компьютеров, производительность серверов и безопасность.
  computer {

    # Активно ли используется сборщик мусора Lua каждый раз, перед запуском
    # Lua на компьютере. Это имеет два преимущества: во-первых, освобождается
    # оперативная память, и программы меньше рискуют ее переполнить. Во-вторых
    # программы могут точнее определять объем доступной памяти через
    # os.freeMemory() (в противном случае это значение может немного "скакать").
    # Недостатки: на это тратится немного больше ресурсов процессора.
    # Тем не менее, в условиях небольших объемов оперативной памяти по умолчанию,
    # этот параметр очень важен.
    activeGC=true

    # Позволяет ли загружать прекомпилированный байт-код через  Lua 'load',
    # или аналогичные функции (`loadfile`, `dofile`). Включайте это, только
    # если вы абсолютно уверены во всех пользователях вашего сервера и загружаемом
    # Lua-коде. Это может оказаться БОЛЬШОЙ УЯЗВИМОСТЬЮ, т.к. прекомпилированный 
    # код легко может содержать эксплойты и запускать произвольный код на реальном
    # сервере!
    # Итак: используйте это, только если вы знаете на что идете!
    allowBytecode=false

    # Это определяет, используются ли компьютеры только зарегистрированными
    # пользователями. По умолчанию, новый компьютер не имеет пользователей.
    # Т.е. он доступен для любого игрока. Аккаунтами можно управлять через 
    # Lua API (computer.addUser, computer.removeUser, computer.users).
    # Для пользователей доступно:
    #   — ввод с клавиатуры и тач-скрин
    #   — доступ к инвентарю
    #   — удаление блоков компьютера
    # Если параметр установлен в false, все компьютеры всегда будут доступны 
    # всем игрокам, вне зависимости от списка зарегистрированных пользователей.
    # См. также: `maxUsers` и `maxUsernameLength`.
    canComputersBeOwned=true

    # Количество компонентов, которые поддерживают ЦПУ разных уровней
    # Список должен содержать ровно три числа.
    cpuComponentCount=[
      8,
      12,
      16
    ]

    # Удаляется ли содержимое папки /tmp при "мягкой" перезагрузке
    # (при помощи computer.shutdown(true)). При выключении компьютера
    # или системном крахе, папка /tmp очищается в любом случае.
    eraseTmpOnReboot=false

    # Эта настройка используется для отслеживания ошибок, которые возникают
    # при вызове функций Lua. По умолчанию, сообщения об ошибках возвращаются
    # обратно в Lua. Если вы получили странную ошибку, или разрабатываете дополнение,
    # вы захотите получить подробный список ошибок. Включение этого параметра
    # позволяет вести подробный лог ошибок в игровом логе. По умолчанию, параметр
    # отключен, чтобы не спамить в лог сообщениями о незначительных
    # событиях вроде IllegalArgumentException.
    logCallbackErrors=false

    # Профилактическое ограничение на длину никнейма для пользователей компьютеров.
    # См. также: `canComputersBeOwned`.
    maxUsernameLength=32

    # Максимальное количество пользователей, которых можно зарегистрировать 
    # на одном компьютере. Параметр введен для того, чтобы компьютер не 
    # выделял тратил неограниченное количество памяти на регистрацию
    # бесконечного количества пользователей.
    # См. также: `canComputersBeOwned`.
    maxUsers=16

    # Этот параметр позволяет вам произвести точную настройку размеров RAM
    # на 64 битных машинах. (Когда сервер Minecraft запущен в 64 битной VM).
    # Для чего это нужно? Объекты занимают больше памяти в 64 битном окружении,
    # по сравнению с 32 битным, т.к. указатели и возможно некоторые числовые типы
    # имеют вдвое больший размер. Невозможно свести все к точному параметру, 
    # поэтому его необходимо подобрать. Если вы заметите, что значение параметра
    # не соответствует необходимому, поменяйте его и сообщите мне свои наблюдения!
    # Примечание: значения отображаемые computer.totalMemory и computer.freeMemory
    # всегда соответствуют заданным объемам установленных планок памяти. К примеру,
    # на компьютере с 64KB RAM, даже если они модифицированы этим параметром
    # до 96KB, computer.totalMemory вернет 64KB, а если там свободно 45KB, 
    # computer.freeMemory вернет 32KB.
    ramScaleFor64Bit=1.8

    # Объемы планок памяти разных уровней, в килобайтах. Список должен
    # содержать шесть значений, или будет проигнорирован.
    ramSizes=[
      64,
      96,
      128,
      256,
      512,
      1024
    ]

    # Время в секундах, которое компьютер ждет после загрузки локации, прежде
    # чем заработать. Сделано во избежание непрогрузки некоторых частей сети,
    # и прочих странных глюков.
    startupDelay=0.25

    # Общее количество потоков в компьютерах. Какое бы действие не произошло, 
    # например — получен сигнал, или истекло время таймера, оно попадает в
    # очередь рабочего потока. Большее число потоков уменьшит вероятность
    # блокирования события, но повысит нагрузку на систему.
    threads=4

    # Время в секундах, которое программа может работать вхолостую, пока ее не 
    # прервут принудительно.
    # Используется для того, чтобы избежать глупых или злоумышленных программ,
    # которые блокируют другие компьютеры, закрывая стартовый поток.
    # Этот параметр не влияет на уже запущенные компьютеры и будет применен
    # к ним только после перезагрузки.
    timeout=5
  }

  # Параметры файловой системы, производительность и баланс.
  filesystem {

    # Сохраняются ли данные постоянных файловых систем (таких как дисководы)
    # в буфер, который записывается на винчестер, только при сохранении 
    # игрового мира. Этот параметр влияет на все жесткие диски. Плюсы:
    # данные никогда не "рассинхронизируются" в случае краха игры.
    # Минусы: большее потребление оперативной памяти, т.к. все загруженные
    # файлы игра будет держать в памяти.
    bufferChanges=true

    # Базовый "вес" одного файла или папки в ограниченной файловой системе,
    # такой как жесткие диски. Когда вычисляется занятое пространство, это
    # значение добавляется к реальному весу файла (папки). Это сделано для того
    # чтобы пользователь не мог "спамить" в файловую систему бесконечным числом 
    # папок или файлов. При этом значение, возвращаемое функциями API всегда
    # отображает настоящий "вес" файла.
    fileCost=512

    # Размер дискет, в килобайтах.
    floppySize=512

    # Размеры трех поколений жестких дисков, в килобайтах. Список должен
    # содержать ровно три значения, иначе будет проигнорирован.
    hddSizes=[
      1024,
      2048,
      4096
    ]

    # Максимальное число файлов, которые каждый компьютер может держать открытыми
    # одновременно, на одну файловую систему. Поскольку файловые системы виртуальны,
    # этот параметр не сильно влияет на производительность.
    maxHandles=16

    # Максимальный размер блока, который может быть прочтен за один вызов
    # "read". Сделано для ограничения объемов памяти, которые Lua выделяет для
    # чтения файлов. Также влияет на производительность работы с файловой
    # системой.
    maxReadBuffer=2048

    # Размер временной файловой системы /tmp, которую предоставляет каждый
    # компьютер. Если установить отрицательное число, временная файловая система
    # не будет создана.
    tmpSize=64
  }

  # Настройки интернета, безопасность.
  internet {

    # Черный список доменов. Если имя домена в HTTP запросе совпадет с одним из
    # этих шаблонов, запрос будет блокирован. Все шаблоны в списке — регулярные
    # выражения, которые применяются только к имени хоста (домену) заданного URL.
    blacklist=[
      "^127\\.0\\.0\\.1$",
      "^10\\.\\d+\\.\\d+\\.\\d+$",
      "^192\\.\\d+\\.\\d+\\.\\d+$",
      "^localhost$"
    ]

    # Разрешены ли HTTP запросы интернет платами. Если разрешены,
    # метод 'request' интернет-компонента будет доступен.
    enableHttp=true

    # Разрешены ли TCP соединения через интернет плату. Если разрешены,
    # метод 'connect' интернет-компонента будет доступен.
    enableTcp=true

    # Максимальное число одновременных TCP подключений на одну интернет плату.
    maxTcpConnections=4

    # Число потоков, которые используются для обработки HTTP запросов
    # в фоне. Чем оно выше, тем больше подключений может обрабатывать компьютер
    # одновременно, и меньше время ожидания.
    requestThreads=4

    # Время в секундах, ожидания ответа на запрос, прежде чем произойдет 
    # таймаут и будет возвращено сообщение об ошибке. Если это 0 (по умолчанию),
    # запрос будет обрабатываться вечно.
    requestTimeout=0

    # Белый список доменов. Запросы могут быть посланы только на домены,
    # которые совпадают с шаблонами в списке. Если список пуст, разрешены все
    # домены, которые не содержатся в черном списке. Черный список используется 
    # всегда, так что, если домен содержится в обоих списках, черный побеждает.
    # Все шаблоны в списке — регулярные выражения, которые применяются только 
    # к имени хоста (домену) заданного URL. Примеры:
    # "^gist\\.github\\.com$", "^(:?www\\.)?pastebin\\.com$"
    whitelist=[]
  }

  # Другие полезные параметры.
  misc {

    # На некоторых платформах нативные библиотеки могут крашить игру, поэтому
    # здесь встроена проверка загрузки таких библиотек. Это касается
    # Windows XP и Windows Server 2003. Если вы считаете, что-то может заработать
    # неправильно, установите параметр 'true'. Используйте его на
    # свой страх и риск. Если игра вылетела после установки флага 'true', 
    # НЕ СООБЩАЙТЕ МНЕ ОБ ЭТОМ.
    alwaysTryNative=false

    # Передавать ли имя пользователя, который вызвал сигнал ввода данных
    # (клавиатура или мышь). Отключите, если это мешает погружению в игру.
    inputUsername=true

    # Возможность (или скорее, взвешенный шанс), что диск с программой
    # появится в сундуке с сокровищами. Для справки, железные слитки имеют 
    # шанс 10, золотые слитки — 5, а алмазы — 3. Какой именно диск это будет,
    # определяет генератор случайных чисел.
    lootProbability=5

    # Максимальная длина строки, которую можно вставить. Ограничивает размер данных,
    # которые посылаются на сервер, когда пользователь пытается вставить
    # строку из буфера обмена (Shift+Ins на мониторе с клавиатурой).
    maxClipboard=1024

    # Максимальный размер сетевых пакетов, которые могут быть посланы 
    # через сетевую плату. Это не имеет отношения к реальному сетевому трафику.
    # Ограничение установлено для того, чтобы избежать потери данных при 
    # пересылке пакетов большого размера компьютером с небольшим количеством
    # оперативной памяти. Не имеет отношения к HTTP трафику.
    maxNetworkPacketSize=8192

    # Максимальная высота мультиблочного экрана, в блоках. Ограничено, чтобы
    # избежать затратных вычислений при объединении мониторов. Если вам
    # требуется монитор большего размера, попробуйте увеличивать параметр 
    # постепенно (по одному блоку), пока не появятся проблемы.
    maxScreenHeight=6

    # Максимальная ширина мультиблочных мониторов, в блоках.
    # См. также: `maxScreenHeight`.
    maxScreenWidth=8

    # Максимальное расстояние, на которое может быть послан беспроводной сигнал.
    # Другими словами, это максимальная сила сигнала, который может послать 
    # беспроводная сетевая плата. Ограничивает радиус, в котором производится 
    # поиск модемов, чтобы избежать смешных ситуаций, когда например, радиус 
    # обнаружения больше, чем радиус загружаемых чанков.
    # См. также: `wirelessStrength`.
    maxWirelessRange=400

    # Количество беспроводных терминалов, которое поддерживает сервер каждого 
    # уровня.
    terminalsPerTier=[
      2,
      4,
      8
    ]

    # Проверять и информировать ли о наличии новых версий (соединяется с Guthub
    # один раз, когда первый игрок входит на сервер или запускается первая 
    # локальная игра).
    updateCheck=true
  }

  # Настройки энергии, размеры буферов и расход.
  power {

    # Размеры буферов по умолчанию. Например, сколько энергии могут хранить 
    # те или иные блоки.
    buffer {

      # Количество энергии, которое может хранить один аккумулятор.
      capacitor=1600

      # Количество дополнительной энергии, которую может накопить аккумулятор,
      # когда присоединен вплотную к другому аккумулятору. Бонус делится
      # между несколькими "соседями". Так, три аккумулятора в ряд могут
      # накопить 8.8к энергии по умолчанию:
      # (1.6 + 0.8 + 0.4)k + (0.8 + 1.6 + 0.8)k + (0.4 + 0.8 + 1.6)k
      capacitorAdjacencyBonus=800

      # Количество энергии, которую может хранить компьютер.
      computer=500

      # Количество энергии, которое может хранить конвертер.
      converter=1000

      # Количество энергии, которое может хранить каждая сторона распределителя.
      # Если параметр равен 0, два соединенных вместе распределителя не смогут
      # передавать энергию.
      distributor=500

      # Количество энергии, которое может хранить робот.
      robot=50000
    }

    # Количество энергии, которое зарядное устройство передает каждому
    # соседнему роботу за один "тик" при максимальном сигнале редстоуна.
    chargerChargeRate=100

    # Расход энергии по умолчанию на разные операции.
    cost {

      # Затраты на один пакет посланный устройству StargateTech 2.
      abstractBusPacket=1

      # Количество энергии, потребляемой компьютером за один "тик".
      computer=0.5

      # Энергия, которую тратит монитор на заливку экрана "пробелами".
      gpuClear=0.1

      # Энергия, которую тратит монитор на копирование половины
      # базового экрана командой 'copy'.
      gpuCopy=0.25

      # Энергия, которую тратит монитор на заливку базового экрана
      # командой 'fill'.
      gpuFill=1

      # Энергия, которую монитор тратит на то, чтобы поменять каждый
      # пиксель командой 'set' на базовом экране.
      gpuSet=2

      # Энергия, которую занимает чтение одного килобайта из файловой 
      # системы. При этом, не операции ввода/вывода, такие как 'list'
      # или 'getFreeSpace' не тратят энергию. Этот параметр также
      # определяет, сколько энергии должно быть в сети, для того, чтобы
      # запустить компьютер и загрузить все библиотеки (на момент
      # написания — около 60KB).
      hddRead=0.1

      # Энергия, которую тратит запись одного килобайта в файловую 
      # систему.
      hddWrite=0.25

      # Энергия, которую тратит голографический проектор за один "тик".
      # Это стоимость каждой "колонны" которая высвечена. Если не
      # активен ни один воксель, проектор не потребляет энергию.
      hologram=0.2

      # Количество энергии, потребляемой роботом за одни "тик". Это значение
      # по умолчанию меньше, чем для компьютера. (Что же... робот лучше
      # оптимизирован).
      robot=0.25

      # Коэффициент энергетических затрат при использовании предметов.
      # Ноль означает, что на это не тратится энергии. Один — что энергия 
      # расходуется один к одному (к "усталости"). Например — усталость
      # при добыче блока — 0.025, атака существа — 0.3, и т.д.
      robotExhaustion=10

      # Энергия, которую робот тратит при перемещении на один блок.
      robotMove=15

      # Энергия, которую робот тратит при повороте на 90 градусов.
      robotTurn=2.5

      # Количество энергии, потребляемой монитором на один "тик". За каждый
      # освещенный пиксель (каждый символ, отличный от пробела) затраты
      # возрастают линейно: это число означает затраты базового монитора
      # полностью заполненного символами за один "тик". Мониторы больших
      # уровней могут тратить больше энергии, т.к. имеют большее разрешение.
      # Недостаточное количество энергии приведет к отключению монитора.
      # При этом он не "забудет" свое изображение, и после восстановления
      # питания покажет все снова (вместе с изменениями, которые произошли
      # за время отключения).
      # Примечание: в мультиблочных мониторах, каждый составной монитор
      # тратит энергию.
      screen=0.05

      # Затраты на работу для роботов и компьютеров домножаются на это
      # значение, при работе в "спящем" режиме. Они могут включить такой
      # режим командой 'os.sleep()' или ожидая сигналов. 
      # Примечание: этот параметр не распространяется на "тик" в который 
      # происходит пробуждение, т.е. фейковый "сон" командой 'os.sleep(0)'
      # не подействует.
      sleepFactor=0.1

      # Энергия на отправку беспроводного сообщения мощность один (т.е. на
      # один блок расстоянием). Это значение линейно увеличивается, например,
      # на отправку сигнала на 400 блоков, будет задействовано 
      # wirelessStrength * 400 энергии. 
      wirelessStrength=0.05
    }

    # Эффективность апгрейда-генератора. 1.0 означает, что он будет
    # вырабатывать столько же, сколько паровой двигатель (Stirling
    # Engine) из BuildCraft (1MJ за один "тик"). По умолчанию, 
    # это значение немного снижено.
    generatorEfficiency=0.8

    # Игнорировать ли все требования энергии. Когда устройство требует энергию
    # для работы, оно ищет ее в сети, к которой подключено. Этот параметр 
    # будет всегда возвращать положительный ответ. При этом вся сеть будет 
    # функционировать в обычном режиме (кроме конвертера, который перестанет
    # принимать энергию других модов).
    ignorePower=false

    # Эффективность апгрейда-солнечной панели. 1.0 означает, что она будет
    # вырабатывать столько же, сколько паровой двигатель (Stirling
    # Engine) из BuildCraft. По умолчанию это значение сильно снижено.
    solarGeneratorEfficiency=0.2

    # Этот параметр определяет, колебания спадов энергии какой частоты
    # заставят устройство искать ее в сети. Это касается роботов,
    # компьютеров и мониторов. Кроме того, этот параметр регулирует, с
    # какой частотой распределители обновляют свое глобальное состояние,
    # и как часто конвертер забирает энергию с ее источников (теперь:
    # только BuildCraft). Значение 1 — каждый тик. Значение по умолчанию — 
    # каждые 20 тиков, т.е. — раз в секунду.
    # Значение больше означает более точное обновление данных по энергии
    # в сети, при этом чуть больше вычислений каждый тик (не должно
    # сильно влиять на производительность).
    # Примечание: этот параметр не влияет на энергопотребление отдельных
    # устройств. Затраты вычисляются по формуле `tickFrequency * cost`.
    tickFrequency=10
  }

  # Настройки роботов, что они могут делать, и общий баланс.
  robot {

    # Может ли робот активировать блоки в мире. Например, нажимать кнопки
    # или поворачивать рычаги. Отключите этот параметр, если он вызывает
    # конфликты в каких-либо модах (дайте мне знать о этом!) или если
    # вы считаете, что это слишком круто для роботов.
    allowActivateBlocks=true

    # Определяет, могут ли роботы использовать предметы с определенной
    # продолжительностью. Например — натягивать луки.
    allowUseItemsWithDuration=true

    # Могут ли роботы наносить урон игрокам, если те оказываются на пути робота.
    # Это касается всех существ 'player', которые могут быть не только
    # реальными игроками в игре.
    canAttackPlayers=false

    # Тонкая настройка скорости выполнения роботом разных действий.
    delays {

      # Время в секундах, на задержку после успешной выгрузки одного
      # предмета из инвентаря робота.
      drop=0.5

      # Задержка при сборе блоков по отношению ко времени, которое тратит
      # на это игрок. Учтите, что роботы не могут ломать блоки, которые
      # они не могут собрать. Таким образом, время на добычу одного блока
      # вычисляется как: breakTime * harvestRatio.
      # Добыча одного блока всегда тратит хотя бы один тик (0.05 секунд).
      harvestRatio=1

      # Задержка в секундах после успешного движения на один блок.
      # Этот параметр влияет на скорость робота, определяя длительность 
      # анимации движения.
      move=0.4

      # Задержка в секундах после успешного размещения блока в игровом
      # мире.
      place=0.4

      # Задержка в секундах, после успешного поглощения блока роботом,
      # при выполнении команды 'suck'.
      suck=0.5

      # Задержка в секундах после успешного "взмаха" инструментом. 
      # (Или "манипулятором" если у робота нет инструмента). "Успешный"
      # означает, что робот что-то ударил, например, атаковал врага, или
      # потушил огонь.
      # При добыче блоков время домножается на 'harvestRatio' (см. ниже).
      swing=0.4

      # Задержка в секундах, после поворота робота влево или вправо.
      # Определяет скорость вращения робота, и длительность анимации
      # поворота.
      turn=0.4

      # Задержка в секундах, после успешного применения предмета.
      # Например — активации кнопки, или метания зелья.
      use=0.4
    }

    # Степень разрушения предметов при использовании их роботами. Значение
    # 1 означает, что они ломаются с той же скоростью, что и при использовании
    # игроком. 0 означает, что инструменты не ломаются вообще. 
    # Этот параметр влияет только на те инструменты, которые можно сломать.
    itemDamageRate=0.1

    # Формат имен для роботов. Подстрока '$player$' заменяется именем
    # игрока, которому принадлежит робот. Таким образом, для робота,
    # только что размещенного в игровом мире, это будет тот игрок,
    # которые его поставил. Это значение передается, если один робот
    # ставит другого. Подстрока '$random$' будет заменена случайным числом
    # в интервале [1, 0xFFFFFF].
    # Если робот поставлен не игроком (или другим роботом), то имя по
    # умолчанию будет 'OpenComputers'.
    nameFormat="$player$.robot"

    # Определяет "крутизну" роботов. Обычно паутина — проклятие для любого,
    # у кого нет меча или ножниц. Чтобы избежать головной боли, в виде 
    # застрявших в паутине роботов с кирками, этот параметр позволяет роботам
    # рвать паутину, вне зависимости от экипированного инструмента.
    # P.S. Такая прочность паутины имеет лишь одно рациональное объяснение — 
    # Стив боится пауков!
    notAfraidOfSpiders=true

    # Радиус, в пределах которого роботы могут использовать инструменты
    # (левый клик). Это значение определяет расстояние от центра робота,
    # до той стороны блока, по направлению к которой был произведен "взмах".
    # Т.е. при определения столкновений через трассировку луча, это 
    # конечная точка луча. Формула:
    #   `block_center + unit_vector_towards_side * swingRange`
    # Значение параметра по умолчанию — чуть меньше 0.5.
    swingRange=0.49

    # Радиус, в пределах которого роботы могут использовать предметы
    # (правый клик) или ставить блоки. См. `robot.swingRange`. 
    # По умолчанию, установлено значение достаточное для того, чтобы
    # робот мог достать до вскопанной земли (чтобы посадить семена,
    # например).
    useAndPlaceRange=0.65

    # Определяет скорость получения роботами "опыта", и как этот опыт влияет на
    # его параметры.
    xp {

      # Этот параметр определяет, на сколько более продвинутым робот становится
      # при каждом успешном действии. "Действия" — это: "взмахи" инструментами
      # и убийство живых существ, или разрушение блоков или установка новых.
      actionXp=0.05

      # Количество опыта в каждом уровне вычисляется по формуле:
      # xp(level) = baseValue + (level * constantGrowth) ^ exponentialGrowth
      baseValue=50

      # Количество дополнительного места в аккумуляторах робота, которое он
      # получает за каждый уровень. При значениях по умолчанию, и максимальном
      # уровне (30), робот будет иметь энергозапас в 200 000.
      bufferPerLevel=5000

      # Количество опыта в каждом уровне вычисляется по формуле:
      # xp(level) = baseValue + (level * constantGrowth) ^ exponentialGrowth
      constantGrowth=8

      # Параметр определяет влияние "усталости" робота на опыт.
      # Это значение добавляется в опыту. Например, добыча блока даст
      # по умолчанию 0.05 + 0.025 [усталость] * 1.0 = 0.075 XP.
      exhaustionXpRate=1

      # Количество опыта в каждом уровне вычисляется по формуле:
      # xp(level) = baseValue + (level * constantGrowth) ^ exponentialGrowth
      exponentialGrowth=2

      # Повышение скорости добычи блоков за уровень. Новое время вычисляется
      # по формуле actualTime * (1 — bonus). Например, при уровне 20, с 
      # бонусом 0.4 вместо 0.3 секунд на добычу блока камня алмазной
      # киркой будет потрачено всего 0.12.
      harvestSpeedBoostPerLevel=0.02

      # Определяет, сколько опыта робот получает за каждую сферу опыта, которую
      # он собрал при добыче руды. Например, уголь стоит 2 игровых очка опыта,
      # а редстоун — 5.
      oreXpRate=4

      # Дополнительная "эффективность" при использовании инструментов
      # за каждый уровень. Повышает шанс на то, что инструмент не будет
      # поврежден при использовании. Например, робот уровня 15, получает
      # бонус 0.15 и урон 0.1 * (1 — 0.15) = 0.085.
      toolEfficiencyPerLevel=0.01
    }
  }

}