OpenComputers/Robot API

Этот программный интерфейс доступен только тогда, когда исполняющий компьютер является роботом.

Общие функции

Получает текущий уровень робота. Дробная часть обозначает текущий прогресс до следующего уровня. Например, если это число 1.5, робот имеет уровень 1, и на 50% достиг второго уровня.

Внимание: начиная с версии 1.3 функция устарела. Используйте component.experience.level(), поскольку робот получает очки опыта, только при наличии апгрейда на опыт.

Получает название робота.


Работа с блоками

Проверяет, есть ли что-нибудь перед роботом. Возвращает true если что-то может препятствовать движению робота, false в противном случае. Второе возвращаемое значение определяет что именно находится перед роботом. Это может быть entity, solid, replaceable, liquid или air. Первые два могут блокировать робота, остальные — нет. В случае entity это может быть как животным или мобом, так и игроком или вагонеткой.

Примечание: для того чтобы получить более подробную информацию (ID, метаданные) о блоке, вы можете использовать функцию analyze() геосканера.

Аналогично robot.detect(), только проверяет блок над роботом.

Аналогично robot.detect(), только проверяет блок под роботом.


Производит "левый щелчок мыши" роботом, используя при этом экипированный инструмент. Результат зависит от инструмента и того, какой блок располагается перед роботом. Возвращает true и дескриптор, если был обработан какой-то блок, либо false и возможную причину в случае неудачи.

Параметр side определяет сторону подвергаемую обработке. Если параметр опущен, робот перебирает все возможные стороны. Это позволяет контролировать направление "щелчка мыши" если необходимо.

Возвращаемая строка может быть одной из следующих:

Аналогично robot.swing(), но работает с блоком над роботом.

Аналогично robot.swing(), но работает с блоком под роботом.


Делает "правый щелчок мыши" роботом, используя экипированный инструмент. Результат зависит от инструмента и блока перед роботом. Возвращает true в случае успеха, либо false в случае неудачи.

Параметр side определяет сторону, куда направлено действие. Если параметр опущен, робот попробует воздействовать на все стороны. Это позволяет точнее контролировать действие, если необходимо. К примеру — сторону в которую полетит стрела, если использовать лук.

Параметр sneaky определяет "присел" ли робот (для игрока — клавиша ⇧ Shift), совершая действие. Это необходимо, к примеру, если робот пытается разместить блок на устройстве, которое по "правому щелчку" открывает свой интерфейс.

Параметр duration определяет продолжительность использования инструмента в секундах. К примеру, продолжительность натягивания лука. Учтите, что этот параметр вызывает соответствующую паузу в выполнении программы робота.

Возвращаемое значение может быть:

Аналогично robot.use(), но работает с блоком над роботом.

Аналогично robot.use(), но работает с блоком под роботом.


Работа с инвентарем

Если робот имеет инструмент, функция возвращает состояние этого инструмента. Возможные значение: 0 - сломан, 1 - цел.

Если робот не имеет инструмента, или инструмент не может быть сломан, функция возвратит nil и соответствующую строку: no tool equipped или tool cannot be damaged.

Возвращает внутренний размер инвентаря.

Делает активным слот инвентаря с заданным индексом. Индекс — число в интервале от 1 до N, где N — число слотов (зависит от количества апгрейдов на инвентарь). Нумерация начинается в левом верхнем углу, и идет слева направо и сверху вниз. Таким образом левый верхний слот имеет номер 1, верхний правый — 4, левый нижний — 13, правый нижний — 16. Создает ошибку, если введен неверный индекс. Возвращаемое значение — номер выбранного слота. Функция может использоваться без аргументов, для получения номера активного слота.

Возвращает количество предметов в заданном слоте. Если номер слота не задан, возвращает количество предметов в активном слоте.

Возвращает количество предметов которое может еще поместиться в заданный слот. Это число зависит от типа предметов, которые уже находятся в слоте. (К примеру, ведра складываются в стеки только по 16. Если в слоте уже есть два ведра, функция вернет число 14.) Если слот не задан, функция работает с активным слотом.

Сравнивает предметы в заданном и активном слотах. Если предметы одинаковы (количество предметов в слотах не имеет значение) — возвращает true. Иначе — false.

Перемещает предметы из активного слота в заданный. Если определен параметр count, функция перемещает заданное количество предметов. Возвращает true, если был перемещен хотя бы один предмет, и false — если ни одного.

Обратите внимание, что если целевой слот не пуст, а число предметов для перемещения не задано, больше или равно числу предметов в активном слоте, результатом будет обмен слотов содержимым.


Сравнивает предмет в заданном слоте и блок перед роботом. Если блок эквивалентен предмету в слоте — возвращает true. Иначе — false.

Аналогично robot.compare(), но сравнивает с блоком над роботом.

Аналогично robot.compare(), но сравнивает с блоком под роботом.


Выбрасывает предмет из активного слота. count может определять число предметов. Если перед роботом находится блок с инвентарем, например сундук, робот попытается положить предметы в него. Если инвентаря перед роботом нет, предметы будут просто выброшены наружу. Возвращает true, если один или больше предмет был выброшен. Иначе — false. Если инвентарь (сундук) полон, функция вернет false и предметы выброшены не будут.

Также функция работает для вагонеток с сундуками и вагонеток с воронками.

Аналогично robot.drop(), но работает с блоком над роботом.

Аналогично robot.drop(), но работает с блоком под роботом.


Помещает блок из активного слота перед роботом. Возвращает true в случае успеха, иначе — false. Параметр side определяет сторону на которую будет помещен блок. Если параметр опущен, робот попробует все поверхности. Это позволяет точнее ставить блоки, которые имеют ориентацию. (Например — факел. Значение 5 или sides.left позволит разместить факел на стене слева.) Параметр sneaky определяет "присел" (для игрока — клавиша ⇧ Shift) ли робот когда ставил блок. Это необходимо для некоторых модов.

Важно: по умолчанию, робот не может ставить блок в воздухе без опоры (как и игрок). В пространстве перед роботом должна быть хотя бы одна "стенка". Если вы хотите, чтобы роботы могли ставить блоки в воздухе (как черепашки из ComputerCraft) установите роботу апгрейд-"ангел".

Аналогично robot.place(), но работает с блоком над роботом.

Аналогич но robot.place(), но работает с блоком под роботом.


Захватывает максимум один стек предметов в активный слот, или первый свободный слот после активного. Возвращает true если захватил один или больше предметов, иначе — false. Если перед роботом находится блок с инвентарем (например — сундук), робот попытается забрать предметы из него. Параметр count определяет, сколько именно предметов будет захвачено. Функция также работает с вагонетками с инвентарем.

Если перед роботом нет инвентаря, он попытается подобрать предмет "с земли". В этом случае параметр count будет проигнорирован.

Аналогично robot.suck(), но работает с блоком над роботом.

Аналогично robot.suck(), но работает с блоком под роботом.


Работа с внутренними цистернами

Возвращает число внутренних цистерн робота.

Выбирает одну из цистерн активной.

Возвращает уровень жидкости в заданной (а если параметр не указан — в активной) цистерне.

Возвращает объем свободного пространства в заданной (а если параметр не указан — в активной) цистерне.

Сравнивает жидкости в активной и указанной параметром цистернах.

Перемещает указанное количество жидкости из активной цистерны в заданную. Если количество не указано — перемещает 1000 mB (1 ведро).

Сравнивает жидкость в активной цистерне с жидкостью перед роботом (или в хранилище перед роботом).

Аналогично compareFluid(), но сравнивает с жидкостью над роботом.

Аналогично compareFluid(), но сравнивает с жидкостью под роботом.

Закачивает жидкость из блока перед роботом в активную внутреннюю цистерну. Если объем не указан, закачивает 1000 mB (1 ведро).

Аналогично drain(), но закачивает жидкость над роботом.

Аналогично drain(), но закачивает жидкость под роботом.

Выкачивает жидкость из активного внутреннего хранилища в блок перед роботом. Если объем не указан, выкачивает 1000 mB (1 ведро).

Аналогично fill(), но выкачивает жидкость в пространство над роботом.

Аналогично fill(), но выливает жидкость в пространство под роботом.


Движение робота

Робот делает попытку двигаться вперед на один блок. Возвращает true в случае успеха. Иначе — nil и возможную причину — в противном случае. Причина — одна из строк функции robot.detect().

Аналогично robot.forward(), но двигает робота на один блок назад.

Аналогично robot.forward(), но двигает робота на один блок вверх.

Аналогично robot.forward(), но двигает робота на один блок вниз.

Поворачивает робота на 90° влево.

Поворачивает робота на 90° вправо.

Поворачивает робота на 180°.

В данной статье используются материалы из статьи «OpenComputers/Robot API» с вики-сайта Minecraft Wiki, расположенного на Фэндоме, и они распространяются согласно лицензии Creative Commons Attribution-Share Alike. Авторы статьи.