大神告诉你如何在用命令方块在原版MC中制作背包合成系统

时间:2017-08-30 来源:88130安卓下载 作者:佚名

  今天小编为大家解析一下如何在用命令方块在原版MC中制作背包合成系统,想知道的玩家一定要看下面的内容!

  原作者:jim~命令傀儡师

  首先,我们要理清思路

  首先需要做到检测到相应的物品栏有相应的物品

  展示里面是两根木棍合成了一根长棍

  在正常情况下我们需要

  testfor @a {Inventory:[{Slot:16b,id:"minecraft:stick",Count:1b,Damage:0s}]} 然后命令方块连接比较器输出

  为了应和函数以及加快运行,我们可以用积分板tag做到

  1.检测到相应物品栏的相应物品加上tag "a"和"b"

  scoreboard players tag @a add a {Inventory:[{Slot:16b,id:"minecraft:stick",Count:1b,Damage:0s}]}

  scoreboard players tag @a add b {Inventory:[{Slot:25b,id:"minecraft:stick",Count:1b,Damage:0s}]}

  如何输出结果是下一个关键,这里,我们得同时探测拥有tag "a" "b"的玩家,这时很容易有个误区

  直接在选择器那里输入[tag=a,tag=b],但是这样是不行的会导致只有a或只有b的玩家一起被选择

  所以得这么做execute @a[tag=a] ~ ~ ~ execute @s[tag=b] ~ ~ ~

  在选择了tag=a的玩家后再检测自身tag=b

  2.输出

  execute @a[tag=a] ~ ~ ~ execute @s[tag=b] ~ ~ ~ scoreboard players tag @s add c

  诶?你说我没给物品啊.这是下一个步骤,如果直接输出物品会导致tag"a""b"没有删除而继续给予结果

  所以我们加上tag "c"来判定合成,于是又到下一个关键----删除合成物品以及tag还有给予物品

  这件事如果在同一tick中做会导致物品还没被给予合成物品就被删除了

  所以这件事得分几个tick来做

  3.生成积分板,合成物品分开做

  scoreboard objectives add d dummy

  首先,有了tag"c"就得开始记分

  scoreboard players add @e[tag=c] d 1

  然后删除合成物品

  execute @e[tag=c,score_d_min=1,score_d=1] ~ ~ ~ /replaceitem entity @s slot.inventory.16 minecraft:air 1 0

  execute @e[tag=c,score_d_min=2,score_d=2] ~ ~ ~ /replaceitem entity @s slot.inventory.7 minecraft:air 1 0

  再然后给予成品

  execute @e[tag=c,score_d_min=4,score_d=4] ~ ~ ~ /give @s stick 1 0 {display:{Name:"长棍",Lore:["通过多根木棍的连接组成的长棍"]},AttributeModifiers:[{Operation:0,UUIDLeast:1413204334,UUIDMost:1413204334,Amount:2,AttributeName:generic.attackDamage,Name:Attack,Slot:mainhand}]}

  删除tag "a" "b"

  execute @e[tag=c,score_d_min=4,score_d=4] ~ ~ ~ scoreboard players tag @s remove a

  execute @e[tag=c,score_d_min=4,score_d=4] ~ ~ ~ scoreboard players tag @s remove b

  当c被删除时,d将不再加分所以tagc是最后一个被删除的

  execute @e[tag=c,score_d_min=5,score_d=5] ~ ~ ~ scoreboard players tag @s remove c

  最后d归0

  execute @e[score_d_min=5,score_d=5] ~ ~ ~ scoreboard players set @s d 0

  诶?是不是看起来很完整,是不是以为完成了可以用了?

  错了,现在你可以用以上指令执行一下,会发现....

  是的,一根木棍就合成了,但是一共需要两根

  那么,问题在哪呢?

  在于

  scoreboard players tag @a add a {Inventory:[{Slot:16b,id:"minecraft:stick",Count:1b,Damage:0s}]}

  scoreboard players tag @a add b {Inventory:[{Slot:25b,id:"minecraft:stick",Count:1b,Damage:0s}]}

  它们只要探测到了就加上"a"或"b"

  即使物品已经挪走了,tag也还在那

  所以我们为了防止这种事发生

  比较好的做法是在一定时间后把tag"a""b"删掉

  4.防止出错

  生成积分板

  scoreboard objectives add e dummy

  加分

  scoreboard players add @a e 1

  清除tag

  execute @e[score_a_min=1] ~ ~ ~ scoreboard players tag @s remove a

  execute @e[score_b_min=1] ~ ~ ~ scoreboard players tag @s remove b

  现在使用后效果就和之前所展示的成品一样了

  这就是全部,完全由我自己研发,可能有些不足,目前看来,是适合多人使用的,但是尚未测试,

  所以出错也是有可能发生的

  今天小编为大家解析一下如何在用命令方块在原版MC中制作背包合成系统,想知道的玩家一定要看下面的内容!

  原作者:jim~命令傀儡师

  首先,我们要理清思路

  首先需要做到检测到相应的物品栏有相应的物品

  展示里面是两根木棍合成了一根长棍

  在正常情况下我们需要

  testfor @a {Inventory:[{Slot:16b,id:"minecraft:stick",Count:1b,Damage:0s}]} 然后命令方块连接比较器输出

  为了应和函数以及加快运行,我们可以用积分板tag做到

  1.检测到相应物品栏的相应物品加上tag "a"和"b"

  scoreboard players tag @a add a {Inventory:[{Slot:16b,id:"minecraft:stick",Count:1b,Damage:0s}]}

  scoreboard players tag @a add b {Inventory:[{Slot:25b,id:"minecraft:stick",Count:1b,Damage:0s}]}

  如何输出结果是下一个关键,这里,我们得同时探测拥有tag "a" "b"的玩家,这时很容易有个误区

  直接在选择器那里输入[tag=a,tag=b],但是这样是不行的会导致只有a或只有b的玩家一起被选择

  所以得这么做execute @a[tag=a] ~ ~ ~ execute @s[tag=b] ~ ~ ~

  在选择了tag=a的玩家后再检测自身tag=b

  2.输出

  execute @a[tag=a] ~ ~ ~ execute @s[tag=b] ~ ~ ~ scoreboard players tag @s add c

  诶?你说我没给物品啊.这是下一个步骤,如果直接输出物品会导致tag"a""b"没有删除而继续给予结果

  所以我们加上tag "c"来判定合成,于是又到下一个关键----删除合成物品以及tag还有给予物品

  这件事如果在同一tick中做会导致物品还没被给予合成物品就被删除了

  所以这件事得分几个tick来做

  3.生成积分板,合成物品分开做

  scoreboard objectives add d dummy

  首先,有了tag"c"就得开始记分

  scoreboard players add @e[tag=c] d 1

  然后删除合成物品

  execute @e[tag=c,score_d_min=1,score_d=1] ~ ~ ~ /replaceitem entity @s slot.inventory.16 minecraft:air 1 0

  execute @e[tag=c,score_d_min=2,score_d=2] ~ ~ ~ /replaceitem entity @s slot.inventory.7 minecraft:air 1 0

  再然后给予成品

  execute @e[tag=c,score_d_min=4,score_d=4] ~ ~ ~ /give @s stick 1 0 {display:{Name:"长棍",Lore:["通过多根木棍的连接组成的长棍"]},AttributeModifiers:[{Operation:0,UUIDLeast:1413204334,UUIDMost:1413204334,Amount:2,AttributeName:generic.attackDamage,Name:Attack,Slot:mainhand}]}

  删除tag "a" "b"

  execute @e[tag=c,score_d_min=4,score_d=4] ~ ~ ~ scoreboard players tag @s remove a

  execute @e[tag=c,score_d_min=4,score_d=4] ~ ~ ~ scoreboard players tag @s remove b

  当c被删除时,d将不再加分所以tagc是最后一个被删除的

  execute @e[tag=c,score_d_min=5,score_d=5] ~ ~ ~ scoreboard players tag @s remove c

  最后d归0

  execute @e[score_d_min=5,score_d=5] ~ ~ ~ scoreboard players set @s d 0

  诶?是不是看起来很完整,是不是以为完成了可以用了?

  错了,现在你可以用以上指令执行一下,会发现....

  是的,一根木棍就合成了,但是一共需要两根

  那么,问题在哪呢?

  在于

  scoreboard players tag @a add a {Inventory:[{Slot:16b,id:"minecraft:stick",Count:1b,Damage:0s}]}

  scoreboard players tag @a add b {Inventory:[{Slot:25b,id:"minecraft:stick",Count:1b,Damage:0s}]}

  它们只要探测到了就加上"a"或"b"

  即使物品已经挪走了,tag也还在那

  所以我们为了防止这种事发生

  比较好的做法是在一定时间后把tag"a""b"删掉

  4.防止出错

  生成积分板

  scoreboard objectives add e dummy

  加分

  scoreboard players add @a e 1

  清除tag

  execute @e[score_a_min=1] ~ ~ ~ scoreboard players tag @s remove a

  execute @e[score_b_min=1] ~ ~ ~ scoreboard players tag @s remove b

  现在使用后效果就和之前所展示的成品一样了

  这就是全部,完全由我自己研发,可能有些不足,目前看来,是适合多人使用的,但是尚未测试,

  所以出错也是有可能发生的

热门搜索

手游排行榜

  • 最新排行
  • 最热排行
  • 评分最高