Mineuniverse
Log in Register
Mods

OC XNet Driver

Allows OpenComputers to utilize XNet networks to transfer items, fluids and energy to connected blocks.
by davenonymous
Download Claim this project
14,263,441 downloads
0 likes
Updated Jun 30, 2026
0 hypes

ocxnetdriver

OpenComputers + XNet = :heart:

Allows OpenComputers to utilize XNet networks to transfer items, fluids and energy to connected blocks.

Known Issues

  • This is currently unrestricted, i.e. you can transfer humongous amounts in no time.

Available Methods

Method Description
getConnectedBlocks() Returns a table with all blocks connected to the XNet network
getSupportedCapabilities(pos[, side]) List all capabilities the given block supports
getItems(pos[, side]) Returns a table with all items in the given inventory
getFluids(pos[, side]) List all fluids in the given tank
getEnergy(pos[, side]) Get capacity and stored energy of the given energy handler
transferItem(sourcePos, sourceSlot, amount, targetPos[, sourceSide[, targetSide]]) Transfer items between two inventories
transferFluid(sourcePos, amount, targetPos[, fluidName][, sourceSide[, targetSide]]) Transfer fluids between two tanks
transferEnergy(sourcePos, amount, targetPos[, sourceSide[, targetSide]]) Transfer energy between two energy handlers
store(sourcePos, sourceSlot, database, entry[, sourceSide]) Store an itemstack from somewhere in the XNet network in a database upgrade

Synopsis

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

local xnet = component.xnet

-- Dump all found blocks and track all vanilla types in a table
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
-- {name="thermalexpansion:cell",pos={z=0,y=-1,x=0},side="west",meta=0}
-- {name="opencomputers:case3",pos={z=0,y=-1,x=1},side="north",meta=1}
-- {name="thermalexpansion:tank",pos={z=0,y=0,x=-2},side="down",meta=0,connector="Dynamo"}
-- {name="minecraft:chest",pos={z=1,y=-1,x=-2},side="north",meta=3,connector="Dynamo"}
-- {name="thermalexpansion:dynamo",pos={z=0,y=-1,x=-3},side="east",meta=2,connector="Dynamo"}
-- {name="thermalexpansion:tank",pos={z=0,y=1,x=-1},side="down",meta=0}
-- {name="thermalexpansion:tank",pos={z=0,y=0,x=-2},side="east",meta=0}
-- {name="xnet:controller",pos={z=0,y=0,x=0},side="west",meta=3}

-- Dump the contents of the first chest:
print(serialization.serialize(xnet.getItems(chests[1].pos)))
-- {
--    {maxSize=64,size=64,hasTag=false,maxDamage=0,damage=0,name="minecraft:stone",label="Stone"},
--    {maxSize=64,size=64,hasTag=false,maxDamage=0,damage=0,name="minecraft:hay_block",label="Hay Bale"},
--    [27]={maxSize=64,size=1,hasTag=false,maxDamage=0,damage=0,name="xnet:controller",label="Controller"},
--    n=27
-- }

-- Dump the contents of the first tank
print(serialization.serialize(xnet.getFluids(tanks[1].pos)))
-- {
--    {content={label="Essence of Knowledge",amount=4000,hasTag=false,name="experience"},capacity=20000},
--    n=1
-- }

-- Dump the contents of the first cell
print(serialization.serialize(xnet.getEnergy(cells[1].pos)))
-- {canExtract=true,stored=4000,capacity=2000000,canReceive=true}

-- Transfer 5 of whatever is in slot 1 of chest 1 into chest 2
print("Transferred: " .. tostring(xnet.transferItem(chests[1].pos, 1, 5, chests[2].pos)))

Simple energy transfer example

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

local xnet = component.xnet

print(serialization.serialize(xnet.getConnectedBlocks()))
-- {
--    {pos={y=-1,x=0,z=0},name="thermalexpansion:cell",side="west",meta=0},
--    {pos={y=-1,x=1,z=0},name="opencomputers:case3",side="north",meta=1},
--    {pos={y=-1,x=-3,z=0},name="thermalexpansion:dynamo",side="east",meta=2,connector="Dynamo"},
--    {pos={y=0,x=0,z=0},name="xnet:controller",side="west",meta=3},
--    n=4
-- }

-- Find a dynamo and a cell and store their position etc
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

-- Abort if no source could be found
if(energySource == nil) then
    print("No dynamo found. Aborting!")
    os.exit(1)
end

-- Abort if no target could be found
if(energyTarget == nil) then
    print("No cell found. Aborting!")
    os.exit(2)
end

-- Transfer 1000RF from source to target using the sides next to the XNet Connector
local transferred, error = xnet.transferEnergy(energySource.pos, 1000, energyTarget.pos, sides[energySource.side], sides[energyTarget.side])
if(transferred ~= nil) then
    print(" - Transferred " .. transferred .. "RF to " .. serialization.serialize(energyTarget.pos))
    -- - Transferred 1000RF to {y=-1,x=0,z=0}
else
    print("Error: " .. error)
end
ocxnetdriver-1.0.3-b17.jar
MC 1.12.1, 1.12, 1.12.2
Release 2018-11-02 Get
ocxnetdriver-1.0.2-b11.jar
MC 1.12.1, 1.12, 1.12.2
Beta 2018-03-11 Get
ocxnetdriver-1.0.1-b8.jar
MC 1.12.1, 1.12, 1.12.2
Beta 2018-02-13 Get
ocxnetdriver-1.0.0-b5.jar
MC 1.12.1, 1.12, 1.12.2
Beta 2018-01-14 Get

More from davenonymous

Sky Bonsais
9,820,784
Compact Machines
94,344,537
Pattern Converter
80,090
Open Computers Refined Storage Driver
662,850
Bonsai Trees 4
58,442,629
OC Sensors
3,510,433

You Might Also Like

Pressure Pipes
Unlimited Fluid Transport
8,653,704
/tank/null
improved fluid storage
8,551,361
Flopper
A hopper for transferring fluids
8,393,570
Wooden Hopper
Adds a Wooden Hopper to the game. (Forge, NeoForge, Fabric, Quilt)
7,901,126
Better Fluid Pipes
This mod adds realistic fluid pipes that show the fluid flowing inside the pipe
994,808
Ring of Attraction [FORGE/NEOFORGE]
A simple item magnet
957,403