OC XNet Driver
Modby davenonymous
Allows OpenComputers to utilize XNet networks to transfer items, fluids and energy to connected blocks.
Downloads
14,012,889
Type
Mod
CurseForge ID
285385
Last Updated
Apr 9, 2026
Description
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 upgradeSynopsis
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) endSimilar Mods
Building Gadgets
A collection of Gadgets to make building large structures a little bit easier!
Inventory Tweaks [1.12 only]
Tweaks to inventory handling for ease of use, including sorting and automatic replacement of broken tools or exhausted s...
MmmMmmMmmMmm (Target Dummy)
Target Dummy that show damage dealt and can be equipped with armor. Damage numbers!
Alex's Mobs
85+ New mobs with stylistic quality above the default game.
Searchables
Searchables is a library mod that adds helper methods that allow for searching and filtering elements based on component...
ImmediatelyFast
Speed up immediate mode rendering in Minecraft