981867644
我知道以前有俩个大神教过我,原理大概就是用俩个RCB方块高频探测地上对应的物品(比如苹果和金块),然后又用俩个RCB持续将地上的苹果和金块分别吧tag+1和+2。最后又用testfor检测地上tag为1和2的物品来完成后续的指令。。。那么问题来了!testfor被合并为execute后我又该怎么做呢?testfor是因为可以通过比较器来进行输出和关闭。可是execute貌似只能够输出啊。。。那该怎么做呢?(红字后面的废话看不懂就不要管了。。。用1.13来例举给我方法就行了,谢谢。)

⊙v⊙
你红字的"最后"那部分改为...
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识别+号的吗...

⊙v⊙
略微写错点东西...选择器补上distance=..1
kill @e[tag=+2改为tag=+1

然后又看了一眼...
可以不用tag了,然后execute的检测
选择器直接这样写
@e[type=item,nbt={掉落物的nbt标签...}]


然后,别丢地上了,为何不考虑下loottable...

玄素
正好前些日子写了个东西是现成的例子……
  1. 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]}
  2. execute at @e[tag=new3] run playsound minecraft:entity.player.levelup ambient @p ~ ~ ~ 0.5 2
  3. execute at @e[tag=new3] run particle minecraft:crit ~ ~ ~ 0 0.2 0 0.5 20
  4. execute at @e[tag=new3] run kill @e[type=item,nbt={Item:{id:"minecraft:snow_block",Count:2b}},sort=nearest,limit=1]
  5. execute at @e[tag=new3] run kill @e[type=item,nbt={Item:{id:"minecraft:pumpkin",Count:1b}},sort=nearest,limit=1]
  6. execute at @e[tag=new3] run kill @e[type=item,tag=!new3,nbt={Item:{id:"minecraft:iron_shovel",Count:1b}},sort=nearest,limit=1]
  7. tag @e[tag=new3] remove new3
复制代码
因为是1.13的缘故,这里不使用tag来做物品实体标记,直接连续execute指定nbt物品,也是可以的,楼上也是已经提到了。
简单地说这里的思路就是exe选到东西以后直接刷个带tag的物品,利用tag标记物品来确认是否执行后续操作,最后摸掉tag。
同理,如果你想在execute选择到掉落的物品之后summon一个临时marker来做检测和处理,也是可以的。
附一句,这里用了as @e at @s来处理第一个物品的选中,后续的那一堆as其实替换成if entity都是可以的……

pineapple_
那是啥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

pineapple_
后边那俩命令全翻车,重写

  1. /execute if entity @e[tag=1,nbt={Item:{Count:1b}}]
复制代码

  1. /execute if entity @e[tag=1,nbt={Item:{Count:1b}}] run say 1
复制代码

981867644
⊙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还要这样大规模更改格式。。。那抱歉,我退游呜呜呜呜,从此再也不玩命令方块。。。每次改动都太恶心了

第一页 上一页 下一页 最后一页