交互性交易指的是与交易者(NPC)通过对交易物品的操作来达成交易。
一般性交易指针对于村民的交易面板,交互性交易对所有实体均可执行
(实例:地图《法尔之旅》中药店前的感冒村民通过扔给他"感冒药"达成交换金苹果的交易[其原理是漏斗])
指令方块将没有漏斗的局限,完全命令方块控制,对所有物品、所有交易均执行

效果/展示:


这是一个极寒的雪山,地处南极


趁今夜没有风雪,看见环山中有火光,便前来一探。


原来山谷中有座冰屋,今天就来借住一晚。


里面有个友善(在原理:处将解答)的居民。


山壁无法攀援。


雪质坚硬。


冰屋地势低矮,却能储存热量。


屋后有四只雪橇犬。


经沟通,这位爱斯基摩人同意与我们交换一些物品。


扔给他一些皮革,会得到一些熟鱼


我们还需要一些。


交易成功。


同时他也需要骨头喂养雪橇犬。给予骨头


得到20经验


再次给予,但是好像他不需要了,交易失败


它也需要一些熟食及肉食使雪橇犬保暖。给予牛排


给予猪排


给予腐肉


他好像很开心的样子,给了我一把钓鱼竿,而且必定获得


不错的附魔。

原理翻页

原理:


全部区域。[场景纯手撸,建筑渣撸了十五分钟]



先来放出上文提到的


刷出一个被动型爱斯基摩人
  1. /summon PigZombie ~ ~-2 ~1
复制代码




交易原理区:


同实体方块交互一样,设置计判


红色羊毛:创建计判变量。
  1. /scoreboard objectives add 某名 dummy
复制代码


高频并使用红石来连接以下部分:


/单物品交易
按照红石信号强度来决定先后顺序。(激活顺序就是指令排列顺序[先上后下])
黄:皮革。
  1. /scoreboard players set @e[type=Item] 某名 1 {Item:{id:"minecraft:leather"}}
复制代码
给皮革设置计判1

  1. /execute @e[type=Item,score_某名_min=1,score_某名=1] ~ ~ ~ execute @e[type=PigZombie,name=Eskimo] ~ ~1 ~ give @p cooked_fish
复制代码
当皮革(计判1)与爱斯基摩人重合,则给予玩家一条熟鱼。



关于交易失败:
由于物品抛出去的方向有个范围随机值,又因为计分板只能判定实体在实体范围内(F3+B可查看),所以有时候物品抛掷出去虽接触实体却并没有与实体重合。但一旦接触地面,物品掉落自动修正,所以导致下面的命令却能执行:
  1. /execute @e[type=PigZombie,name=Eskimo] ~ ~ ~ execute @e[type=Item,score_某名_min=1,score_某名=1,r=1] ~ ~ ~ kill @e[type=Item,score_某名_min=1,score_某名=1,r=1]
复制代码
皮革(计判1)与爱斯基摩人重合,清除皮革。




与黄同理,蓝:骨头
  1. /scoreboard players set @e[type=Item] 某名 2 {Item:{id:"minecraft:bone"}}
复制代码
给骨头设置计判2
  1. /execute @e[type=Item,score_某名_min=2,score_某名=2] ~ ~ ~ execute @e[type=PigZombie,name=Eskimo] ~ ~1 ~ xp 20 @p
复制代码
当骨头(计判2)与爱斯基摩人重合,则给予玩家20经验。
  1. /execute @e[type=PigZombie,name=Eskimo] ~ ~ ~ execute @e[type=Item,score_某名_min=2,score_某名=2,r=1] ~ ~ ~ kill @e[type=Item,score_某名_min=2,score_某名=2]
复制代码
骨头(计判2)与爱斯基摩人重合,清除骨头。





绿:多物品交易
由于指令方块没有交易面板只有两个交易槽的限制,所以交易双方的物品都是无限的。


绿:设置计判。
  1. /scoreboard players set @e[type=Item] 某名 5 {Item:{id:"minecraft:rotten_flesh"}}
复制代码
  1. /scoreboard players set @e[type=Item] 某名 4 {Item:{id:"minecraft:cooked_porkchop"}}
复制代码
  1. /scoreboard players set @e[type=Item] 某名 3 {Item:{id:"minecraft:cooked_beef"}}
复制代码
分别给腐肉、猪排、牛排设置计判5、4、3。



紫:交易
  1. /execute @e[type=PigZombie,name=Eskimo] ~ ~ ~ execute @e[type=Item,score_某名_min=3,score_某名=3,r=1] ~ ~ ~ execute @e[type=Item,score_某名_min=4,score_某名=4,r=1] ~ ~ ~ execute @e[type=Item,score_某名_min=5,score_某名=5,r=1] ~ ~ ~ give @p fishing_rod 1 0 {ench:[{id:61,lvl:3},{id:62,lvl:2}]}
复制代码
当计判3(牛排)、 4(猪排)、5(腐肉)与爱斯基摩人重合,则给予玩家一个"海之眷属3""饵诱2"的钓鱼竿。



黑:清除
  1. /execute @e[type=PigZombie,name=Eskimo] ~ ~ ~ kill @e[type=Item,score_某名_min=3,score_某名=3,r=1]
复制代码
  1. /execute @e[type=PigZombie,name=Eskimo] ~ ~ ~ kill @e[type=Item,score_某名_min=5,score_某名=5,r=1]
复制代码
  1. /execute @e[type=PigZombie,name=Eskimo] ~ ~ ~ kill @e[type=Item,score_某名_min=4,score_某名=4,r=1]
复制代码
计判3(牛排)、 4(猪排)、5(腐肉)与爱斯基摩人重合,分别清除。


关于必得:
由于三个物品扔出去有时间差,所以有段时间可以提供物品掉落修正,三个物品就能自动重合,就能必得。
如果让单物品交易必得,可以在交易者处生成一个无法捡起交易物,达到同样效果。


存档将在下次教程中放出。
(最近版本更新致使许多Bug产生,包括命令方块高频无法正常运行。)


@songfeitong @tyson @我的世界sun123 @PotatoMaster101 @ghyzhi10086 @审奥不解释 @67880371 @kongbaiyo @zhjjhz
[groupid=546]Command Block Logic[/groupid]