Minecraft命令方块执行give指令提示“未找到玩家”问题排查
问题原因及解决方法
- 核心问题:连锁命令方块中的
@s指向的是命令方块自身,而非第一个命令中匹配的玩家。
你第一个命令/execute as @a if score @s first_time matches 0仅完成了对玩家的条件检查,但没有将执行主体传递给后续的连锁方块。连锁方块默认以自身为执行主体,用@s自然找不到玩家。 - 两种解决方式:
- 合并为单个命令:把重复命令方块的指令改成:
直接在/execute as @a if score @s first_time matches 0 run give @s stone 1execute中完成条件判断并执行发放物品的操作,无需连锁方块。 - 传递执行主体到连锁方块:若坚持使用连锁方块,将重复命令方块的指令改为:
连锁方块指令保持/execute as @a if score @s first_time matches 0 run execute @s ~ ~ ~give @s stone 1,此时@s会继承前一个命令传递的玩家主体。
- 合并为单个命令:把重复命令方块的指令改成:
- 额外建议:发放物品后记得将玩家的
first_time分数设为1,避免重复发放,可添加一个连锁命令方块,指令为:/scoreboard players set @s first_time 1
内容的提问来源于stack exchange,提问作者Zenn De Craene
相关产品推荐
相关产品推荐

