MOLANG DOCUMENTATION
Version: 1.21.60.10

索引

Molang 为什么存在?
词法结构
区分大小写
关键字
运算符优先级
变量
查询函数
别名
结构体
字符串
数学函数
-> 箭头运算符
{ } 花括号作用域定界符
条件符
loop
for_each
break
continue
?? 空合并运算符
简单表达式与复杂表达式的比较
分域示例
实体定义脚本
动画和动画控制器文件
渲染控制器
查询函数
实体查询列表
实体实验性查询列表
实验性运算符
版本化变更
版本化变更版本
返回顶部

Molang 为什么存在?

Molang 是一种简单的基于表达式的语言,旨在在运行时快速、数据驱动地计算值,并与游戏中的值和系统直接连接。它聚焦于在保持高性能的同时能够同时为内部和外部创作者在例如动画这样的低级别系统上启用对复杂数据驱动行为的支持。
返回顶部

词法结构

语言结构主要基于简单的“C”语言系列样式语法。表达式可以由一个简单的值或数学计算组成,也可以在需要更复杂的代码时由数个子表达式组成。

在简单情况下,省略句末的 ';' 并返回表达式结果。
在复杂情况下,多个子表达式都以分号 ';' 结尾。除非存在一个`return`语句,否则复杂表达式的返回结果将计算为`0.0`。在具有`return`语句的情况下,该语句的子表达式所计算的值将被从当前作用域中返回出去。

区分大小写

Molang 中的所有内容都不区分大小写,但字符串除外,它们保持提供的大小写。
返回顶部

关键字

所有下方列出的不在一个作用域中的标识符都被保留以供将来使用。

关键字 描述
`1.23` 常数值
`! && || < <= >= > == !=` 逻辑运算符
`* / + -` 基本数学运算符
`(` `)` 圆括号,用于表达式分项计算控制
`{` `}` 花括号,用于执行作用域
`??` 空合并运算符,用于处理丢失的变量和过时的活动对象引用
`geometry.texture_name` 对实体定义中命名的几何体的引用
`material.texture_name` 对实体定义中命名的材质的引用
`texture.texture_name` 对实体定义中命名的纹理的引用
`math.function_name` 各种数学函数
`query.function_name` 访问实体的属性
`variable.variable_name` 读取/写入一个活动对象的存储器
`temp.variable_name` 读/写临时存储
`context.variable_name` 游戏在某些场景下提供的只读存储
` ? ` 二元条件运算符
` ? : ` 三元条件运算符 - 注意:在进行版本化变更以修复它之前,不带括号的嵌套三元表达式被错误地解析(请参阅下面的'版本化变更')
`this` 此表达式最终将写入的当前值(特定于上下文)
`return` 对于复杂表达式,这将计算以下语句并停止执行表达式,返回计算的值
`->` 箭头运算符,用于从其他实体访问数据
`loop` 用于重复一个或多个命令 'n' 次
`for_each` 用于迭代实体数组
`break` 提前退出 loop/for_each 作用域
`continue` 跳过 loop/for_each 迭代的语句的集合的剩余部分,并移动到下一次迭代
`[` `]` 方括号,用于数组访问
返回顶部

运算符优先级

Molang 运算符按照此顺序来确定在不使用括号时首先评估哪个事物。这应该与 C 或 C++ 的行为相匹配。首先评估此表中排名较高的运算符,而以相同的优先级评估同一行上的运算符。当运算符具有相同的优先级时,它们将按从左到右的计算方式进行计算,但 Ternary 条件运算符除外,该运算符按从右到左的计算方式进行计算。使用括号将允许直接控制计算顺序,建议用于更复杂的表达式。

运算符优先级组 描述
(最高优先级) 当不使用括号来控制计算顺序时,首先计算优先级较高的运算符
逻辑非 逻辑非 '!' 运算符
乘法和除法 乘法 '*' 和除法 '/'
加法和减法 加法 '+' 和减法 '-'
比较 比较运算符 '<' '<=' '>' '>=' (参见下面的'版本化变更')
相等性检查 相等性检查运算符 '==' '!=' (请参阅下面的 '版本化变更')
逻辑与 逻辑与 '&&' 运算符(请参阅下面的“版本化变更”)
逻辑或 逻辑或 '||' 运算符(请参阅下面的“版本化变更”)
三元条件 使用 '? :'.当有多个三元运算符时,从右到左计算。(请参阅下面的'版本化变更')
空合并 空合并运算符 '??'
(最低优先级) 当不使用括号来控制计算顺序时,最后计算低优先级运算符
返回顶部

变量

一共存在三种一个变量可能属于的变量生命周期:临时、实体和上下文:
- 临时变量(例如:`temp.moo = 1;`)是可读/可写的,并且依照C语言的规则,它们对于它们所定义在的作用域是有效的。出于性能原因,对于当前的表达式执行,它们的生存周期仍是全局的,并且可能在它们对于一个表达式所定义在的最外层作用域之外仍能返回一个有效值。请在复杂表达式中多加小心。我们将会尽快为非法访问加入内容错误。
- 实体变量(例如:`variable.moo = 1;`)是可读/可写的,并且会在实体的生命周期内将它的值存储在该实体上。注意,这些变量当前都不会被保存,所以退出和重新加载世界将会使它们重新初始化。同理,如果实体从世界中消失,该实体上的任何变量都将丢失。
- 上下文变量(例如:`context.moo`)是只读的,是在特定情况下由游戏指定的。关于何时会定义何种变量的细节可以在对应Molang表达式的应用(例如定义了暴露了哪些上下文变量的行为)的区域的文档中找到。
返回顶部


- 所有数值均为浮点数。
- 布尔值,比如活动对象旗标,都会被转换成并存储以一个要么为0.0要么为1.0的浮点值,它们分别代表false和true。
- 对于布尔测试,等于0.0的浮点值为false,任何不等于0.0的值为true。
- 对于数组下标,浮点数将采用C语言样式强制转换为整型,对于负数将钳制为零,对于过大的值将根据数组大小裹顶。
- 其他支持的类型包括:
返回顶部



返回顶部

- 错误(例如除以零、缺少变量、空引用等)通常返回值 0.0。
返回顶部



查询函数

查询函数(例如:'query.is_baby' 或 'query.is_item_equipped('main_hand')')允许表达式读取游戏数据。如果一个查询函数是无参的,请勿使用圆括号。否则,请在末尾使用圆括号并以逗号分隔参数。要查看一个查询函数的完整列表,请见下方表格。
返回顶部

别名

为了减少打字负担并提高读写 Molang 的清晰度,以下关键字别名可以让你更轻松一些。请注意,左侧和右侧的功能相同。

别名映射

全名 别名
`context.moo` `c.moo`
`query.moo` `q.moo`
`temp.moo` `t.moo`
`variable.moo` `v.moo`
返回顶部

举个例子...
返回顶部



返回顶部

...也可以写成:
返回顶部



返回顶部

两种语法都可以使用,并且可以根据需要混合使用。例如:
返回顶部



返回顶部



结构体

Molang的数据结构与C语言不同,它是通过具体用法隐式定义的。这样的目的是更有效地传递数据,例如传递`v.location`而非`v.x`、`v.y`和`v.z`。例如:



返回顶部

有关更多用法示例,以下每个表达式都返回 1.23
返回顶部



返回顶部



返回顶部



返回顶部



返回顶部



返回顶部

注意,结构可以在它们的嵌套或递归中拥有任意深度。也就是说,建议不要将完整的结构复制到其他结构中,以避免由于被复制的结构层次过深导致游戏在遍历时出现内存爆炸,也不要将结构做得太深,因为每深一层游戏都会为此付出轻微的性能代价。
返回顶部



字符串

Molang 中的字符串用单引号括起来,例如:'minecraft:pig' 或 'hello world!'。空字符串定义为两个连续的单引号。字符串运算目前仅支持 '==' 和 '!='。
注意:字符串不支持 ' 字符,因为目前不支持转义字符。
返回顶部

数学函数

函数 描述
`math.abs(value)` 值的绝对值
`math.acos(value)` 值的反余弦函数
`math.asin(value)` 值的反正弦函数
`math.atan(value)` 值的反正切函数
`math.atan2(y, x)` Y/X 的反正切函数。注意:参数的顺序!
`math.ceil(value)` 值向上舍入到最接近的整数
`math.clamp(value, min, max)` 把大于或小于范围的值限制在这个范围内(包括最小值和最大值)注释:如果值在两者之间则输出不变,比最小值小就输出最小值,比最大值大输出最大值
`math.cos(value)` 值的余弦(以度为单位)
`math.die_roll(num, low, high)` 返回 'num' 个随机数的总和,每个随机数的值从 'low' 到 'high'。注意:生成的随机数不是像普通骰子那样的整数。为此,请使用 'math.die_roll_integer'。
`math.die_roll_integer(num, low, high)` 返回 'num' 个随机整数的总和,每个整数都有一个从 'low' 到 'high' 的值。注意:生成的随机数是整数,就像普通骰子一样。
`math.exp(value)` 计算 e 的值的第 x 次方
`math.floor(value)` 将值向下舍入到最接近的整数
`math.hermite_blend(value)` 对于使用 Hermite 基函数之一 '3t^2 - 2t^3' 进行简单的平滑曲线插值很有用。请注意,虽然任何有效的浮点数都是有效的输入,但此函数在 [0,1] 范围内效果最佳。
`math.lerp(start, end, 0_to_1)` 通过0_to_1从头到尾进行插值
`math.lerprotate(start, end, 0_to_1)` 通过 0_to_1 绕圆从起始度到结束度的最短方向进行插值
`math.ln(value)` 值的自然对数
`math.max(A, B)` 返回 A 或 B 的最大值
`math.min(A, B)` 返回 A 或 B 的最小值
`math.min_angle(value)` 将角度大小(以度为单位)最小化到 [-180, 180) 范围内
`math.mod(value, denominator)` 返回值/分母的余数
`math.pi` 返回常数π的浮点数表示形式。
`math.pow(base, exponent)` 'exponent' 的第 'base' 次方
`math.random(low, high)` 介于 low 和 high(含)之间的随机值
`math.random_integer(low, high)` 介于 low 和 high (含) 之间的随机整数值
`math.round(value)` 将值四舍五入到最接近的整数
`math.sin(value)` 值的正弦(以度为单位)
`math.sqrt(value)` 值的平方根
`math.trunc(value)` 将值舍入为零
返回顶部

-> 箭头运算符

查询函数的某些返回值或存储在 temp/entity/context 变量中的值可以是对另一个实体的引用。'->' 运算符允许表达式访问变量或对该实体运行查询。例如,下面的示例将找到当前实体四米范围内的所有猪(如果它是猪,则包括它自己),如果每个猪正上方的方块是易燃的(例如橡木按钮),则在自身上增加一个变量 'v.x':
请注意,如果 '->' 运算符的左侧出现错误(值为 null、实体之前被杀死或其他问题),表达式将不会计算右侧,并将返回 0。这种实现风格是在性能与不要求内容创建者过度担心检查所有位置的潜在错误值之间做出选择。



返回顶部

公共变量

一般来说,一个实体的变量被认为是该实体的私有变量,不能被另一个实体访问。要向其他生物公开变量的只读访问权限,你需要在拥有实体的资源定义中为该变量设置 'public' 设置。还建议对变量进行默认初始化。



返回顶部





{ } 花括号作用域定界符

可以通过将一系列语句括在 '{' 和 '}' 符号中将它们分组到一个组中。这主要用于循环和条件语句:



返回顶部

条件符

条件 '?' 运算符允许两种便捷的方式来实现简单的分支逻辑。
第一种方法是使用 '?' 本身有条件地执行表达式的一部分,例如 'A ? B`.仅当 '?' 后面的部分的计算结果为 true 布尔值时,才会运行 '?' 后面的部分。
第二种方法是使用 '?' 和 ':' 作为 '条件三元',例如 'A ? B : C'.如果 '?' 之前的部分被评估为 true,则返回 ':' 之前的部分。否则,将返回之后的部分。
注意:在进行版本化变更以修复它之前,没有括号的嵌套三元表达式被错误地解析(请参阅下面的“版本化变更”)。

条件示例

返回顶部

loop

有时,您希望多次执行表达式。与其复制粘贴一堆,不如使用 'loop(<count>, <expression>);'。为了安全起见,我们暂时对这些进行了一些武断的限制。最大循环计数器为 (截至编写本文档时) 1024。另外,请注意,虽然你可以将 Loop 嵌套在 Loop 中,但要注意不要让 Loop 嵌套得太长,否则会挂起你的游戏。

斐波那契计算器

返回顶部

for_each

'query.get_nearby_entities' (见下文) 返回一个实体数组。为了迭代它们,您可以使用以下新的内置函数 'for_each'。它需要三个参数:'for_each(<variable>, <array><expression>,);'变量可以是任何变量,可以是 'temp.' 或 'variable.',但我建议使用 'temp.' 来不污染实体的变量空间。表达式是要为数组中的每个条目执行的任何 Molang 表达式)



返回顶部

break

这将提前退出 'loop' 或 'for_each”。例如:
返回顶部



返回顶部

根据 C 语言规则,这将立即退出最内部的 active 循环。如果您有:
返回顶部



返回顶部

'break' 语句将在 'v.x > 5' 时终止内部循环,并继续处理外部循环的表达式。请注意,由于 'v.x' 在外部循环之间没有重置,第二次进入内部循环时,这将向 'v.x' 再添加一个,然后再次退出内部循环,导致 'v.x' 的最终值为 '6 + 1 + 1 + 1 + ... + 1' = '15'。
返回顶部



continue

'continue' 函数。目前仅支持 'loop' 和 'for_each',这将跳到当前循环的下一次迭代。有关内部/外部循环的更多详细信息,请参阅上面的 'break' 。以下示例将导致 v.x 变为 6.0,因为一旦达到该值,将跳过增量。请注意,在这个人为的示例中,最好跳出循环,因为它比继续执行所有 10 次迭代的性能更高。



返回顶部



?? 空合并运算符

与 C# 中 null 合并运算符的工作方式类似,现在可以引用可能存在也可能不存在的变量,而不会看到内容错误。如果没有,您现在可以提供要使用的默认值。以前,如果变量不存在,则会收到内容错误。这是为了确保变量始终正确初始化,以避免未初始化的变量错误。不幸的是,这需要初始化脚本,或者在某些情况下需要一些复杂的解决方法来确保变量被初始化。现在,如果您知道在第一次运行脚本时不会初始化变量,则可以使用以下命令:



返回顶部


如果 'variable.x' 有效,则使用 'variable.x' 的值,如果 'variable.x' 出现如下情况则使用 1.2:
- 尚未初始化
- 是对已删除实体的引用
- 是无效的引用
- 包含错误

请注意,`??` 运算符将处理保存数字或实体引用的 'variable.'、'temp.' 和 'context.',但不适用于材质、纹理或几何图形等资源(因为它们必须存在且有效,否则会成为内容错误)。如果第一个参数会导致无法解决的问题,它将返回第二个参数。

提醒:Molang 中的基本经验法则是,如果某些内容出错或值错误,则会将其转换为 0.0(并且通常会在非发布版本中在屏幕上显示内容错误)。请注意,内容错误可能会阻止将内容上传到市场,因此请确保表达式不会造成不良影响,例如除以零)。
返回顶部



简单表达式与复杂表达式的比较

简单表达式是单个语句,其值将返回给计算表达式的系统。例如:



返回顶部

复杂表达式是包含多个语句的表达式,每个语句都以 ';' 结尾。每个语句都按顺序进行评估。在当前实现中,最后一个语句需要使用 return 关键字并定义表达式的结果值。例如:



返回顶部

请注意,在简单表达式中,不允许使用 ';',而在复杂表达式中,每个语句都需要一个 ';',包括最后一个。另请注意,如果您不从复杂表达式中“返回”值,则表达式的计算结果将为 0.0。
返回顶部





分域示例

实体定义脚本

在定义文件中,有一节用于预计算值。这些控制器在处理动画和渲染控制器之前立即执行,并存储在实体中。其目的是预先计算您可能希望在脚本、长期索引变量更新中重用的任何昂贵和复杂的值,或者通常是每个渲染时间点的任何一次性计算。



返回顶部

动画和动画控制器文件

这些是用于控制哪些动画正在播放以及如何对骨骼进行动画处理的数值操作。"variable.variable_name" 和 "query.function_name" 指的是当前正在渲染的实体。它们可以访问语言中除材质、纹理和模型之外的所有内容。
返回顶部

渲染控制器

这里存在几种不同类型的表达式,其上下文暗示了哪些是允许的。与动画一样,实体访问器指的是当前实体,然而根据上下文的不同,还可以访问材质、纹理和几何体。渲染控制器中有两个部分:
-数组定义(可选)
-资源使用(必需)
数组定义部分允许您根据需要按资源类型创建资源数组。这些数组随后可以在资源使用部分中引用。

数组表达式

对于三种资源类型(材质、纹理和几何体),您可以定义一个资源数组。资源的名称是定义文件中的友好名称。以材质为例:



返回顶部

请注意,数组中的所有元素必须是同一类型。例如:纹理数组必须仅包含纹理。

一个数组可以引用零个或多个数组的任意组合(如果需要,可以包括重复项)和/或零个或多个材质(同样,如果愿意,也可以包括重复项),并且您可以根据需要定义任意数量的数组,每个数组可以包含任意数量的元素。如果数组的成员中包含其他数组,这些数组的长度不需要相同。在资源使用部分中索引数组时,您可以使用数值表达式。如果结果数字为负数,则将使用零作为索引。任何非负索引都将转换为整数,并根据数组的大小进行循环:



返回顶部



资源表达式

资源表达式必须根据上下文返回特定类型的单个资源。
例如,在“geometry”部分中,您必须生成一个表达式,该表达式将产生单个几何体。以下是一些示例:

以每秒一个几何体的速度循环遍历几何体数组

根据实体标志选择一个几何体

使用特定的几何体

在休眠时使用特定的几何体,否则根据余弦曲线在数组中循环切换,当余弦曲线为负时,几乎一半时间使用索引零

返回顶部

资源段落

Geometry

geometry 部分指定渲染时要使用的几何体。由于您可以在定义文件中指定任意数量的渲染控制器,因此单个渲染控制器只关心如何渲染单个几何体。请注意,几何体可以任意复杂,使用任意数量的骨骼和多边形。
返回顶部

Materials

materials 部分指定了如何将材质映射到几何体的骨骼上。单个材质会映射到整个骨骼。材质表达式按列出的顺序进行评估。每条语句的第一部分是要应用材质的模型部件名称,第二部分是要使用的材质。模型部件名称可以使用 * 进行通配符匹配。例如:



返回顶部

- 首先将 Material.default 应用于所有模型部件。
- 接下来,它将名为“TailA”的模型部件的材质设置为表达式“Array.hairColors[variable.hair_color]”的结果。这将查找实体上先前创建的名为 hair_color 的变量,并使用该变量索引到在此渲染控制器中定义的名为“array.hair_colors”的材质数组。这将覆盖上一行中设置的 Material.default 材质。
- 第三,它将查找与表达式相同的材质,并将其应用到“Mane”模型部件。
- 最后,它将查找任何以“Saddle”开头、结尾或包含“Saddle”(区分大小写)的模型部件,并根据先前设置的实体变量 variable.is_leather_saddle 将其材质更改为 material.leather_saddle 或 material.iron_saddle。
返回顶部









查询函数

查询函数是访问各种信息的操作符。它们可以返回简单的 true 或 false 值(1.0 或 0.0)或更复杂的数据。有关每个查询的文档,请参阅下面的函数列表。查询函数可能不需要任何参数。在这种情况下,只需使用 `query.function_name`。否则,应使用括号并用逗号分隔参数,例如 `query.function_name(1, 2, 'three')`。例如:



返回顶部

实体查询列表

名称 描述
query.above_top_solid 返回输入 (x,z) 位置处最高固体方块上方方块的高度
query.actor_count 返回上一帧中渲染的活动对象的数量。
query.all 至少需要 3 个参数。评估第一个参数,如果所有后续参数评估结果与第一个参数相同,则返回 1.0。否则返回 0.0。
query.all_animations_finished 仅在动画控制器中有效。如果当前动画控制器状态中的所有动画都至少播放了一次,则返回 1.0,否则返回 0.0。
query.all_tags 如果物品或方块具有指定的所有标签,则返回。
query.anger_level 返回活动对象的愤怒级别 [0,n)。如果出错或活动对象没有愤怒级别,则返回 0。仅在服务器上可用。
query.anim_time 返回当前动画开始以来的时间(以秒为单位),如果不在动画中调用则返回 0.0。
query.any 至少需要 3 个参数。评估第一个参数,如果任何后续参数评估结果与第一个参数相同,则返回 1.0。否则返回 0.0。
query.any_animation_finished 仅在动画控制器中有效。如果当前动画控制器状态中的任何动画至少播放了一次,则返回 1.0,否则返回 0.0。
query.any_tag 如果物品或方块具有指定的任何标签,则返回此值。
query.approx_eq 如果所有参数彼此相差在 0.000000 以内,则返回 1.0,否则返回 0.0。
query.armor_color_slot 以护甲槽索引作为参数,并返回指定槽中护甲的颜色。护甲槽索引的有效值为 0(头部)、1(胸部)、2(腿部)、3(脚部)和 4(身体)。
query.armor_damage_slot 以护甲槽索引作为参数,并返回指定槽的伤害值。护甲槽索引的有效值为 0(头部)、1(胸部)、2(腿部)、3(脚部)和 4(身体)。由于伤害值并不总是在客户端上可用,因此对玩家以外的实体的支持可能有限。
query.armor_material_slot 以护甲槽索引作为参数,并返回指定护甲槽中的护甲材质类型。护甲槽索引的有效值为 0(头部)、1(胸部)、2(腿部)和 3(脚部)。
query.armor_texture_slot 以护甲槽索引作为参数,并返回指定护甲槽中的护甲纹理类型。护甲槽索引的有效值为 0(头部)、1(胸部)、2(腿部)和 3(脚部)。
query.average_frame_time 返回过去 'n' 帧的平均帧时间(以*秒*为单位)。如果传递了一个参数,则假定它是您希望查询的过去帧数。'query.average_frame_time'(或等效的 'query.average_frame_time(0)')将返回当前帧之前的那一帧的帧时间。'query.average_frame_time(1)' 将返回前两帧的平均帧时间。目前我们存储了过去 30 帧的历史记录,但请注意,这在未来可能会发生变化。请求更多帧将仅对存储的帧数进行采样。
query.block_face 返回此方块的面(仅对某些触发器有效,例如放置方块或与方块交互)(下 = 0.0,上 = 1.0,北 = 2.0,南 = 3.0,西 = 4.0,东 = 5.0,未定义 = 6.0)。
query.block_has_all_tags 采用世界原点相对位置和一个或多个标签名称,并根据该位置的方块是否具有提供的所有标签返回 0 或 1。
query.block_has_any_tag 采用世界原点相对位置和一个或多个标签名称,并根据该位置的方块是否具有提供的任何标签返回 0 或 1。
query.block_neighbor_has_all_tags 采用方块相对位置和一个或多个标签名称,并根据该位置的块是否具有提供的所有标签返回 0 或 1。
query.block_neighbor_has_any_tag 采用方块相对位置和一个或多个标签名称,并根据该位置的块是否具有提供的任何标签返回 0 或 1。
query.block_property (在 min_engine_version 1.20.40包中不再可用)返回关联方块的方块状态的值。
query.block_state 返回关联方块的方块状态的值。
query.blocking 如果实体正在格挡,则返回 1.0,否则返回 0.0。
query.body_x_rotation 如果在活动对象上调用,则返回躯体俯仰角旋转,否则返回 0.0。
query.body_y_rotation 如果在活动对象上调用,则返回身体偏航角旋转,否则返回 0.0。
query.bone_aabb 将骨骼的轴对齐边界框作为结构体返回,其中包含成员 '.min'、'.max',以及每个成员的 '.x'、'.y' 和 '.z'值。
query.bone_orientation_matrix 以骨骼名称作为参数。如果所需骨骼存在于可查询的几何体中,则返回该骨骼的方向(作为矩阵),否则返回单位矩阵并抛出内容错误。
query.bone_orientation_trs TRS 代表平移/旋转/缩放。以骨骼名称作为参数。如果所需骨骼存在于可查询的几何体中,则返回分解为平移/旋转/缩放部分的骨骼方向矩阵,否则返回单位矩阵并抛出内容错误。返回值作为类型为 'struct' 的变量返回,成员包括 '.t'、'.r' 和 '.s',每个成员又包含 '.x'、'.y' 和 '.z',可以按照以下示例访问:v.my_variable = q.bone_orientation_trs('rightarm'); return v.my_variable.r.x;
query.bone_origin 将骨骼的初始(来自 .geo)轴心作为一个结构体返回,结构体成员包括 '.x'、'.y' 和 '.z'。
query.bone_rotation 以度为单位返回骨骼的初始(来自 .geo)旋转,作为一个结构体,成员包括 '.x'、'.y' 和 '.z'。
query.camera_distance_range_lerp 接受两个距离(任意顺序),并根据相机距离在两个范围之间的插值返回一个从 0 到 1 的数字。例如,'query.camera_distance_range_lerp(10, 20)' 对于任何小于或等于 10 的距离将返回 0,对于距离 12 返回 0.2,对于距离 15 返回 0.5,对于 20 或更大的距离返回 1。如果传入 (20, 10),距离 20 将返回 0.0。
query.camera_rotation 返回相机的旋转。需要一个参数,表示您想要的旋转轴(0 表示 x 轴,1 表示 y 轴)。
query.can_climb 如果实体可以攀爬,则返回 1.0,否则返回 0.0。
query.can_damage_nearby_mobs 如果实体可以伤害附近的生物,则返回 1.0,否则返回 0.0。
query.can_dash 如果实体可以冲刺,则返回 1.0,否则返回 0.0。
query.can_fly 如果实体可以飞,则返回 1.0,否则返回 0.0。
query.can_power_jump 如果实体可以蓄力跳,则返回 1.0,否则返回 0.0。
query.can_swim 如果实体可以游泳,则返回 1.0,否则返回 0.0。
query.can_walk 如果实体可以走路,则返回 1.0,否则返回 0.0。
query.cape_flap_amount 返回介于 0.0 和 1.0 之间的值,其中 0.0 表示披风完全关闭,1.0 表示披风完全上扬。
query.cardinal_block_face_placed_on 已弃用 (请改用 query.block_face ) 返回此触发器的块面 (仅对 on_placed_by_player 触发器有效) (向下 = 0.0,向上 = 1.0,北 = 2.0,南 = 3.0,西 = 4.0,东 = 5.0,未定义 = 6.0)。
query.cardinal_facing 返回玩家的当前面 (向下 = 0.0,向上 = 1.0,北 = 2.0,南 = 3.0,西 = 4.0,东 = 5.0,未定义 = 6.0)。
query.cardinal_facing_2d 返回忽略上/下部分的玩家的当前朝向(北 = 2.0,南 = 3.0,西 = 4.0,东 = 5.0,未定义 = 6.0)。
query.cardinal_player_facing 返回玩家的当前面 (向下 = 0.0,向上 = 1.0,北 = 2.0,南 = 3.0,西 = 4.0,东 = 5.0,未定义 = 6.0)。
query.client_max_render_distance 返回当前客户端的最大渲染距离(以区块为单位)。仅在客户端(资源包)上可用。
query.client_memory_tier 返回一个表示客户端 RAM 内存等级的数字,0 = 'SuperLow',1 = 'Low',2 = 'Mid',3 = 'High',或 4 = 'SuperHigh'。仅在客户端(资源包)上可用。
query.combine_entities 将所有参数中的任何有效实体引用合并到一个数组中。请注意,顺序不保留,重复项和无效值将被删除。
query.cooldown_time 返回指定装备槽名称(如果需要,还有第二个数字槽位 ID)持有或穿戴的物品的总冷却时间(以秒为单位),否则返回 0。使用与 /replaceitem 命令在查询实体时采用的相同名称和 id。
query.cooldown_time_remaining 返回指定冷却时间类型或指定装备槽位名称(如果需要,还有第二个数字槽位 ID)持有或穿戴的物品的剩余冷却时间(以秒为单位),否则返回 0。使用与 /replaceitem 命令在查询实体时采用的相同名称和 id。如果未提供任何参数,则返回最高冷却时间。
query.count 计算传递给它的元素数量(数组按其包含的元素数量计算;非数组计为 1)。
query.current_squish_value 返回当前实体的压缩值,如果不适用则返回 0.0。
query.dash_cooldown_progress (在 min_engine_version 1.20.50 包中不再可用。)已弃用。请勿在 1.20.40 之后使用。请参阅camel.entity.json script.pre_animation,了解如何处理冲刺冷却时间的示例。如果实体可以冲刺,则返回冲刺冷却进度,否则返回 0.0。
query.day 返回当前世界的游戏天数。
query.death_ticks 返回自生物开始死亡以来经过的刻数。
query.debug_output 在具有调试窗口的构建中,将值记录到输出调试窗口
query.delta_time 返回自上一帧以来的时间(以秒为单位)。
query.distance_from_camera 返回此活动对象或粒子发射器的根部与摄像机的距离。
query.effect_emitter_count 返回被调用方的粒子效果类型的活动发射器的总数。
query.effect_particle_count 返回被调用方的粒子效果类型的活动粒子总数。
query.equipment_count 返回活动对象装备的盔甲件数,范围为 0 到 5,不计算手中持有的物品。(要查询手槽,请使用 query.is_item_equipped 或 query.is_item_name_any)。
query.equipped_item_all_tags 采用槽位名称,后跟你想要检查的任何标签,形式为 'tag_name' 如果所有标签都位于该装备上,则返回 1,否则返回 0。
query.equipped_item_any_tag 采用槽位名称,后跟你想要检查的任何标签,形式为 'tag_name' 如果该装备的物品上没有任何标签,则返回 0,如果至少存在 1 个标签,则返回 1。
query.equipped_item_is_attachable 将所需的手槽作为参数(0 或 'main_hand' 代表主手,1 或 'off_hand' 代表副手),并返回物品是否为可附着物。
query.eye_target_x_rotation 如果适用,则返回实体的 X 轴眼睛旋转角度,否则返回 0.0。
query.eye_target_y_rotation 如果适用,则返回实体的 Y 轴眼睛旋转角度,否则返回 0.0。
query.facing_target_to_range_attack 如果实体从一定范围(即 minecraft:behavior.ranged_attack)攻击,则返回 1.0,否则返回 0.0。
query.frame_alpha 返回当前帧在 AI 刻之间的渲染比例(从 0 到 1)。
query.get_actor_info_id 按字符串名称返回活动对象的整数 ID。
query.get_animation_frame 返回物品的当前纹理
query.get_default_bone_pivot 获取指定骨骼方向枢轴的指定轴。
query.get_equipped_item_name 已弃用 (如果可能,请改用 query.is_item_name_any 以便以后可以在不破坏内容的情况下更改名称。)将一个可选的手槽作为参数(主手为 0 或 'main_hand',副手为 1 或 'off_hand'),如果您想要装备的物品或当前渲染的物品的任何非零数字,则使用第二个参数(0=默认),并返回所请求槽位中物品的名称(如果未提供参数,则默认为主手),如果有, 否则返回 ''。
query.get_locator_offset 获取指定定位器偏移量的指定轴。
query.get_name 已弃用 (如果可能,请改用 query.is_name_any 以便以后可以在不破坏内容的情况下更改名称。)如果有生物,则获取生物的名称,否则返回 ''。
query.get_root_locator_offset 获取根模型的指定定位器偏移量的指定轴。
query.ground_speed 返回实体的地面速度(以米/秒为单位)。
query.had_component_group 仅在行为包中确定实体属性的默认值时可用。需要一个字符串参数。如果实体是从具有指定名称的 component_group 最后保存的数据中加载的,则返回 1.0,否则返回 0.0。此查询的目的是允许实体定义更改,并且仍然能够加载实体的正确状态。
query.has_any_family 如果实体具有任何指定的族,则返回 1,否则返回 0。
query.has_armor_slot 将盔甲槽索引作为参数,如果实体在请求的槽位中有盔甲,则返回 1.0,否则返回 0.0。盔甲槽位索引的有效值为 0 (头部)、1 (胸部)、2 (腿部) 和 3 (脚部)。
query.has_biome_tag 返回方块放置目标是否具有特定的生物群系标签
query.has_block_property (在min_engine_version 1.20.40 包中不再可用。)如果关联的方块具有给定的块状态,则返回 1.0,否则返回 0.0。
query.has_block_state 如果关联的方块具有给定的方块状态,则返回 1.0,否则返回 0.0。
query.has_cape 如果玩家有披风,则返回 1.0,否则返回 0.0。
query.has_collision 如果实体启用了碰撞,则返回 1.0,否则返回 0.0。
query.has_dash_cooldown 如果实体的冲刺有冷却时间,则返回 1.0,否则返回 0.0
query.has_gravity 如果实体受重力影响,则返回 1.0,否则返回 0.0。
query.has_head_gear 返回布尔值活动对象的头部盔甲槽中是否有物品,如果当前上下文中没有活动对象,则返回 false
query.has_owner 如果实体具有所有者 ID 则返回 true,否则返回 false
query.has_player_rider 如果实体有玩家坐在任何座位上,则返回 1,否则返回 0。
query.has_property 接受一个参数:活动对象上的属性名称。如果存在具有给定名称的属性,则返回 1.0,否则返回 0。
query.has_rider 如果实体有骑手,则返回 1.0,否则返回 0.0
query.has_target 如果实体具有目标,则返回 1.0,否则返回 0.0
query.head_roll_angle 如果适用,则返回实体头部的翻滚角角度,否则返回 0.0。
query.head_x_rotation 以一个参数作为参数。如果适用,则返回实体的第 n 个头部 X 轴旋转角度,否则返回 0.0。
query.head_y_rotation 以一个参数作为参数。如果适用,则返回实体的第 n 个头部 Y 轴旋转角度,否则返回 0.0。马、僵尸马、骷髅马、驴和骡子需要第二个参数来限制旋转角度(以度为单位)。
query.health 返回实体的生命值,如果对该实体调用此函数不适用,则返回 0.0。
query.heartbeat_interval 返回活动对象的检测信号间隔(以秒为单位)。当活动对象没有检测信号时,返回 0。
query.heartbeat_phase 返回活动对象的检测信号阶段。如果在当前检测信号开始时为 0.0,如果在结束时为 1.0。在出现错误或执行组件没有检测信号时返回 0。仅在客户端(资源包)上可用。
query.heightmap 查询高度贴图
query.hurt_direction 返回活动对象的伤害方向,否则返回 0。
query.hurt_time 返回活动对象的受伤时间,否则返回 0。
query.in_range Requires 3 numerical arguments: some value, a minimum, and a maximum. If the first argument is between the minimum and maximum (inclusive), returns 1.0. Otherwise returns 0.0.
query.invulnerable_ticks 如果适用,则返回实体剩余的无敌刻数,否则返回 0.0。
query.is_admiring 如果实体正在欣赏,则返回 1.0,否则返回 0.0。
query.is_alive 如果实体活着,则返回 1.0,如果实体死了,则返回 0.0。
query.is_angry 如果实体生气,则返回 1.0,否则返回 0.0。
query.is_attached 如果实体附加到另一个实体(例如被手持或穿戴),则返回 1.0,否则将返回 0.0。仅适用于资源包。
query.is_attached_to_entity 如果活动对象附加到实体,则返回 1.0,否则将返回 0.0。
query.is_avoiding_block 如果实体正在逃离方块,则返回 1.0,否则返回 0.0。
query.is_avoiding_mobs 如果实体正在逃离生物,则返回 1.0,否则返回 0.0。
query.is_baby 如果实体是婴儿,则返回 1.0,否则返回 0.0。
query.is_breathing 如果实体正在呼吸,则返回 1.0,否则返回 0.0。
query.is_bribed 如果实体已被贿赂,则返回 1.0,否则返回 0.0。
query.is_carrying_block 如果实体携带方块,则返回 1.0,否则返回 0.0。
query.is_casting 如果实体正在转换,则返回 1.0,否则返回 0.0。
query.is_celebrating 如果实体正在庆祝,则返回 1.0,否则返回 0.0。
query.is_celebrating_special 如果实体正在进行特殊庆祝活动,则返回 1.0,否则返回 0.0。
query.is_charged 如果实体已充能,则返回 1.0,否则返回 0.0。
query.is_charging 如果实体正在充能,则返回 1.0,否则返回 0.0。
query.is_chested 如果实体附加了箱子,则返回 1.0,否则返回 0.0。
query.is_cooldown_type 如果指定的手持或穿戴物品具有指定的冷却类型名称,则返回 1.0,否则返回 0.0。第一个参数是要检查的冷却名称,第二个参数是装备槽名称,如果需要,第三个参数是数字槽 ID。对于第二个和第三个参数,使用与查询实体时 replaceitem 命令相同的名称和 ID。
query.is_crawling 如果实体正在爬行,则返回 1.0,否则返回 0.0
query.is_critical 如果实体处于暴击状态,则返回 1.0,否则返回 0.0。
query.is_croaking 如果实体正在叫,则返回 1.0,否则返回 0.0。
query.is_dancing 如果实体正在跳舞,则返回 1.0,否则返回 0.0。
query.is_delayed_attacking 如果实体正在使用延迟攻击进行攻击,则返回 1.0,否则返回 0.0。
query.is_digging 如果实体正在挖掘,则返回 1.0,否则返回 0.0。
query.is_eating 如果实体正在吃东西,则返回 1.0,否则返回 0.0。
query.is_eating_mob 如果实体正在吃掉生物,则返回 1.0,否则返回 0.0。
query.is_elder 如果实体是它的较老版本,则返回 1.0,否则返回 0.0。
query.is_emerging 如果实体正在出现,则返回 1.0,否则返回 0.0。
query.is_emoting 如果实体是有表情的,则返回 1.0,否则返回 0.0。
query.is_enchanted 如果实体着迷,则返回 1.0,否则返回 0.0。
query.is_feeling_happy (在 min_engine_version 1.20.50 包中不再可用。)在 1.20.40 之后废弃。如果 behavior.timer_flag_2正在运行,则返回 1.0,否则返回 0.0。
query.is_fire_immune 如果实体对火焰免疫,则返回 1.0,否则返回 0.0。
query.is_first_person 如果实体以第一人称模式渲染,则返回 1.0,否则返回 0.0。
query.is_ghost 如果实体是 ghost(原文如此),则返回 1.0,否则返回 0.0。
query.is_gliding 如果实体正在滑行,则返回 1.0,否则返回 0.0。
query.is_grazing 如果实体正在吃草,则返回 1.0,否则返回 0.0。
query.is_idling 如果实体处于空闲状态,则返回 1.0,否则返回 0.0。
query.is_ignited 如果实体被点燃,则返回 1.0,否则返回 0.0。
query.is_illager_captain 如果实体是灾厄队长,则返回 1.0,否则返回 0.0。
query.is_in_contact_with_water 如果实体与任何水(水、雨、飞溅的水瓶)接触,则返回 1.0,否则返回 0.0。
query.is_in_lava 如果实体位于熔岩中,则返回 1.0,否则返回 0.0。
query.is_in_love 如果实体在发情,则返回 1.0,否则返回 0.0。
query.is_in_ui 如果实体作为 UI 的一部分呈现,则返回 1.0,否则返回 0.0。
query.is_in_water 如果实体在水中,则返回 1.0,否则返回 0.0。
query.is_in_water_or_rain 如果实体处于水中或雨中,则返回 1.0,否则返回 0.0。
query.is_interested 如果实体感兴趣,则返回 1.0,否则返回 0.0。
query.is_invisible 如果实体不可见,则返回 1.0,否则返回 0.0。
query.is_item_equipped 将一个可选的手槽作为参数(0 或 'main_hand' 代表主手,1 或 'off_hand' 代表副手),如果请求的槽中有物品,则返回 1.0(如果未提供参数,则默认为主手),否则返回 0.0。
query.is_item_name_any 接受一个装备槽名称(参见 replaceitem 命令)和一个可选的槽索引值。(对于具有多个槽的槽名称,例如 'slot.hotbar',需要槽索引。)之后,接受一个或多个完整名称(带有 'namespace:')字符串进行检查。如果指定槽中的物品具有任何指定的名称,则返回 1.0,否则返回 0.0。可以指定空字符串 '' 来检查空槽。请注意,查询 slot.enderchest、slot.saddle、slot.armor 或 slot.chest 仅在行为包中有效。这是 query.get_equipped_item_name 的首选查询,因为如果名称更改,Mojang 可以调整它以避免破坏内容。
query.is_jump_goal_jumping Returns 1.0 if the entity is doing a jump goal jump, else it returns 0.0.
query.is_jumping 如果实体正在跳跃,则返回 1.0,否则返回 0.0。
query.is_laying_down 如果实体正在躺下,则返回 1.0,否则返回 0.0。
query.is_laying_egg 如果实体正在下蛋,则返回 1.0,否则返回 0.0。
query.is_leashed 如果实体被束缚到某物上,则返回 1.0,否则返回 0.0。
query.is_levitating 如果实体正在悬浮,则返回 1.0,否则返回 0.0。
query.is_lingering 如果实体正在徘徊,则返回 1.0,否则返回 0.0。
query.is_local_player 不接受参数。如果实体是当前游戏窗口的本地玩家,则返回 1.0,否则返回 0.0。在分屏模式下,对于其他视图的其他本地玩家返回 0.0。如果在行为包中使用,则始终返回 0.0。
query.is_moving 如果实体正在移动,则返回 1.0,否则返回 0.0。
query.is_name_any Takes one or more arguments. If the entity's name is any of the specified string values, returns 1.0. Otherwise returns 0.0. A preferred query to query.get_name, as it can be adjusted by Mojang to avoid breaking content if names are changed.
query.is_on_fire 如果实体着火,则返回 1.0,否则返回 0.0。
query.is_on_ground 如果实体位于地面上,则返回 1.0,否则返回 0.0。
query.is_on_screen 如果在知道实体是否在屏幕上时对实体调用此函数,则返回 1.0,否则返回 0.0。
query.is_onfire 如果实体着火,则返回 1.0,否则返回 0.0。
query.is_orphaned 如果实体是孤立的,则返回 1.0,否则返回 0.0。
query.is_owner_identifier_any Takes one or more arguments. Returns whether the root actor identifier is any of the specified strings. A preferred query to query.owner_identifier, as it can be adjusted by Mojang to avoid breaking content if names are changed.
query.is_persona_or_premium_skin 如果玩家具有角色或高级皮肤,则返回 1.0,否则返回 0.0。
query.is_playing_dead 如果实体正在装死,则返回 1.0,否则返回 0.0。
query.is_powered 如果实体已启动,则返回 1.0,否则返回 0.0。
query.is_pregnant 如果实体怀孕,则返回 1.0,否则返回 0.0。
query.is_ram_attacking Returns 1.0 if the entity is using a ram attack, else it returns 0.0.
query.is_resting 如果实体处于静止状态,则返回 1.0,否则返回 0.0。
query.is_riding 如果实体正在骑行,则返回 1.0,否则返回 0.0。
query.is_rising (在 min_engine_version 1.20.50 包中不再可用。)在 1.20.40 之后废弃。如果 behavior.timer_flag_2正在运行,则返回 1.0,否则返回 0.0。
query.is_roaring 如果实体当前正在咆哮,则返回 1.0,否则返回 0.0。
query.is_rolling 如果实体正在滚动,则返回 1.0,否则返回 0.0。
query.is_saddled 如果实体有鞍,则返回 1.0,否则返回 0.0。
query.is_scared 如果实体受到惊吓,则返回 1.0,否则返回 0.0。
query.is_scenting (在 min_engine_version 1.20.50 包中不再可用。)在 1.20.40 之后废弃。如果 behavior.timer_flag_1 正在运行,则返回 1.0,否则返回 0.0。
query.is_searching 如果实体正在搜索,则返回 1.0,否则返回 0.0。
query.is_selected_item 如果玩家在物品栏中选择了物品,则返回 true,否则返回 0.0。
query.is_shaking 如果实体正在甩,则返回 1.0,否则返回 0.0。
query.is_shaking_wetness 如果实体正在甩水,则返回 1.0,否则返回 0.0。
query.is_sheared 如果实体能够被修剪并且被修剪,则返回 1.0,否则返回 0.0。
query.is_shield_powered 如果实体具有活动的充能护盾(如果适用),则返回 1.0f,否则返回 0.0。
query.is_silent Returns 1.0 if the entity is silent, else it returns 0.0.
query.is_sitting 如果实体坐着,则返回 1.0,否则返回 0.0。
query.is_sleeping 如果实体处于睡眠状态,则返回 1.0,否则返回 0.0。
query.is_sneaking 如果实体正在潜行,则返回 1.0,否则返回 0.0。
query.is_sneezing 如果实体打喷嚏,则返回 1.0,否则返回 0.0。
query.is_sniffing 如果实体正在探查,则返回 1.0,否则返回 0.0。
query.is_sonic_boom 如果实体正在使用音爆,则返回 1.0,否则返回 0.0。
query.is_spectator 如果实体是旁观者模式,则返回 1.0,否则返回 0.0。
query.is_sprinting 如果实体正在冲刺,则返回 1.0,否则返回 0.0。
query.is_stackable 如果实体是可堆叠的,则返回 1.0,否则返回 0.0。
query.is_stalking 如果实体正在跟踪,则返回 1.0,否则返回 0.0。
query.is_standing 如果实体是站立的,则返回 1.0,否则返回 0.0。
query.is_stunned 如果实体当前目瞪口呆(原文:stunated),则返回 1.0,否则返回 0.0。
query.is_swimming 如果实体正在游泳,则返回 1.0,否则返回 0.0。
query.is_tamed 如果实体被驯服,则返回 1.0,否则返回 0.0。
query.is_transforming 如果实体正在转换,则返回 1.0,否则返回 0.0。
query.is_using_item 如果实体正在使用某个物品,则返回 1.0,否则返回 0.0。
query.is_wall_climbing 如果实体正在爬墙,则返回 1.0,否则返回 0.0。
query.item_in_use_duration 返回物品在最大持续时间内使用的时间(以秒为单位),否则为 0.0(如果不适用)。
query.item_is_charged 将一个可选的手槽作为参数(0 或 'main_hand' 代表主手,1 或 'off_hand' 代表副手),如果物品在请求的槽中蓄力,则返回 1.0(如果未提供参数,则默认为主手),否则返回 0.0。
query.item_max_use_duration 返回物品可以使用的最长时间,如果不适用则为 0.0。
query.item_remaining_use_duration 返回物品剩余的使用时间,如果不适用则为 0.0。查询的物品由槽名称 'main_hand' 或 'off_hand' 指定。剩余时间使用规范化值进行规范化,仅当给定一个值时,否则以秒为单位返回。
query.item_slot_to_bone_name query.item_slot_to_bone_name需要一个参数:装备槽位的名称。此函数返回此实体已映射到该槽位的骨骼的名称。
query.key_frame_lerp_time 返回上一个和下一个关键帧之间的比率。
query.last_frame_time 返回最后一帧的时间(以秒为单位)。如果传递了参数,则假定它是您希望查询的过去帧数。'query.last_frame_time' (或等效的 'query.last_frame_time(0)') 将返回当前帧之前的帧时间。'query.last_frame_time(1)' 将返回两帧前的帧时间。目前,我们存储最近 30 帧的历史记录,但请注意,这将在未来可能会发生变化。传递的索引超过可用数据将返回存储的最旧帧。
query.last_hit_by_player 如果实体是玩家上次击中实体,则返回 1.0,否则返回 0.0。如果由客户端调用,则始终返回 0.0。
query.last_input_mode_is_any 接受一个或多个参数('keyboard_and_mouse'、'touch'、'gamepad' 或 'motion_controller')。如果上次使用的输入是任何指定的字符串值,则返回 1.0。否则返回 0.0。仅在客户端 (资源包) 上可用。
query.lie_amount 返回实体的躺下量。
query.life_span 返回实体的有限生命周期,如果实体永久存在,则返回 0.0
query.life_time 返回自当前动画开始以来的时间(以秒为单位),否则为 0.0(如果未在动画中调用)。
query.lod_index 获取一个距离数组,并返回基于与摄像机的距离的活动对象所处范围的从零开始的索引。例如,'query.lod_index(10, 20, 30)' 将根据生物距离摄像机的距离是小于 10、20 还是 30 个单位返回 0、1 或 2,如果大于 30 个单位,它将返回 3。
query.log debug log 内容日志的值
query.main_hand_item_max_duration 如果适用,则返回主手物品的最大使用时间持续时间,否则返回 0.0。
query.main_hand_item_use_duration 返回主手部物品的使用时间。
query.mark_variant 返回实体的 mark variant
query.max_durability 返回物品的最大耐久度。
query.max_health 返回实体的最大生命值,如果调用此实体不适用,则返回 0.0。
query.max_trade_tier 如果适用,则返回实体的最大交易等级,否则返回 0.0
query.maximum_frame_time 返回最后 'n' 帧中开销最高的帧的时间(以秒为单位)。如果传递了参数,则假定它是您希望查询的过去帧数。'query.maximum_frame_time' (或等效的 'query.maximum_frame_time(0)') 将返回当前帧之前的帧时间。'query.maximum_frame_time(1)' 将返回前两帧的最大帧时间。目前,我们存储最近 30 帧的历史记录,但请注意,这将在未来可能会发生变化。请求更多帧将导致仅对存储的帧数进行采样。
query.minimum_frame_time 返回最后 'n' 帧中消耗最少的帧的时间(以秒为单位)。如果传递了参数,则假定它是您希望查询的过去帧数。'query.minimum_frame_time' (或等效的 'query.minimum_frame_time(0)') 将返回当前帧之前的帧时间。'query.minimum_frame_time(1)' 将返回前两帧的最小帧时间。目前我们存储最近 30 帧的历史记录,但请注意,这将在未来可能会发生变化。请求更多帧将导致仅对存储的帧数进行采样。
query.model_scale 返回当前实体的大小比例。
query.modified_distance_moved 返回实体水平移动的以米为单位的总距离(自上次加载实体以来,不一定自最初创建以来),沿途由状态标志(如 is_baby 或 on_fire)修改。
query.modified_move_speed 返回由状态标志 (如 is_baby 或 on_fire) 修改的实体的当前行走速度。
query.moon_brightness 返回月亮的亮度(FULL_MOON=1.0, WANING_GIBBOUS=0.75, FIRST_QUARTER=0.5, WANING_CRESCENT=0.25, NEW_MOON=0.0, WAXING_CRESCENT=0.25, LAST_QUARTER=0.5, WAXING_GIBBOUS=0.75).
query.moon_phase 返回月相(FULL_MOON=0, WANING_GIBBOUS=1, FIRST_QUARTER=2, WANING_CRESCENT=3, NEW_MOON=4, WAXING_CRESCENT=5, LAST_QUARTER=6, WAXING_GIBBOUS=7).
query.movement_direction 返回实体的标准化位置增量的指定轴。
query.noise Queries Perlin Noise Map
query.on_fire_time 返回实体着火的时间,否则返回 0.0。
query.out_of_control 如果实体失控,则返回 1.0,否则返回 0.0。
query.overlay_alpha 已弃用 (请勿使用 - 此函数已弃用,将被删除)。
query.owner_identifier 已弃用 (如果可能,请改用 query.is_owner_identifier_any 以便以后可以在不破坏内容的情况下更改名称。)返回根角色标识符。
query.player_level 如果活动对象是玩家,则返回玩家的等级,否则返回 0。
query.position 返回活动对象的绝对位置。采用一个表示所需轴的参数(0 == x 轴,1 == y 轴,2 == z 轴)。
query.position_delta 返回活动对象的位置增量。采用一个表示所需轴的参数(0 == x 轴,1 == y 轴,2 == z 轴)。
query.previous_squish_value 返回当前实体的上一个 squish (挤压,史莱姆用)值,如果不适用,则返回 0.0。
query.property 采用一个参数:实体上的属性名称。如果该属性存在,则返回该属性的值,否则返回 0.0。
query.relative_block_has_all_tags 采用实体相对位置和一个或多个标签名称,并根据该位置的方块是否具有提供的所有标签返回 0 或 1。
query.relative_block_has_any_tag 采用实体相对位置和一个或多个标签名称,并根据该位置的方块是否具有提供的任何标签返回 0 或 1。
query.remaining_durability 返回物品剩余的耐久度。
query.ride_body_x_rotation 返回骑乘实体的身体俯仰角世界旋转,否则返回 0.0。
query.ride_body_y_rotation 返回骑乘实体的身体偏航角世界旋转,否则返回 0.0。
query.ride_head_x_rotation 返回骑乘实体的头部 x 世界旋转,否则返回 0.0。
query.ride_head_y_rotation 将一个可选参数作为参数。返回骑乘实体的头部 y 世界旋转,否则返回 0.0。第一个参数仅适用于马、僵尸马、骷髅马、驴和骡子,用于限制以度为单位的旋转。
query.rider_body_x_rotation 如果在实体上调用,则返回有效骑手在提供的索引处的车身俯仰角世界旋转,否则返回 0.0。
query.rider_body_y_rotation 如果在实体上调用,则返回有效骑手在提供的索引处的车身偏航角世界旋转,否则返回 0.0。
query.rider_head_x_rotation 将一个参数作为参数。返回骑手实体在提供的索引处的头部 x 世界旋转,否则返回 0.0。
query.rider_head_y_rotation 将一个或两个参数作为参数。返回骑手实体在提供的索引处的头部 y 世界旋转,否则返回 0.0。马、僵尸马、骷髅马、驴和骡子需要第二个参数,该参数以度为单位限制旋转。
query.roll_counter 返回实体的 roll (掷骰子?)计数器。
query.rotation_to_camera 返回对准摄像机所需的旋转。需要一个参数来表示你想要的旋转轴(0 代表 x,1 代表 y)。
query.scoreboard 采用一个参数 - 此实体的记分板条目的名称。返回此实体的指定计分板值。仅适用于行为包。
query.server_memory_tier 返回一个表示服务器 RAM 内存层的数字,0 = 'SuperLow'、1 = 'Low'、2 = 'Mid'、3 = 'High' 或 4 = 'SuperHigh'。仅在服务器端可用 (行为包)。
query.shake_angle 如果适用,则返回实体的摇晃角度,否则返回 0.0。
query.shake_time 返回实体的摇晃时间。
query.shield_blocking_bob 返回副手盾牌在格挡和被击中时应向下平移的量。
query.show_bottom 如果我们渲染实体的底部,则返回 1.0,否则返回 0.0。
query.sit_amount 返回实体的当前坐姿量。
query.skin_id 返回实体的皮肤 ID
query.sleep_rotation 返回玩家睡觉的床的旋转。
query.sneeze_counter 返回实体的打喷嚏计数器。
query.spellcolor 返回一个结构,该结构表示指定实体的法术颜色。该结构包含 '.r'、'.g'、'.b' 和 '.a' 成员,每个成员为 0.0 到 1.0。如果未指定活动对象,则每个成员值将为 0.0。
query.standing_scale 返回实体的站立程度的刻度。
query.state_time 仅在动画控制器中有效。返回当前动画控制器状态中的时间(以秒为单位)。
query.structural_integrity 返回活动对象的结构完整性,否则返回 0。
query.surface_particle_color 返回位于活动对象下方表面的方块的粒子颜色 (向下扫描最多 10 个方块)。该结构包含 '.r'、'.g'、'.b' 和 '.a' 成员,每个成员为 0.0 到 1.0。如果未指定活动对象或未找到曲面,则每个成员值都设置为 0.0。仅在客户端 (资源包) 上可用。
query.surface_particle_texture_coordinate 返回纹理坐标,用于为位于活动对象下方表面的方块生成粒子(向下扫描最多 10 个方块),该块位于具有 'u' 和 'v' 键的结构中。如果未指定活动对象或未找到曲面,则 u 和 v 将为 0.0。仅在客户端 (资源包) 上可用。
query.surface_particle_texture_size 返回为位于活动对象下方表面的方块生成粒子的纹理大小(向下扫描最多 10 个方块)。如果未指定活动对象或未找到曲面,则每个成员值将为 0.0。仅在客户端 (资源包) 上可用。
query.swell_amount 返回实体的膨胀程度。
query.swelling_dir 如果适用,则返回实体的膨胀方向,否则返回 0.0。
query.swim_amount 返回当前实体游泳的程度。。
query.tail_angle 如果适用,则返回实体尾部的角度,否则返回 0.0。
query.target_x_rotation 返回瞄准实体的当前目标(如果有)所需的 x 旋转,否则返回 0.0。
query.target_y_rotation 返回瞄准实体的当前目标(如果有)所需的 y 旋转,否则返回 0.0。
query.texture_frame_index 返回经验球的图标索引。
query.time_of_day 返回实体所在维度的一天中的时间(午夜 = 0.0,日出 = 0.25,中午 = 0.5,日落 = 0.75)。
query.time_since_last_vibration_detection 返回自活动对象上次检测到振动以来的时间(以秒为单位)。出现错误或尚未检测到振动时,返回 -1。仅在客户端 (资源包) 上可用。
query.time_stamp 返回存档的当前时间戳
query.timer_flag_1 如果 behavior.timer_flag_1 正在运行,则返回 1.0,否则返回 0.0。
query.timer_flag_2 如果 behavior.timer_flag_2 正在运行,则返回 1.0,否则返回 0.0。
query.timer_flag_3 如果 behavior.timer_flag_3 正在运行,则返回 1.0,否则返回 0.0。
query.total_emitter_count 返回世界中活动发射器的总数。
query.total_particle_count 返回世界中活动粒子的总数。
query.touch_only_affects_hotbar 如果触摸输入仅影响触摸条,则返回 1.0,否则返回 0.0。仅在客户端 (资源包) 上可用。
query.trade_tier 如果适用,则返回实体的交易等级,否则返回 0.0
query.unhappy_counter 始终返回零。(最初是为了表示熊猫不快乐,但由于早期的代码更改,它总是只返回零)
query.variant 返回实体的变种索引
query.vertical_speed 返回实体的上升或下降速度(以米/秒为单位),其中正数表示上升。
query.walk_distance 返回实体在地面上非潜行时行进的总距离。
query.wing_flap_position 返回实体的翅膀拍打位置,如果不适用则返回 0.0。
query.wing_flap_speed 返回实体的翅膀拍打速度,如果不适用则返回 0.0。
query.yaw_speed 返回实体的偏航角速度
返回顶部

实体实验性查询列表

返回顶部



实验性运算符

一些运算符可能位于实验性游戏玩法开关之后(见下文列表)。在获得反馈后,我们可以进一步调整它们或将它们移至正式可用状态。

- (目前没有实验性运算符)
返回顶部

版本化变更

Molang 使用包含每个 Molang 表达式的资源或行为包的 'manifest.json' 中的 'min_engine_version' 来确定要应用的规则版本。这允许在不破坏现有内容的情况下更改 Molang 的工作方式。

Molang 版本化变更版本分别应用于每个表达式,因此如果加载了多个包,则可能会激活不同的版本。

这是已添加的版本化变更的列表,以及相应的游戏版本。

要了解哪些版本化变更有效,请查看包含 Molang 表达式的资源或行为包的 'manifest.json' 的 'min_engine_version'。版本小于或等于该版本号的任何版本化变更都将生效。

版本化变更版本

包的min_engine_version 描述
1.17.0 添加了对版本控制更改的初始支持。(实际上不是版本化的更改)
1.17.30 修复了从刻到秒的 query.item_remaining_use_duration 转换(乘以 20 而不是除以)。此外,还修复了该查询中的规范化逻辑,从 1 下降到 0,而不是从 0 到 1。
1.17.40 为无效表达式添加了一些新的错误消息,这些表达式以前运行时可能会产生意外结果。例如,“'text' + 1” 现在将导致内容错误。
1.17.40 新增了对括号或方括号中过多运算符的错误检测,例如:'1+(2 3)'。此外,还添加了更明确的错误检测,用于遇到未知令牌时。
1.18.10 修复了条件(三元)运算符的结合性。以前嵌套的条件表达式,如`A ? B : C ? D : E`的计算结果为`(A ? B : C) ? D : E`。现在他们计算为`A ? B : (C ? D : E)`。
1.18.20 修复了逻辑 AND 在逻辑 OR 之前评估,以及比较运算符在相等运算符之前评估的问题。例如,`A && B || C` 现在评估为 `(A && B) || C` 而不是 `A && (B || C)`。而 `A < B == C > D` 现在评估为 `(A < B) == (C > D)` 而不是 `((A < B) == C) > D`。
1.19.60 修复了除以动态确定的负变量时,结果变为除以该数字的绝对值(正数)的错误。
1.20.0 修复了query.cape_flap_amount使用了错误的玩家旋转(头部旋转而不是身体旋转)的问题。
1.20.10 此版本将 block_property 和 has_block_property 重命名为 block_state 和 has_block_state。
1.20.40 弃用 block_property 和 has_block_property。
1.20.50 dash_cooldown_progress不再受支持,因为该逻辑是在动画中完成的。此外,is_scenting、is_rising 和 is_feelingHappy 查询不再可用,可以改用 timer_flag_1、timer_flag_2 和 timer_flag_3。
1.20.70 查询 surface_particle_texture_size、surface_particle_texture_coordinate 和 surface_particle_texture_size 现在将树叶方块注册为支持脚步粒子
返回顶部