Molang
本页面镜像自 BedrockWiki
根据原始项目协议授权。本文经过AI翻译处理,如有内容遗漏,可以提交PR进行补充。
简介
几乎所有的表达式都会求值为一个数字。如果某个表达式的结果不是数字,可以使用operator
运算符将其转换为数字。你可以将Molang简单理解为一个大型数学方程式。
当方程式返回除0
以外的任何数字时,都会被判定为true
(真)。本文中提到的"返回"指的是方程式的输出结果。虽然存在return
语句,但通常不推荐使用,因此不做详细讨论。
值访问方式
在Molang中主要有三种访问值的方式(查询语句、变量和临时变量):
查询语句 是从游戏获取的只读值,不可修改只能读取(语法:
query.example_query
或简写为q.example_query
)变量 是可读写的值,可以通过Molang进行修改(语法:
variable.example_variable
或简写为v.example_variable
)- 部分硬编码变量的行为与查询语句类似,但仅在特定情境下可用
临时变量 的功能与普通变量相同,但仅在当前作用域内有效(语法:
temp.example_temp
或简写为t.example_temp
)- "作用域"指当前的
for_each
循环、loop
循环,若未在循环中使用则指当前表达式
- "作用域"指当前的
值处理
逻辑运算符 可以将非数字值转换为1或0,包括:
==
,!=
,<
,>
,<=
,>=
示例:
q.get_equipped_item_name == 'stick'
当手持木棍时求值为1
/true
复合逻辑运算符 用于构建"与/或"逻辑关系:
&&
表示"与",||
表示"或"- 示例:
q.is_sneaking && q.is_using_item
潜行且使用物品时返回1
/true
- 示例:
q.is_sneaking || q.is_jumping
潜行或跳跃时返回1
/true
圆括号
( )
在组合值或进行数学运算时非常实用- 示例:
q.is_sneaking && (q.get_equipped_item_name == "stick" || q.get_equipped_item_name == "diamond")
潜行时手持木棍或钻石返回1
/true
- 示例:
条件运算符 可实现类似
if/else
的逻辑:- 二元条件运算符
?
根据输入值返回指定值或0- 示例:
q.is_sneaking ? 5
潜行时返回5
,否则返回0
- 示例:
- 三元条件运算符
? :
根据条件返回两个指定值之一- 示例:
q.is_sneaking ? 10 : 3
潜行时返回10
,否则返回3
- 示例:
- 二元条件运算符
json
{
"format_version": "1.16.100",
"minecraft:entity": {
"components": {
"minecraft:movement": {
"value": "q.is_jumping ? 0.1 : 0.05" // 跳跃时移动速度变为0.1,否则0.05
}
}
}
}