我的世界1.20.1:检测特定方块存在时执行指定命令的问题排查
Minecraft 1.20.1 放置白色羊毛触发召唤命令失效问题解决
问题说明
- 需求:放置白色羊毛方块时,自动在该方块下方执行召唤指令:
summon minecraft:item ~ ~ ~ {Tags:["123"],PickupDelay:32767,Item:{id:"minecraft:apple",Count:1b}} - 自行编写的无效命令:
execute if block ~ ~ ~ minecraft:white_wool run summon minecraft:item ~ ~-1 ~ {Tags:["123"],PickupDelay:32767,Item:{id:"minecraft:apple",Count:1b}}
失效原因
- 执行逻辑错误:该命令仅检测当前执行位置的方块(比如你站立的位置),不会主动监听方块放置行为,只有当你站在白色羊毛上手动执行时才会触发,无法响应放置操作。
- 缺乏持续检测:单次执行的命令无法持续监控世界中的方块变化,无法自动响应后续的羊毛放置动作。
解决方案(循环命令方块实现)
步骤1:设置循环检测与位置标记
放置一个循环命令方块,设置为「始终活动」「无条件」,输入以下命令:execute as @a at @s if block ~ ~-1 ~ minecraft:white_wool unless entity @e[type=armor_stand,tag=wool_marker,distance=..1,positioned ~ ~-1 ~] run summon minecraft:armor_stand ~ ~-1 ~ {Tags:["wool_marker"],Invisible:1b,Marker:1b,NoGravity:1b}
步骤2:触发物品召唤指令
在循环命令方块后连接一个连锁命令方块(设置为「始终活动」「无条件」),输入:execute as @e[type=armor_stand,tag=wool_marker,tag=!spawned_apple] at @s run summon minecraft:item ~ ~-1 ~ {Tags:["123"],PickupDelay:32767,Item:{id:"minecraft:apple",Count:1b}}
步骤3:标记已处理的羊毛位置
再连接一个连锁命令方块(同上设置),输入:tag @e[type=armor_stand,tag=wool_marker,tag=!spawned_apple] add spawned_apple
逻辑说明
- 循环命令持续检测玩家脚下是否有新放置的白色羊毛,用隐形盔甲架标记该位置,避免重复触发。
- 连锁命令针对未处理的标记位置,在羊毛下方召唤指定苹果物品,完成后标记为已处理,防止重复召唤。
内容的提问来源于stack exchange,提问作者Mops Lops
相关产品推荐
相关产品推荐

