Bedrock Wiki
  • QQ
  • 原站
新手入门指南
  • Guide
    • 1. 简介
      指南
    • 2. 附加组件详解
    • 3. 软件与准备工作
    • 4. 项目设置
    • 5. 创建自定义物品
    • 6. 创建自定义实体
    • 7. Blockbench:建模、贴图与动画制作
    • 8. 添加战利品表、生成规则与合成配方
  • Extra
    • a. 理解JSON
    • b. 下载示例包
    • c. 故障排除
      帮助
    • d. 高级清单文件指南
    • e. 格式版本
    • f. Android 项目设置
JSON UI
  • General
    • JSON UI 入门指南
      指南
    • 最佳实践
      指南
  • Tutorials
    • Aseprite 动画
    • 保留标题文本
      中级
    • 修改服务器表单
      中级
    • 字符串与数字转换
      中级
    • 按钮与开关
      新手
    • 添加HUD界面元素
      新手
  • Documentation
    • JSON UI 文档
Meta
  • Style Guide
  • 使用JSON模式(Schemas)
  • 实用链接
  • 版本控制
  • 附加包性能优化
  • Q&A
    • GameTest 问答集 2021/08/06
    • 世界生成问答 2024/11/15
    • 延迟渲染技术预览问答 2024/02/23
    • 方块与物品问答 2024/08/30
    • 脚本与编辑器问答 2023/09/22
NBT
  • General
    • .mcstructure
  • Tutorials
    • 扩展结构限制
      简单
    • 教育版中的实验功能
      简单
  • NBT in Depth
    • NBT 库列表
      专家
    • NBT读取示例
      专家
    • 关于NBT(命名二进制标签)
      专家
世界生成
  • General
    • 世界生成入门
      指南
      实验性
    • 特性类型
      实验性
    • 生物群系
      指南
      实验性
  • Tutorials
    • 特征(Feature)的方块条件
      实验性
    • 生成地表区块
      实验性
    • 生成自定义矿石
      实验性
    • 生成自定义结构
      实验性
    • 高度图噪声地形
      实验性
  • Documentation
    • 生物群系标签
动画控制器
  • 动画控制器入门指南
    指南
  • 实体命令
    中级
  • AFK检测器
  • 将Molang变量转换为计分板数值
  • 死亡指令
  • 重生指令
命令
  • General
    • 命令方块入门指南
    • 函数
    • NBT 命令
    • 坐标系
    • 方块状态
    • 理解目标选择器
    • 记分板操作
  • Commands
    • Execute
      简单
    • Playanimation
    • 伤害
    • 播放音效
  • On Event Systems
    • 玩家首次加入时
    • On Player Join
    • 玩家离开时触发
    • 玩家死亡事件
    • 玩家重生事件系统
    • 首次加载世界时
  • Scoreboard Systems
    • 实体计数器
    • 计分板计时器
    • 比较与获取分数
  • Techniques
    • 执行逻辑门
    • MBE - Max的方块实体
    • FMBE - 创建显示实体的新方法
    • 视线检测
    • 移动状态检测
    • 轨道摄像机
  • Useful Creations
    • 多人位置重排系统
      函数
    • 自定义合成台
      简单
实体
  • General
    • Intro to Entities BP
      指南
      新手
    • 实体资源包入门
      指南
      新手
    • 实体问题排查指南
      帮助
    • NPC对话系统
      中级
    • 实体事件
      新手
    • 实体属性
    • 渲染控制器
      新手
    • 生成规则
  • Tutorials
    • 任意坐标系间的坐标转换(世界、实体、骨骼)
      中级
    • 创建船只
      中级
    • 实体手持物品
      中级
    • 实体攻击机制
      中级
    • 实体睡眠机制
      中级
    • 实体碰撞体
      中级
    • 实体移动
    • 实体计时器
      中级
    • 无敌实体
      新手
    • 村庄机制实现指南
    • 检测其他实体
      中级
    • 生成已驯服的实体
      脚本
      中级
    • 视线检测实体
      中级
    • 禁用队友伤害
      中级
    • 范围效果云入门指南
      中级
    • 虚拟实体
      新手
    • 飞行实体控制
      中级
  • Documentation
    • Vanilla Usage Spawn Rules
    • 原版使用组件
    • 抛射物
    • 虚拟组件
    • 运行时标识符
    • 非生物实体运行时标识符
战利品、配方与交易
  • General
    • 交易行为
  • Documentation
    • 战利品表
    • 交易表
    • 合成配方
    • 物品函数
  • Tutorials
    • 随机化结构战利品
      简单
文档
  • Shared Constructs
  • Molang 查询详解
  • Vanilla Materials
    专家
  • 声音定义
  • 文件类型
  • 材质配置文件说明
    专家
  • 菜单分类
  • 资源包文件夹结构
  • 雾效ID
  • 高级Molang指南
方块
  • General
    • 方块入门指南
      指南
      新手
    • 方块组件
    • Block Tags
    • 方块状态
    • Block Traits
    • 方块排列组合
    • 方块事件
      脚本
    • 方块事件迁移指南
      帮助
    • 方块物品化
      中级
    • 方块问题排查指南
      帮助
  • Visuals
    • 方块剔除
      中级
    • 方块模型
      指南
      新手
      简单
    • 方块着色
      简单
    • 方块纹理动画
      中级
    • 方块纹理变体
      中级
  • Tutorials
    • Precise Interaction
      专家
      脚本
    • Precise Rotation
      专家
      脚本
    • 伪方块
      中级
    • 可旋转方块
    • 应用持续效果
      简单
      脚本
    • 矿石战利品表
      简单
      脚本
    • 规避状态值限制
      专家
  • Vanilla Re-Creations
    • 自定义作物
      中级
      脚本
    • 自定义活板门
      中级
      脚本
    • 自定义玻璃
      新手
      简单
      已弃用
    • 自定义釉面陶瓦
      简单
  • Documentation
    • 原版方块模型
      新手
    • 方块形状
    • 方块格式历史
    • 方块音效
服务器
  • Software
    • Bedrock Server Software
  • Protocols
    • Bedrock Protocol
    • NetherNet 协议
    • RakNet 协议
概念
  • contents.json
  • Molang
    中级
  • Rawtext
  • textures_list.json
  • 命名空间
  • 子包
  • 文本与本地化
  • 着色器
  • 纹理图集
    中级
  • 表情符号与特殊字符
  • 覆盖资源
    中级
  • 音效
    中级
物品
  • General
    • 物品入门指南
      指南
      新手
    • 物品组件
    • 物品标签
    • 物品事件
      脚本
    • Item Event Migration
      帮助
    • 物品问题排查指南
      帮助
  • Tutorials
    • Custom Pottery Sherds
    • 可投掷物品
      中级
    • 生成物品
      中级
    • 自定义武器
      简单
    • 自定义盔甲
    • 自定义食物
      简单
      脚本
    • 通过装备物品执行命令
      实验性
      中级
    • 高分辨率物品
  • Documentation
    • 附魔
    • Numerical Item IDs
    • Vanilla Usage Components
    • 原版物品标识符
      已弃用
    • 可附着物
      新手
    • 物品格式历史记录
视觉效果
  • General
    • 实体视觉效果简介
      指南
    • 基岩版建模指南
    • 动画中的特效
    • 基于数学的动画
      中级
    • 材质
      专家
    • 材质创作
      专家
    • 皮肤包制作指南
    • 自定义死亡动画
      中级
  • Tutorials
    • Glowing Entity Texture
    • 受伤动画
      中级
    • 实体纹理动画
      中级
    • 栓绳位置调整
      简单
    • 玩家几何模型
      新手
    • 移除实体阴影
      中级
    • 重绘生成蛋纹理
      新手
  • Ideas
    • 结构展示技巧
粒子效果
  • General
    • 粒子效果入门
      指南
  • Tutorials
    • 禁用粒子效果
      新手
  • Documentation
    • 原版粒子效果
脚本编写
  • General
    • 脚本编程入门
    • 什么是Script API?
    • API 模块
  • Tutorials
    • GameTests
      实验性
    • 简易聊天命令
      实验性
    • 脚本核心功能
    • 脚本表单
      实验性
    • 脚本请求API
      实验性
    • 阻止方块放置
  • Documentation
    • JavaScript 问题排查指南
    • Script Resources
    • Script Watchdog
      实验性
    • TypeScript
    • 引擎环境
虚拟现实
  • General
    • 启用VR模式
      指南
    • 配置资源包
      专家
  • Tutorials
    • 编辑你的第一个模型
      专家

Molang 查询详解

Molang 查询详解
  • query.armor_texture_slot
  • query.armor_material_slot
  • query.armor_color_slot
  • query.get_equipped_item_name
  • query.get_name
  • query.is_name_any
  • query.is_item_name_any
  • query.is_enchanted
  • query.is_eating
  • query.is_ghost
  • query.is_grazing
  • query.is_jumping
  • query.modified_move_speed
  • query.log
  • query.on_fire_time
  • query.scoreboard
  • query.structural_integrity
  • variable.attack_time
  • query.is_roaring
  • query.head_x_rotation
  • query.head_y_rotation
  • query.target_x_rotation 与 query.target_y_rotation
  • query.time_of_day
  • query.eye_target_x_rotation 与 query.eye_target_y_rotation
  • variable.short_arm_offset_right
  • variable.short_arm_offset_left
  • query.movement_direction
  • query.block_neighbor_has_any_tag 与 query.relative_block_has_any_tag

基岩版Molang文档的不足是众所周知的。本页面将尽可能为各个查询提供额外细节以弥补这一缺陷。本页面适合按需搜索查阅,无需完整阅读。请使用侧边栏或Ctrl+F进行导航。

TIP

本页面并非完整列表!仅包含我们已补充说明的查询。完整查询列表可查阅此处!

query.armor_texture_slot ​

格式:query.armor_texture_slot(x) = y

其中x和y均为整数参数,对应下表:

X参数 ​

参数值装备槽位
0头盔
1胸甲
2护腿
3靴子

Y参数(常规) ​

参数值装备类型
-1无装备
0皮革装备
1锁链装备
2铁质装备
3钻石装备
4金质装备
5鞘翅
6海龟壳
7下界合金装备

Y参数(马匹) ​

参数值装备类型
1皮革马铠
2铁质马铠
3金质马铠
4钻石马铠

示例 ​

query.armor_texture_slot(3) == 1:检测是否穿着铁质靴子

query.armor_material_slot ​

格式:query.armor_material_slot(x) = y

其中x和y均为整数参数:

X参数 ​

参数值装备槽位
0头盔
1胸甲
2护腿
3靴子

Y参数 ​

具体含义未知,可能对应:

参数值装备材质类型
0默认装备材质
1附魔装备材质
2皮革装备材质
3附魔皮革装备材质

query.armor_color_slot ​

注意:截至版本1.16.100.51,此查询会导致游戏崩溃,可能在后续版本修复

格式:color = query.armor_color_slot(slot, channel)

其中slot和channel均为整数参数:

槽位参数 ​

参数值装备槽位
0头盔
1胸甲
2护腿
3靴子

通道参数 ​

参数值色彩通道
0红色通道
1绿色通道
2蓝色通道
3透明度通道

返回值 ​

返回指定通道的颜色值

query.get_equipped_item_name ​

WARNING

已弃用查询:建议尽可能使用新查询query.is_item_name_any,该查询是此查询的升级版。但本查询仍会保留以确保向后兼容。

格式:query.get_equipped_item_name('main_hand') = 'item_name'

接受一个可选的手部槽位参数(0或'main_hand'表示主手,1或'off_hand'表示副手),以及第二个参数(0=默认)用于选择检测实际装备物品或当前渲染物品。返回请求槽位中的物品名称(未指定参数时默认检测主手),若无物品则返回空字符串。

其中item_name为要检测的物品名称(无需命名空间,注意使用引号)。

示例:"query.get_equipped_item_name == 'diamond'"

能否检测背包物品?可以!使用新查询query.is_item_name_any

query.get_name ​

WARNING

已弃用查询:建议尽可能使用新查询query.is_name_any,该查询是此查询的升级版。但本查询仍会保留以确保向后兼容。

格式:query.get_name == 'Name'

当实体实际显示名称与指定名称匹配时返回true(可使用OnixClient查看第三人称视角的名称)。需在特定条件下使用。

<详情折叠标题="展开示例">

<代码头>animation_controllers/ac.json</代码头>

json
{
    "format_version": "1.10.0",
    "animation_controllers": {
        "controller.animation.ac": {
            "initial_state": "default",
            "states": {
                "default": {
                    "transitions": [
                        {
                            "active": "query.is_alive"
                        }
                    ]
                },
                "active": {
                    "transitions": [
                        {
                            "default": "(1.0)"
                        }
                    ],
                    "animations": [
                        {
                            "anim": "query.get_name == '...'" // 只能在此处使用!
                        }
                    ]
                }
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

</详情>

query.is_name_any ​

格式:query.get_name('Name1', 'Name2') 接受一个或多个参数。 当实体实际显示名称与任一给定名称匹配时返回true。 需在特定条件下使用。

<详情折叠标题="展开示例">

<代码头>animation_controllers/ac.json</代码头>

json
{
    "format_version": "1.10.0",
    "animation_controllers": {
        "controller.animation.ac": {
            "initial_state": "default",
            "states": {
                "default": {
                    "transitions": [
                        {
                            "active": "query.is_alive"
                        }
                    ]
                },
                "active": {
                    "transitions": [
                        {
                            "default": "(1.0)"
                        }
                    ],
                    "animations": [
                        {
                            "anim": "query.is_name_any(...)" // 只能在此处使用!
                        }
                    ]
                }
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

</详情>

query.is_item_name_any ​

格式:query.is_item_name_any('slot.weapon.mainhand', 0, 'namespace:item_name')

参数依次为:装备槽名称、槽位索引值,以及带命名空间的物品名称列表。

可用装备槽如下:

槽位名称槽位数描述
slot.weapon.mainhand0通常存放手持物品
slot.weapon.offhand0副手槽,存放如盾牌、不死图腾或地图等物品
slot.armor.head0头部护甲
slot.armor.chest0胸甲
slot.armor.legs0护腿
slot.armor.feet0靴子
slot.armor0马铠
slot.saddle0鞍具槽
slot.hotbar0到8玩家快捷栏
slot.inventory0+实体库存(如玩家、运输矿车、驴等)
slot.enderchest0到26玩家末影箱库存

检测玩家背包物品 ​

格式:t.val = 0; t.i = 0; loop(27, {t.val = q.is_item_name_any('slot.inventory', t.i, 'namespace:item_name'); t.val ? break; t.i = t.i+1;});

将namespace:item_name替换为要检测的物品。此代码会遍历全部27个背包槽位,当发现指定物品时返回1.0。注意快捷栏与主背包槽位不同,需单独检测。

query.is_enchanted ​

格式:is_enchanted = query.is_enchanted

根据实体是否带有附魔效果返回1.0或0.0。

目前仅能在材质中使用

query.is_eating ​

此查询追踪某些实体的"进食"状态(不适用于玩家)。触发条件需使用以下组件之一:

  • minecraft:behavior.eat_carried_item
  • minecraft:behavior.snacking

query.is_ghost ​

格式:is_ghost = query.is_ghost

根据实体是否为幽灵返回1.0或0.0。

目前仅对守卫者幽灵返回1.0,用于其渲染器

query.is_grazing ​

格式:is_grazing = query.is_grazing

根据实体是否正在啃食方块返回1.0或0.0。

目前仅对绵羊及使用绵羊运行时ID的实体返回1.0

query.is_jumping ​

格式:is_jumping = query.is_jumping

根据实体是否处于跳跃状态返回1.0或0.0。

对玩家而言,触发条件包括:

  • 按下跳跃键(包括水中和攀爬脚手架时)
  • 或自动跳跃触发
  • 或游泳时自动跳跃
  • 或骑乘实体蓄力跳跃时

query.modified_move_speed ​

格式:modified_move_speed = query.modified_move_speed

返回受状态标志(如is_baby或on_fire)影响的实体当前移动速度。

典型值示例:

  • 玩家行走:约0.86
  • 玩家冲刺:1.0
  • 玩家冲刺跳跃:0.35
  • 玩家着火行走:1.0
  • 玩家着火冲刺:1.0
  • 玩家着火冲刺跳跃:0.525

query.log ​

内容日志与调试日志不同,属于独立文件。query.log仅输出至调试日志。

query.on_fire_time ​

格式:on_fire_time = query.on_fire_time

返回实体着火开始/结束后的刻数(tick),否则返回0.0。

典型行为:

  • 实体生成:值为0
  • 实体点燃:值从0开始每刻+1
  • 实体着火2秒:值为40并持续递增
  • 实体灭火:值重置为0并继续递增(即使未着火)
  • 实体再次点燃:值重置为0并继续递增
  • 实体第二次灭火:值重置为0并继续递增

本质上是记录实体首次点燃后持续计时的刻数计时器,在着火状态变化时重置。

query.scoreboard ​

格式:query.scoreboard('objective_name') > 0

当查询值符合指定范围时返回1.0或0.0。基于记分板数值、molang运算符和比较值。

注意:有时可能因未知原因失效,例如无法查询含大写字母的记分板名称(如testfoo可查但testFoo不可查)。

query.structural_integrity ​

格式:structural_integrity = query.structural_integrity

用于船和矿车的损毁机制。受攻击时减少,随时间恢复。可能仅适用于船和矿车。

variable.attack_time ​

说明 ​

该变量以查询形式实现,可在任何实体上使用(客户端/服务端皆可),无需预先定义。

对实体 ​

追踪实体攻击动作的挥动进度。未攻击时返回0.0,攻击时返回0.0至总攻击时间(约0.3)的线性递增值。对玩家而言范围是0.0到1.0。返回值表示攻击进度的百分比(小数形式),例如攻击动作过半时返回0.5。

对玩家 ​

追踪所有手臂骨骼挥动动作,包括:

  • 放置方块
  • 放置实体
  • 交互(当启用挥动动画时)
  • 近战攻击

query.is_roaring ​

当发生knockback_roar攻击时返回true。

query.head_x_rotation ​

格式:query.head_x_rotation(x)

其中x指定实体头部编号(对凋灵怪有意义)。返回头部俯仰角:

  • 最大仰视:-89.9
  • 最大俯视:89.9

query.head_y_rotation ​

格式:query.head_y_rotation(x)

其中x指定实体头部编号(对凋灵怪有意义)。返回头部偏航角:

  • 范围:-179.9至179.9
  • 数值会环绕(例如从-179.9轻微转动会跳至179.9)

query.target_x_rotation 与 query.target_y_rotation ​

功能分别对应query.head_x_rotation和query.head_y_rotation,但不接受头部编号参数。

query.time_of_day ​

返回实体所在维度的时间进度(午夜=0.0,日出=0.25,正午=0.5,日落=0.75)。计算公式:

f(x) = (x*0.25/2400)mod 1

<详情折叠标题="时间对应表">

query.time_of_day游戏刻
0.0018000
0.0118240
......
1.0018000

完整表格参见原始分析

</详情>

query.eye_target_x_rotation 与 query.eye_target_y_rotation ​

对玩家无效。具体用途不明确。

variable.short_arm_offset_right ​

返回玩家右臂骨骼相对于默认皮肤几何的偏移系数:

  • 细臂(3像素宽)皮肤:0.5
  • 常规(4像素宽)皮肤:0.0

注意:玩家需进入第一人称视角至少一次才会初始化此变量。

variable.short_arm_offset_left ​

功能同variable.short_arm_offset_right,但对应左臂骨骼。

query.movement_direction ​

返回实体移动方向向量的三个归一化分量(模长范围0到1)。

注意:当前版本中,返回值会随实体速度变化(地面移动时值小于空中同向移动)。要获取真实的归一化速度向量需手动计算:

variable.mag = math.sqrt( math.pow( query.movement_direction(0), 2 ) + math.pow( query.movement_direction(1), 2) + math.pow( query.movement_direction(2), 2));
variable.xNorm = query.movement_direction(0) / variable.mag;
variable.yNorm = query.movement_direction(1) / variable.mag;
variable.zNorm = query.movement_direction(2) / variable.mag;
1
2
3
4
参数值轴向
0X轴
1Y轴
2Z轴

query.block_neighbor_has_any_tag 与 query.relative_block_has_any_tag ​

需启用实验性Molang功能。功能描述:接收相对坐标和一个或多个标签名,根据该位置方块是否具有指定标签返回0或1。适用于连接方块检测或实体探测。

区别:

  • query.block_neighbor_has_any_tag:基于方块位置
  • query.relative_block_has_any_tag:基于实体位置

语法:

  • q.block_neighbor_has_any_tag(x,y,z,'tag_name')
  • q.relative_block_has_any_tag(x,y,z,'tag_name')

示例:

  • q.relative_block_has_any_tag(0,-1,0,'grass'):检测实体下方1格是否含"grass"标签方块
  • q.block_neighbor_has_any_tag(0,-1,0,'grass'):检测方块下方1格是否含"grass"标签

多标签检测格式:q.correct_query(0,-1,0,'grass', 'plant')(将correct_query替换为正确查询名)

注意:可检测自定义标签及原版标签

贡献者

编辑 Molang 查询详解

Bedrock Wiki by Bedrock OSS ,Translate by 8aka-Team

"Minecraft"是Mojang AB的注册商标。

Bedrock OSS、Bedrock Wiki以及 bedrock.dev 与Microsoft及Mojang AB不存在任何隶属关系。

  • 隐私政策
  • 加入QQ社区
  • 参与贡献指南
  • 访问代码仓库