Minecraft选择器tag=NBT标签问题:如何检测弩射出的带自定义标签烟花
问题原因
- Minecraft固有机制:给物品附加的自定义顶层NBT,在物品被使用转化为对应实体(比如烟花被弩发射)时,会统一存入实体的
tag子节点下,你的观察是正确的。 - 选择器失效的核心原因是NBT数组默认执行完全匹配:你写的
Tags:["test"]要求tag.Tags数组必须恰好只有test一个元素、顺序完全一致,只要存在其他标签或顺序不对就会匹配失败。
正确写法
Java版
在需要匹配的数组元素后加...,即可实现「数组包含该元素」的模糊匹配,建议加上实体类型限定避免误匹配:/execute at @e[type=firework_rocket,nbt={tag:{Tags:["test"...]}}] run <你要执行的后续指令>
如果需要高频检测,可以先给匹配到的实体添加记分板标签,后续用标签选择器检测性能更高:
# 给符合条件的烟花添加记分板标签,只需运行一次/循环低频运行 /execute as @e[type=firework_rocket,tag=!custom_test,nbt={tag:{Tags:["test"...]}}] run tag @s add custom_test # 后续直接用标签选择器检测即可 /execute at @e[type=firework_rocket,tag=custom_test] run <后续指令>
基岩版
基岩版发射后的烟花实体的物品自定义NBT存储在FireworksItem子节点下,写法如下:/execute at @e[type=firework_rocket,nbt={FireworksItem:{tag:{Tags:["test"]}}}] run <后续指令>
内容的提问来源于stack exchange,提问作者hfanatic
相关产品推荐
相关产品推荐

