本篇教程由作者设定未经允许禁止转载。
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与饰品栏有联动,可以将神经接口戴在头部饰品栏,可以省下头盔一栏。
神经接口可以放在如图红框中,请只戴一个,避免人类迷惑行为迷惑自己。
②使用神经连接器 认识内置电脑
如图为神经接口内置的电脑,玩家通过这个电脑控制神经接口。
该电脑是Computer Craft的手提电脑哒!。
绿框是显示(输入/输出)窗口。
红框是设备/模块(点击红框右下角的按钮切换显示设备/模块)。
蓝框就是物品栏。
③准备分块扫描器模块 点击红框右下角的按钮并将模块放入
共有五个位置可用于放置模块,位置不影响模块的功能。
④启动lua交互程序 尝试获得一些方法(也称为函数 function 等)
在图示位置输入lua,回车。
翻译:
交互式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的实用性。
快去试试更多模块的功能吧!