Day29 自动合成物品的小乌龟与指令

上次已经玩过挖矿龟 Mining Turtle,此外还有其他几个类似的小乌龟
包括 Digging Turtle、Felling Turtle、Farming Turtle
但用法非常相似,所以我留待最後一天一起介绍

今天先来看看 CC: Tweaked 一个很特别的小乌龟
Crafty Turtle

合成公式如下

  • Turtle + 工作台 = Crafty Turtle
  • Advanced Turtle + 工作台 = Advanced Crafty Turtle
  • Crafty Turtle + Speaker = Crafty Noisy Turtle
  • Advanced Crafty Turtle + Speaker = Advanced Crafty Noisy Turtle
  • Crafty Turtle + Wireless Modem = Crafty Wireless Turtle
  • Advanced Crafty Turtle + Wireless Modem = Advanced Crafty Wireless Turtle
  • Crafty Turtle + Ender Modem = Crafty Ender Turtle
  • Advanced Crafty Turtle + Ender Modem = Advanced Crafty Ender Turtle
  • Crafty Turtle + 钻石斧 = Crafty Felling Turtle
  • Advanced Crafty Turtle + 钻石铲 = Advanced Crafty Digging Turtle
  • 依此类推 .....

也就是说一只合成龟你只能再给牠声音、网路、作业工具三选一
而它的实际作用如其名,可以做自动合成
你必须把牠的储物箱左上方的 9 格当作是工作台的合成箱
以编号来说,就是
1, 2, 3
5, 6, 7
9, 10, 11
合成後会把产物放在有空位的其他格子
来看图更清楚
CC: Tweaked Crafty Turtle
像这样摆 8 个鹅卵石,就可以得到一个熔炉

直接在 Lua 互动环境中输入 turtle api craft() 即可

turtle.craft()

CC: Tweaked Crafty Turtle

如果你材料够多,也可以一次产出多个东西
CC: Tweaked Crafty Turtle
这将就可以一次产出三个物品

turtle.craft(3)

材料不够,或是摆放位置无法合成任何物品时时,craft 回传 false
并印出讯息 No matching recipes

而如果你只是想知道目前的排列,是否可以合成出什麽东西
并不打算真的作合成,可以输入

turtle.craft(0)

如果你想要边挖矿,边做合成,就可能需要
(Advanced) Crafty Mining Turtle
在地底挖矿,会得到大量鹅卵石,可以马上组合成鹅卵石半砖、鹅卵石墙等

要怎麽让小乌龟自己拿东西

至今为止,都是我手动拿东西给小乌龟,包括燃料
那麽,难道不能更懒一点,叫小乌龟自己拿,我告诉牠我的储物箱位置就好吗?
有的!可以!而且这倒不是 Crafty Turtle 专属
只要是 Turtle 都可以
有三个 API suck(), suckUp(), suckDown() 取其吸收的英文原意
分别是拿取前方物品、拿取上方物品、拿取下方物品
而且这包括前方、上方、下方的储物箱
除了储物箱之外,有暂时存放物品的东西也可以,包括木桶、漏斗、漏斗矿车 ... 等等
所以只要把小乌龟移到储物箱并执行 turtle.suck() 就可以一次一组东西
例如 10 个鹅卵石、20 个桦木材

如果想要精准的控制取得的个数
那麽可以执行

turtle.suck(3)

就会只取得 3 个单位的物品,例如 3 个鹅卵石或 3 个桦木材等等,就看储物箱放什麽

像这张图,只要执行 turtle.suckUp() 就可以从上方储物箱拿取物品
CC: Tweaked Turtle Funnel

让小乌龟当储物箱,被动取得所需物品

小乌龟的合成公式里头,就有一个储物箱
所以你完全可以把它当作储物箱使用,而且还是个可以移动的储物箱喔!!
一样看上面那图
我故意把漏斗导向小乌龟,这样漏斗一有东西,就直接进了小乌龟的肚子里
这是小乌龟被动取得物品的方式

要怎麽移动小乌龟储物箱内的物品

稍早前说到合成,需要特定的「排列」才能「组合」成功
但总不可能每次要组合的时候,得还要亲自去帮小乌龟排好材料吧!
能让它自己排好吗?我就是懒!
小乌龟提供了 turtle.transferTo( slotNum, [quantity] ) 这个 API
可以把目前的物品,移动 quantity 数量到指定的 slot

我们可以这样写

turtle.select(1)    -- 选择小乌龟第一格 slot
local data = turtle.getItemDetail() -- 接着判断是否为鹅卵石
if data.name == 'minecraft:cobblestone' and data.count >= 8 then
    turtle.transferTo(2, 1)
    turtle.transferTo(3, 1)
    turtle.transferTo(5, 1)
    turtle.transferTo(7, 1)
    turtle.transferTo(9, 1)
    turtle.transferTo(10, 1)
    turtle.transferTo(11, 1)

    turtle.craft()
end

这样就会把第一格的鹅卵石放置到其他地方,以便最後组合成熔炉
当然这是很单纯的情况,它身上只有第一格有鹅卵石,其他都是空的
实际情况应该是更复杂,就得自己做各种判断了

让小乌龟自动把物品放进储物箱

现在小乌龟已经可以主动或被动拿取物品
并自动合成新的物品
那如果要取得这些合成品呢?
之前我在 Mining Turtle 的探索中,把小乌龟挖到的东西全都倒在地上,然後自己过去捡起来
这是一种方式
用的函数是 turtle.drop()

不过事实上,它是可以自动帮我们放回储物箱的!
同样是上面那张图
我可以这样写

turtle.select(3)
turtle.dropUp()

这样就可以把第三格的物品全部放回到储物箱,主人不用三不五时去找小乌龟捡东西 XD

如果要精准的控制放置的数量,就是

turtle.dropUp(10) -- 只会放 10 个物品到储物箱

今天的分享到这里
最後一回,我打算把之前玩过的再拿回来应用一番
明天见~


<<:  (特别篇)统计学的陷阱区,用资料绘制盒须—爬虫D3做成D3(下)

>>:  D29 - 走!去浏览器自己刻表单选 pizza 口味

LineBot - 身份验证

因为 LineBot 是利用 Line官方帐号的机制在运作,所以只要加入好友,就可以使用,我只是要自...

[Day2] 断词介绍

一. 为何需要断词 最主要的原因就是中文的最小一个单位就是一个词,通常不能直接喂一个句子给你的语言模...

Day33 参加职训(机器学习与资料分析工程师培训班),网站设计与网页工程技术

上午: AIoT资料分析应用系统框架设计与实作 今日运用Django架设Framework,只完成一...

[ Day 21 ] 路由管理 - React Router 2/2

在上一篇 Day 20 我们介绍了 React Router 的基本概念以及 React Rout...

前端工程学习日记第18天-Emmet简易教学 - 快速上手包

资料来源:https://pjchender.blogspot.com/2016/07/emmet....