OC XNet Driver avatar

OC XNet Driver [1.12.2]

ocxnetdriver

OpenComputers + XNet = :heart:

Позволяет OpenComputers использовать сети XNet для передачи предметов, жидкостей и энергии между подключенными блоками.

Известные проблемы

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

Доступные методы

МетодОписание
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 sides = require('sides')
local serialization = require('serialization');

local xnet = component.xnet

-- Собрать все найденные блоки и отсортировать стандартные типы в таблицы
local chests = {}
local tanks = {}
local cells = {}
for i,block in ipairs(xnet.getConnectedBlocks()) do
    print(serialization.serialize(block))
    if(block.name == "minecraft:chest") then
        chests[#chests+1] = block
    elseif(block.name == "thermalexpansion:tank") then
        tanks[#tanks+1] = block
    elseif(block.name == "thermalexpansion:cell") then
        cells[#cells+1] = 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)))

-- Переместить 5 предметов из слота 1 сундука 1 в сундук 2
print("Перемещено: " .. tostring(xnet.transferItem(chests[1].pos, 1, 5, chests[2].pos)))

Пример передачи энергии

local component = require('component')
local sides = require('sides')
local serialization = require('serialization')

local xnet = component.xnet

-- Найти Dynamo и энергохранилище, сохранить их позиции
local energySource = nil
local energyTarget = nil

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(energySource == nil) then
    print("Dynamo не найден. Прерывание!")
    os.exit(1)
end

-- Прервать при отсутствии приёмника
if(energyTarget == nil) then
    print("Хранилище не найдено. Прерывание!")
    os.exit(2)
end

-- Передать 1000 RF от источника к приёмнику через разъёмы XNet
local transferred, error = xnet.transferEnergy(energySource.pos, 1000, energyTarget.pos, sides[energySource.side], sides[energyTarget.side])
if(transferred ~= nil) then
    print(" - Передано " .. transferred .. " RF в " .. serialization.serialize(energyTarget.pos))
else
    print("Ошибка: " .. error)
end

Скачать OC XNet Driver

 
Тип Скачать Версия Загрузчик Обновлено Размер
Releaseocxnetdriver-1.0.3-b17.jar1.12+2 Forge2 ноября 201821,7 КБ
Betaocxnetdriver-1.0.2-b11.jar1.12+2 Forge11 марта 201821,4 КБ
Betaocxnetdriver-1.0.1-b8.jar1.12+2 Forge13 февраля 201821,4 КБ
Betaocxnetdriver-1.0.0-b5.jar1.12+2 Forge14 января 201819,3 КБ
Пожалуйста авторизуйтесь, чтобы оставить свой комментарий.