


你红字的"最后"那部分改为...
execute as @e[tag=+1,type=item] at @s run execute as @e[tag=+2,type=item,limit=1,sort=nearest] at run 命令
那么一条后面的命令为summon @s 一个自定义物品
另一条后面的命令为kill @e[tag=+2,limit=1,sort=nearest]
再来一条跟上kill @s
你要知道以前的操作是通过testfor判断检测,之后后续操作。
而现在,直接以execute进行判断和执行,为单个操作...
话说tag识别+号的吗...
execute as @e[tag=+1,type=item] at @s run execute as @e[tag=+2,type=item,limit=1,sort=nearest] at run 命令
那么一条后面的命令为summon @s 一个自定义物品
另一条后面的命令为kill @e[tag=+2,limit=1,sort=nearest]
再来一条跟上kill @s
你要知道以前的操作是通过testfor判断检测,之后后续操作。
而现在,直接以execute进行判断和执行,为单个操作...
话说tag识别+号的吗...
略微写错点东西...选择器补上distance=..1
kill @e[tag=+2改为tag=+1
然后又看了一眼...
可以不用tag了,然后execute的检测
选择器直接这样写
@e[type=item,nbt={掉落物的nbt标签...}]
然后,别丢地上了,为何不考虑下loottable...
kill @e[tag=+2改为tag=+1
然后又看了一眼...
可以不用tag了,然后execute的检测
选择器直接这样写
@e[type=item,nbt={掉落物的nbt标签...}]
然后,别丢地上了,为何不考虑下loottable...
正好前些日子写了个东西是现成的例子……复制代码因为是1.13的缘故,这里不使用tag来做物品实体标记,直接连续execute指定nbt物品,也是可以的,楼上也是已经提到了。
简单地说这里的思路就是exe选到东西以后直接刷个带tag的物品,利用tag标记物品来确认是否执行后续操作,最后摸掉tag。
同理,如果你想在execute选择到掉落的物品之后summon一个临时marker来做检测和处理,也是可以的。
附一句,这里用了as @e at @s来处理第一个物品的选中,后续的那一堆as其实替换成if entity都是可以的……
- execute at @a[tag=insnow] as @e[distance=..4,type=item,nbt={Item:{id:"minecraft:snow_block",Count:2b}}] at @s as @e[distance=..1,type=item,nbt={Item:{id:"minecraft:pumpkin",Count:1b}}] as @e[distance=..1,type=item,nbt={Item:{id:"minecraft:iron_shovel",Count:1b}}] run summon item ~ ~ ~ {Tags:["new3"],Item:{id:"minecraft:iron_shovel",Count:1b,tag:{ench:[{id:0s,lvl:1s}],HideFlags:63,snowball:1b}},Motion:[0.0d,0.2d,0.0d]}
- execute at @e[tag=new3] run playsound minecraft:entity.player.levelup ambient @p ~ ~ ~ 0.5 2
- execute at @e[tag=new3] run particle minecraft:crit ~ ~ ~ 0 0.2 0 0.5 20
- execute at @e[tag=new3] run kill @e[type=item,nbt={Item:{id:"minecraft:snow_block",Count:2b}},sort=nearest,limit=1]
- execute at @e[tag=new3] run kill @e[type=item,nbt={Item:{id:"minecraft:pumpkin",Count:1b}},sort=nearest,limit=1]
- execute at @e[tag=new3] run kill @e[type=item,tag=!new3,nbt={Item:{id:"minecraft:iron_shovel",Count:1b}},sort=nearest,limit=1]
- tag @e[tag=new3] remove new3
简单地说这里的思路就是exe选到东西以后直接刷个带tag的物品,利用tag标记物品来确认是否执行后续操作,最后摸掉tag。
同理,如果你想在execute选择到掉落的物品之后summon一个临时marker来做检测和处理,也是可以的。
附一句,这里用了as @e at @s来处理第一个物品的选中,后续的那一堆as其实替换成if entity都是可以的……
那是啥dalao居然教你testfor……
上面都说的很清楚了,就不多说了
我只是想告诉你1.13的testfor真的就只是合在了execute里
举个例子吧,原来的/testfor @e[tag=1] {Item:{Count:1b}}+比较器
现在是/execute if @e[tag=1,nbt={Item:{Count:1b}}]+比较器
但是,十分不推荐这种做法!!
因为execute后面可以加run,例如:
/execute if @e[tag=1,nbt={Item:{Count:1b}}] run say 1
上面都说的很清楚了,就不多说了
我只是想告诉你1.13的testfor真的就只是合在了execute里
举个例子吧,原来的/testfor @e[tag=1] {Item:{Count:1b}}+比较器
现在是/execute if @e[tag=1,nbt={Item:{Count:1b}}]+比较器
但是,十分不推荐这种做法!!
因为execute后面可以加run,例如:
/execute if @e[tag=1,nbt={Item:{Count:1b}}] run say 1
后边那俩命令全翻车,重写
复制代码
复制代码
- /execute if entity @e[tag=1,nbt={Item:{Count:1b}}]
- /execute if entity @e[tag=1,nbt={Item:{Count:1b}}] run say 1
⊙v⊙ 发表于 2018-1-11 17:42
你红字的"最后"那部分改为...
execute as @e[tag=+1,type=item] at @s run execute as @e[tag=+2,type=item ...
谢谢你们啦,我现在已经理解新的execute运作原理了。说实在的,如果以后的版本(1.14包括以后)mojang还要这样大规模更改格式。。。那抱歉,我退游呜呜呜呜,从此再也不玩命令方块。。。每次改动都太恶心了