本篇教程由作者设定未经允许禁止转载。

Plethora Peripherals(版本:1.2.3 in 1.12.2)

(封面为被关闭AI的小白,在循环向天空90垂直于地面射箭)


模块 = {

    键盘, -- plethora:keyboard

    自省模块, -- plethora:introspection

    分块扫描仪, -- plethora:scanner

    实体传感器, -- plethora:sensor

    运动学增强, -- plethora:kinetic

    聊天记录器, -- plethora:chat

    涂层眼睛, -- plethora:glasses

    创造聊天记录器, -- plethora:chat

    激光束, -- plethora:laser

}


下面演示怎样向神经接口中加入模块。

①头戴神经接口 手拿神经连接器

这个mod与饰品栏有联动,可以将神经接口戴在头部饰品栏,可以省下头盔一栏。

Plethora Peripherals的简单

神经接口可以放在如图红框中,请只戴一个,避免人类迷惑行为迷惑自己。


②使用神经连接器 认识内置电脑

如图为神经接口内置的电脑,玩家通过这个电脑控制神经接口。

该电脑是Computer Craft的手提电脑哒!。

Plethora Peripherals的简单

绿框是显示(输入/输出)窗口。

红框是设备/模块(点击红框右下角的按钮切换显示设备/模块)。

蓝框就是物品栏。


③准备分块扫描器模块 点击红框右下角的按钮并将模块放入

Plethora Peripherals的简单

共有五个位置可用于放置模块,位置不影响模块的功能。


④启动lua交互程序 尝试获得一些方法(也称为函数 function 等)

在图示位置输入lua,回车。

Plethora Peripherals的简单Plethora Peripherals的简单

翻译:

    交互式lua程序。

    调用(也就是输入) "exit()" 来退出。

⑤获得 模块的function

(以下用-[input]- 代表输入的内容,-[output]- 代表屏幕上显示的内容,多行用[end]作为末端表示)

-[input]- peripheral.find("neuralInterface")

-[output]-

{

    filterModules = function:xxxxxxxx(...),

    getBlockMeta = function:xxxxxxxx(...),

    getDocs = function:xxxxxxxx(...),

    hasModules = function:xxxxxxxx(...),

    listModules = function:xxxxxxxx(...),

    scan = function:xxxxxxxx(...)

}

-[output end]-

这是个什么?

    一个table,也叫作表,可以记录许多种数据。

    {}大括号中的内容是表的value,也叫作值,这是给玩家用的。

    "scan = function:xxxxxxxx(...)" 表示这个表中的scan是个 function,这个function在lua中被用xxxxxxxx(8位数字)代表。用这个规律,我们就能判断一个“东西”的类型了。


⑥ 调用function

    要使用function,先要知道这个function的作用。

    好在mod为我们提供了帮助: "getDocs" function。

    我们将试一试调用getDocs,不过在这之前,我们要把之前的table保存到变量里。

    (为什么? 因为通过方法返回的table并不掌握在我们的手中,难以多次直接调用,想一想,如果每次都要执行peripheral.find,是不是很耗时间,很占代码位置)

-[input]- manip = peripheral.find("neuralInterface")

    我们将table用一个变量"manip"储存"起来,以方便调用。

    等号表示将右边的东西作为值赋予左边。

    也就是说现在manip这个变量拥有了右边这个方法的返回结果。

-[input]- manip.getDocs("scan")

    我们调用了getDocs这个function,由于它在manip这个table中,我们要用manip.getDocs来指向它,也就是说,调用function 的步骤如下:

    找到function位置→加上"()"→小括号内加上参数,但有的function没有参数→调用成功,获得function返回结果。

-[output]- "function():table -- Scan all blocks in vicinity"

    来看看它返回了个啥。

    它说明 manip.scan 是个没有参数(小括号内空无一物)的方法(function) 返回值的类型是table 用于扫描附近的所有方块(Scan all blocks in vicinity,记得准备一本词典,lua语言不支持中文)。


⑦ 来试试manip.scan()

-[input]- manip.scan()

        这个function返回的结果太多了,要显示在屏幕上需要非常长的时间。

        我们得到了一个error(错误)。

-[output]- bios.lua:146: Too long without yieldinng

        它说,快停下来啊!然后就停下来了

        那咋办嘛?

        把它储存在一个量里面,不让给他显示不就好了。

        但我们的lua交互式程序崩了,所以要重新启动lua。

-[input]- lua

        启动lua交互式程序。

-[input]- manip = peripheral.find("neuralInterface")

        将一个table储存在变量manip内。

-[input]- blocks = manip.scan()

        将manip.scan的结果储存在变量blocks内。

-[input]- blocks[1]

        让交互式程序显示blocks里的key(键)为1对应为value。

-[output]-

{

    metadata = 0,

    name = "minecraft:dirt",

    state = {

        snowy = false,

        variant = "dirt"

    }

    x = -8,

    y = -8,

    z = -8

}

-[output end]-

    可以看见它输出了方块的name state xyz坐标等数据。

    我们可以利用它做一个矿物筛选器。


最后,这个封面是怎样做出来的呢?

    为骷髅安装神经接口(拿着神经接口右键骷髅),小心别安装在自己身上了(记得拿下自己身上的神经接口),安装动力学增强模块,启动lua交互式程序。

-[input]- manip = peripheral.find("neuralInterface")

    为manip赋值。

-[input]- manip.look(0,-90)

    仰望天空。

-[input]- while true do manip.shoot(1) end

    循环执行 射箭,力量强度为1。


总结:

在这篇教程内,你应该学会了:

①模块,神经接口的使用方法,以及启动lua交互程序;

②用变量储存数据(如table,function的返回结果);

③判断并调用function;

④了解该mod的实用性。


快去试试更多模块的功能吧!