Этот мод расширяет функциональность OpenComputers, позволяя использовать сети XNet для передачи предметов, жидкостей и энергии между подключёнными блоками.
Совместимость и требования
- Работает с OpenComputers и XNet.
- Позволяет взаимодействовать с инвентарями, резервуарами и энергосистемами, подключёнными к сети XNet.
Известные ограничения
- В текущей версии отсутствуют ограничения на скорость и объём передачи ресурсов, что позволяет передавать огромные количества мгновенно.
Основные методы API
| Метод | Описание |
|---|---|
| getConnectedBlocks() | Возвращает список всех блоков, подключённых к сети XNet. |
| getSupportedCapabilities(pos[, side]) | Перечисляет все поддерживаемые блоком возможности. |
| getItems(pos[, side]) | Возвращает содержимое инвентаря указанного блока. |
| getFluids(pos[, side]) | Перечисляет жидкости в указанном резервуаре. |
| getEnergy(pos[, side]) | Получает информацию о ёмкости и запасах энергии у энергообработчика. |
| transferItem(sourcePos, sourceSlot, amount, targetPos[, sourceSide[, targetSide]]) | Переносит предметы между двумя инвентарями. |
| transferFluid(sourcePos, amount, targetPos[, fluidName][, sourceSide[, targetSide]]) | Перекачивает жидкости между резервуарами. |
| transferEnergy(sourcePos, amount, targetPos[, sourceSide[, targetSide]]) | Переносит энергию между двумя энергообработчиками. |
| store(sourcePos, sourceSlot, database, entry[, sourceSide]) | Сохраняет предмет из сети XNet в базу данных с помощью апгрейда. |
Пример использования
Вот пример скрипта, который собирает все подключённые блоки, классифицирует их по типам (сундуки, резервуары, энергоклетки) и выводит содержимое первого сундука, первого резервуара и первой энергоклетки:
local component = require('component')
local serialization = require('serialization') local xnet = component.xnet local chests, tanks, cells = {}, {}, {}
for i, block in ipairs(xnet.getConnectedBlocks()) do print(serialization.serialize(block)) if block.name == "minecraft:chest" then table.insert(chests, block) elseif block.name == "thermalexpansion:tank" then table.insert(tanks, block) elseif block.name == "thermalexpansion:cell" then table.insert(cells, block) end
end print(serialization.serialize(xnet.getItems(chests[1].pos)))
print(serialization.serialize(xnet.getFluids(tanks[1].pos)))
print(serialization.serialize(xnet.getEnergy(cells[1].pos))) print("Transferred: " .. tostring(xnet.transferItem(chests[1].pos, 1, 5, chests[2].pos)))
Пример передачи энергии
Пример скрипта, который находит источник (динамо) и приёмник энергии (клетку), а затем передаёт 1000 RF между ними:
local component = require('component')
local sides = require('sides')
local serialization = require('serialization') local xnet = component.xnet local energySource, energyTarget
for i, block in ipairs(xnet.getConnectedBlocks()) do if block.name == "thermalexpansion:dynamo" then energySource = block elseif block.name == "thermalexpansion:cell" then energyTarget = block end
end if not energySource then print("No dynamo found. Aborting!") os.exit(1)
end
if not energyTarget then print("No cell found. Aborting!") os.exit(2)
end local transferred, err = xnet.transferEnergy(energySource.pos, 1000, energyTarget.pos, sides[energySource.side], sides[energyTarget.side])
if transferred then print(" - Transferred " .. transferred .. "RF to " .. serialization.serialize(energyTarget.pos))
else print("Error: " .. err)
end





