本篇教程由作者设定使用 CC BY-NC 协议。

引言

关于cc的基础操作请见这篇教程:从零开始学CC——ComputerCraft扫盲培训班 

本教程主要介绍核心端口核心链接的相关函数与具体示例。

支持的Iota类型


Iota类型格式
Null

{"null": true}

垃圾

{"garbage": true} ※

数值double
布尔boolean
向量

{"x": double, "y": double, "z": double}

列表非空列表 [ ]

实体[玩家除外]

{"uuid": 实体的uuid, [^]"name": string}

图案iota

{"startDir": 图案起始方向, "angles": 图案笔划顺序}


※ 若识别格式不符合上述所有iota格式,则自动转换成垃圾。

※ 温馨提示,由于cc不支持中文,所有含有中文的法术在导出时对应部分会自动变成垃圾,导入时则直接无法正常读取。


核心端口

核心端口允许你通过cc对放置于其中的核心进行读取与写入操作,具体函数如下。

Ducky Peripherals 基础教程-第1张图片

核心链接

核心链接允许你通过cc控制链接中的iota发送与接收,你也可以通过此方法实现不同电脑之间iota的快速传输,使用此功能需要安装咒法拓展模组,以下为相关函数,具体功能请见咒法拓展的wiki介绍

Ducky Peripherals 基础教程-第2张图片

简易法术存储程序

此程序主要用于法术列表简易存储与读取,需要一个核心端口。将代码命名为 hex.lua 放入对应文件夹,输入 hex save <name> 将放置在核心端口中的核心的iota存入指定文件,输入 hex load <name> 读取指定文件并将对应iota复制到核心中。

-- simple utility script to load a hex into a focal port

local completion = require("cc.shell.completion")

shell.setCompletionFunction(shell.getRunningProgram(), completion.build(
    { completion.choice, { "save", "load" } },
    completion.file
))

local args = { ... }

if #args < 2 then
    error("usage: hex <save/load> <file>")
end
local mode = args[1]
local file = args[2]
if (mode ~= "save") and (mode ~= "load") then
    error("mode must be either save or load (case sensitive), got: " .. mode)
end

local p = peripheral.find("focal_port")
if mode == "load" then
    if not fs.exists(file) then error("file must exist when loading") end
    local f = fs.open(file, "r")
    local d = f.readAll()
    f.close()
    local dat = textutils.unserializeJSON(d)
    print("succeded: " .. tostring(p.writeIota(dat)))
else
    local f = fs.open(file, "w")
    local d = p.readIota()
    f.write(textutils.serialiseJSON(d))
    f.flush()
    f.close()
    print("saved Iota to: " .. file)
end

参考链接