适用于 Minecraft 1.12.2 的 OC XNet Driver 模组
允许OpenComputers利用XNet网络向连接的方块传输物品、流体和能量。
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]) 在两个储罐之间传输流体
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 -- {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} -- 导出第一个箱子的内容: 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:hayblock",label="Hay Bale"}, -- [27]={maxSize=64,size=1,hasTag=false,maxDamage=0,damage=0,name="xnet:controller",label="Controller"}, -- n=27 -- } -- 导出第一个储罐的内容 print(serialization.serialize(xnet.getFluids(tanks[1].pos))) -- { -- {content={label="Essence of Knowledge",amount=4000,hasTag=false,name="experience"},capacity=20000}, -- n=1 -- } -- 导出第一个能量单元的内容 print(serialization.serialize(xnet.getEnergy(cells[1].pos))) -- {canExtract=true,stored=4000,capacity=2000000,canReceive=true} -- 将箱子 1 第 1 格中的任意物品传输 5 个到箱子 2 print("Transferred: " .. 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 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 -- } -- 找到一个发电机和一个能量单元并存储它们的位置等信息 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("No dynamo found. Aborting!") os.exit(1) end -- 如果找不到目标则中止 if(energyTarget == nil) then print("No cell found. Aborting!") os.exit(2) end -- 使用 XNet 连接器旁边的面从能量源向目标传输 1000RF 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
如何安装 OC XNet Driver
With Millida Launcher
Install Millida Launcher
The launcher is free: download it at millida.net/launcher and sign in with any nickname.
Click “Install” on this page
The launcher opens and installs the mod for Minecraft 1.12–1.12.2 automatically.
Launch the game
A profile with it appears in the launcher: click “Play”.
Manually
Download the file for your version
In the version list above, pick the file ocxnetdriver-1.0.3-b17.jar (22 KB) for your game version.
Put it in the mods folder
The folder is inside .minecraft (Windows: %appdata%\.minecraft\mods). If it does not exist, create it.
Launch the loader profile
Open “Mods” in the main menu: OC XNet Driver should be in the list.
Minecraft 1.12.2 runs on Java 8: with a different Java version the game may close right after launch.
版本
含依赖项
| Minecraft | 加载器 | 文件 | 日期 | 操作 |
|---|---|---|---|---|
| 1.12.1 | — | ocxnetdriver-1.0.3-b17.jar21.7 KB | ||
| 1.12.1 | — | ocxnetdriver-1.0.2-b11.jar21.4 KB |
常见问题
Which Minecraft versions does OC XNet Driver work on?
There are files for 1.12.2, 1.12.1, 1.12. The newest is 1.12.2.
Which Java does OC XNet Driver need?
Minecraft 1.12.2 runs on Java 8. If the game closes right after launch, the usual cause is the wrong Java version in the profile settings.
Where can I download OC XNet Driver safely?
On this page: the file ocxnetdriver-1.0.3-b17.jar (22 KB) is stored on Millida’s server, with no link shorteners. SHA-1 checksum: c0168aa96831aa717f6c9339c991cba17ece7373.
评价
成为第一个评价 OC XNet Driver 的人

