执行逻辑门
引言
逻辑门是接收一个或多个二进制输入,并执行逻辑布尔运算以产生单一二进制输出(true或false)的装置。
计算机正是通过这些装置执行所有功能。这些设备对编程非常有用,使用它们是创建优化命令系统的关键步骤。在本页面中,您将学习如何借助/execute命令在系统中运用各种逻辑门!
逻辑门
图表:

转换为命令:
- 缓冲器(Buffer):
/execute if entity @s[tag=red] run <命令>
- 反相器(NOT)门:
/execute if entity @s[tag=!red] run <命令>
- 与(AND)门:
/execute if entity @s[tag=red,tag=green] run <命令>
- 与非(NAND)门:
/execute unless entity @s[tag=red,tag=green] run <命令>
- 或(OR)门:
/execute unless entity @s[tag=!red,tag=!green] run <命令>
- 或非(NOR)门:
/execute if entity @s[tag=!red,tag=!green] run <命令>
- 异或(XOR)门:
/execute unless entity @s[tag=!red,tag=!green] unless entity @s[tag=red,tag=green] run <命令>
- 同或(XNOR)门:
/execute unless entity @s[tag=red,tag=!green] unless entity @s[tag=!red,tag=green] run <命令>
原理解析
解析由@Champ0401提供:
与(AND)门:
/execute as @p[tag=red,tag=green] run say success
与门需要至少两个输入。在本例中,如果玩家同时满足两个条件(拥有'red'和'green'标签),命令才会执行。与门是Minecraft命令中最常用的逻辑门。
非(NOT)门:
/execute as @p[tag=!red] run say success或:/execute as @p unless entity @s[tag=red] run say success
非门会对输入进行取反。本例中,只有当玩家不拥有red标签时命令才会执行。非门在Minecraft命令中同样非常常用。
或(OR)门:
/execute as @p unless entity @s[tag=!red,tag=!green] run say success
或门需要两个或更多输入。如果玩家满足至少一个条件,命令就会执行。本例中,玩家可以拥有red标签,或green标签,或两者兼具。或门在Minecraft命令中并非原生支持,但通过/execute unless可以实现。理解或门的工作原理可能有些困惑。您可以这样思考:命令会在"除非您两个标签都不具备"时执行。这与或门的真值表输出一致。建议在游戏中亲自尝试!
异或(XOR)门:
/execute as @p unless entity @s[tag=!red,tag=!green] unless entity @s[tag=red,tag=green] run say success
异或门需要两个输入。当玩家恰好满足其中一个条件时命令才会执行。本例中,玩家可以拥有red标签或green标签,但如果同时拥有两个标签则不会执行命令。异或门在Minecraft命令中同样非原生支持,但通过这种变通方法可以实现功能。
其余逻辑门都是上述逻辑门的反向版本,您可以通过翻转命令中的if/unless来实现,或参考上方逻辑门的示例。
命令示例
以下是可用于执行逻辑门的目标选择器参数列表:
type(实体类型)scores(计分板分数)name(名称)tag(标签)family(生物族群)hasitem(物品持有)
注意:以下示例均以或门为例,但只要遵循上述语法/顺序,任何逻辑门都能以类似方式工作。
示例:
/execute unless entity @e[type=!chicken, type=!cow] run <命令>- 当实体是鸡或牛时执行命令
/execute unless entity @p[scores={objective.a=!5, objective.b=!5}] run <命令>- 当玩家在计分板
objective.a或objective.b中得分为5时执行命令
- 当玩家在计分板
/execute unless entity @p[hasitem=[{item=diamond_sword,quantity=0},{item=iron_sword,quantity=0}]] run <命令>- 当玩家持有钻石剑或铁剑时执行命令
注意:或门可以使用两个以上的输入参数,只要满足任意一个或多个输入条件,命令就会执行。
组合不同的选择器参数同样有效。示例:
/execute unless entity @p[tag=!red, scores={objective.a=!1..5}] run <命令>/execute unless entity @p[name=!player, hasitem=[{item=iron_sword, quantity=0}]] run <命令>/execute unless entity @e[type=!chicken,tag=!green, scores={objective.b=!5}, family=!mob}] run <命令>
如有任何疑问,欢迎加入上方链接的Discord社区,我们的专家成员将很乐意为您提供帮助。


