本帖最后由 PotatoMaster101 于 2014-3-8 03:10 编辑

大家好。今天教大家如何用指令方块探测物品展示框以及里面的物品。次教程比较简单,就不多详细说了。这个可以探测物品展示栏里面的物品,转位,方位,物品展示栏的方位等等。做冒险地图时可以做成一个物品旋转锁什么。

()()()()()()()---\\--分割线--//---()()()()()()()

首先是探测游戏地图里有没有物品展示栏。指令:
  1. /testfor @e[type=ItemFrame]
复制代码
这条指令的意思就是探测地图里是否有一个类型是物品展示栏的生物。在MC里,物品展示栏并不是一种方块,而是一个生物类型,比如掉落沙,点燃的TNT等等。当玩家在地图的任何一个地方放一个物品展示框,指令方块就会探测成功给出输出。要让指令方块给出输出就在后面放一个比较器。


之后教大家探测物品展示栏的XYZ坐标。如果在一个世界里有很多物品展示栏的话,那么上一条指令就没什么用了,因为并没有加入是哪一个物品展示栏。要区分物品展示栏的办法是加入物品展示栏的XYZ坐标。指令:
  1. testfor @e[type=ItemFrame]
  2. {TileX:-430,TileY:5,TileZ:126}
复制代码
大家看见,上面的指令加入了3个NBT:TileX,TileY和TileZ。这3个NBT就是锁定物品展示栏位置用的。TileX就是物品展示栏的X坐标,Y就是Y坐标,Z就是Z坐标。(注意:如果物品展示栏放在一个方块上面,那么物品展示栏的坐标并不是在那个方块的里面,而是算在那个方块的旁边一个方块)。


之后是如何探测物品展示栏方的方位。大家知道,物品展示栏可以放在一个方块的4面,所以探测物品展示栏的面向方位也很重要。指令:
  1. testfor @e[type=ItemFrame]
  2. {TileX:-430,TileY:5,TileZ:126,Facing:3b}
复制代码
大家看见,这条指令和刚才的指令相同,不过就加入了一个Facing:3b。这个意思就是物品展示栏面向3。(后面的b是单位,一定要填写。Byte的意思)。方位讲解:


0b - 面向南边(South)
1b - 面向西边 (West)
2b - 面向北边 (North)
3b - 面向东边 (East)

之后来教大家如何探测物品展示栏里的物品。指令:
  1. testfor @e[type=ItemFrame]
  2. {TileX:-430,TileY:5,TileZ:126,Facing:2b,ItemRotation:7b,Item:{id:"minecraft:diamond_sword",tag:{display:{Name:"TestSword"}}}}
复制代码
大家看见,这条指令里多了很多NBT。NBT讲解:


ItemRotation: 后面写0b-7b。意思是物品展示栏里的物品转位。自从1.8更新后,物品展示栏可以转动里面的物品8次了。注意:b是单位,一定要加。0b是默认转位,然后每次转位一下数值就+1。
Item: 物品属性。在Item后面的{}括号里的NBT都和物品有关。这个我就不多说了,和/give什么差不多。id:物品的id。这里写的minecraft:diamond_sword就是钻石剑的意思。后面的tag:{display:{Name:"TestSword"}}的意思就是增对物品名字进行探测,探测一个叫“TestSword”的物品。

所以指令最后结合起来就是探测一个在-430,5,126位置上的一个朝向北边的物品展示栏。里面的物品是一个名字叫“TestSword”的钻石剑,转动了7下。这个也是制作物品转位锁的方法。

()()()()()()()---\\--分割线--//---()()()()()()()

之后来说下地图。地图放在物品展示栏里面和其他物品与众不同,因为物品可以转动8下,而地图只可以转动4下。但是在探测时,地图的方位还是0b-7b,而不是0b-4b。因为地图的一个转位有2个数值在控制。讲解:
首先是0b,也就是地图刚放上去默认的样子。这时候的地图方位是0b。当转动一下后,地图的方位变成了1b。于是大家可以再转动3下地图,把地图的方位重新转回刚才的0b的样子,但是此时的地图已经不是0b了,而变成了4b。所以,地图可以转动4次,但是却有8个数值在控制。结论是:

当地图刚放去后:方位是0b。转动4下后重新回到0b状态,此时数值变成了4b。
转动一下后:变成1b,如果转动4下后,数值会变成5b。
以此类推,所以地图的唯一难点就是地图只能转4次,但是数值有8个。所以第一次转4次是0b-3b,第二次是4b-7b。

=============END===============