我的世界中有许许多多有趣的东西,今天小编给大家带来的是我的世界的城堡(CB)机关触发装置建造教程,希望大家喜欢。
展 示
>>demonstrate<<
终于!我到达旅行的目的地了
跟随这张地图(世界地图?!)我终于来到了这个神秘的房子
据说里面有神秘的东西
现在就让我进去一探究竟
哎哟,我勒个去
门打不开真是蛋疼
不过没事,凭我多年的冒险经验
一定有什么机关
让我探索一下
打开旁边的箱子
里面有两把剑
左边的一把似乎有特殊的凹槽
右边仅仅是一把普通的木剑
嗯...
接着我发现门旁边这个地方...
有点可疑!石头强度不高...
仿佛还是空心的?
成功用剑捣碎了这个石头
不过木剑还不能开门呢
要特殊的这把剑才能开
原 理
>>Principle<<
想必同学们看到插入石头里面时都明白了
这是利用盔甲架
summon ArmorStand ~ ~1 ~ {ShowArms:1, NoGravity:1, Invulnerable:1, CustomName:"Slot"}
说是生成带手臂的盔甲架,其实根本不仅仅如此
summon是召唤实体应该不用说了吧,ArmorStand就是盔甲架,~ ~1 ~是指位置,~是代指当前坐标
~1就是当前坐标+1
这些应该都知道吧,{}就是NBT标签了
ShowArms就是为1时让盔甲架显示手臂的标签
NoGravity就是为1时让盔甲架完全不动(不受重力影响)的标签,为了让你能随便把它摆哪
CustomName是指定它的名字,引号里面的可以随便改,主要是为了方便之后的操纵
其实这一步可以省略,因为summon的时候你就可以设置好
当然如果你没办法或者懒得在summon之前计算好它的姿势你就可以之后用一些指令来进行若干次修改
首先调整它的位置就是用tp了
tp @e[name=Slot] x y z
这里就体现了之前那个CustomName有什么用,可以方便的选中实体
x y z就是相应坐标,你当然可以让其为小数来精确设定,而这也是NoGravity的用处所在
之后我们就要调整它手臂的姿势了
entitydata @e[name=Slot] {Pose:{RightArm:[0:numf,1:numf,2:numf]}}
其中num是指数字,不是什么需要的,把它换成数字,就是更改手臂的角度
另外Pose(姿势)标签的一个说明:
一切都准备好后我们把我们用以触发机关的东西塞它手上
然后让它隐身(隐身也是summon的时候如果你计算好了可以直接加的标签)
entitydata @e[name=Slot] {Invisible:1}
MC修改完它的NBT标签的同时会在聊天框提示
然后我们可以看到盔甲架拿着我的剑时有一条标签
Equipment:[0:{id:"minecraft:wooden_sword",Count:1,tag:{display:{Name:"异质残剑"}}}]
这个我们之后有用
一切都准备好了!
我们就开始制作核心系统吧!
首先我们需要一个时钟电路
嗯 我自然推荐fill大法
fill大法是什么呢
你需要知道一个知识
大概是mc会先执行坐标x轴上的命令方块 其中先执行坐标x值小的然后大的
x执行完了再执行y轴,同上
最后是z轴
(可能语言有误,大家自己去试试就懂了)
因此,我们可以在白色命令方块(先执行的)那里输入
fill ~1 ~ ~ ~1 ~ ~10 stone 0 replace redstone_block
将旁边那一列填充为石头
接着再在黑色命令方块(后执行的)那里输入
fill ~-1 ~ ~ ~-1 ~ ~10 redstone 0 replace stone
最后在那一列放一个红石块就行了
会先执行白色,红石块会被替换成石头,不过接着还要执行黑色的
于是一瞬间石头又被替换回红石块,又执行白色,以此循环,周而复返
等等,replace好像没必要啊?
这是为了方便你拆除和增加刷新的红石块
时钟准备好了我们就要做真正的检测器了
我们得用计分板
首先增加一个分数
scoreboard objectives add gotKey dummy
增加一个名为gotKey的变量
其中gotKey只是变量名,可随便你改
接下来我们在红色命令方块那里输入
scoreboard players set @e[name=Slot] gotKey 0
不断清零盔甲架的分数
对面那个命令方块则输入
scoreboard players set @e[name=Slot] gotKey 1 {Equipment:[0:{id:"minecraft:wooden_sword",Count:1,tag:{display:{Name:"异质残剑"}}}]}
这里前面的@e[]搜索一个叫Slot的实体,然后后面{}里的仍然是NBT标签
这里是用来探测的
你可以发现这里NBT标签就是我之前留下来的那条
因为Equipment就是指定拿(穿、戴)着什么东西的标签
而Equipment里面的{}就是我们的相应物品的NBT标签
如果检测叫做Slot的实体的标签符合以上的话 就会将它的gotKey分数设为1
前面我们说了 x轴较大的会后执行,所以当检测到它拿着相应东西时
前面那个命令方块虽然在不断重置盔甲架的分数,但瞬间(比其它任何命令都先)又执行后面这个命令方块将其设为1
所以分数可以总认作为1
最后两个命令方块就是不一定的了,随便你设定
可以说前面才是触发装置 才是我讲的 后面输出端就是另外一回事了
比如我这里是要开门
那么我就需要当它没拿着相应物品时关门
拿着时开门
则当分数gotKey为1时开门,为0时关门
那么我们就需要两个命令方块(这里顺序已经无所谓了)
execute @e[name=Slot,score_gotKey_min=1] ~ ~ ~ fill x1 y1 z1 x2 y2 z2 redstone_torch
execute @e[name=Slot,score_gotKey=0] ~ ~ ~ fill x1 y1 z1 x2 y2 z2 air
这里的x1 y1 z1 x2 y2 z2就是指铁门下两层的那两个方块
redstone_torch就是红石火把 air是空气
到这里大家应该完全明白了吧!
不知道对你有没有什么帮助呢?
那么 这期就到这了 大家下次再见~
累计评论0条
展开其余评论