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
    • 编辑你的第一个模型
      专家

函数

函数
  • 简介
  • 函数包文件夹结构
  • 新手须知
  • 注释风格指南
  • 创建函数
  • 执行
  • Tick JSON
  • 示例函数包
  • 函数故障排除

简介 ​

由基岩版命令社区(BCC) Discord提供

函数是包含多行命令的.mcfunction文件,可通过游戏中的/function命令运行。

函数创建于行为包中的functions文件夹内。一个函数包可以仅用函数文件构建完整系统。

函数能有效减少调试系统时在命令方块间来回切换的时间,还能帮助打包系统供多个世界使用,并提供多种改变游戏运行方式的功能。

函数包文件夹结构 ​

      • 📝this_code.mcfunction
      • 📝more_of_this_code.mcfunction
      • 📝tick.json
        • 📝this_code_is_nested.mcfunction

为保持格式统一、便于他人理解并维持函数间一致性,建议遵循以下文件夹结构最佳实践:

  1. 所有.mcfunction文件必须放在functions文件夹内的命名空间根目录下。Bedrock Wiki使用wiki命名空间,但您可以根据项目或个人命名。详情参考命名空间页面。
    • ✅️ BP/functions/wiki/random_number.mcfunction
    • ❌️ BP/functions/random_number.mcfunction
  2. 包内文件夹和文件名必须使用snake_case
    • 仅允许使用小写字母数字和下划线(_)
    • ✅️ BP/functions/wiki/scoreboard/objectives/add_all.mcfunction
    • ❌️ BP/functions/wiki/scoreboard/objectives/Add-All.mcfunction
  3. 必须正确嵌套:
    • ✅️ BP/functions/wiki/teleport/zone/hell
    • ❌ BP/functions/wiki/teleport_hellzone
  4. 名称应遵循动作_对象结构,动词应位于主语前:
    • ✅️ add_all
    • ❌️ all_add
    • ✅️ shuffle_position
    • ❌️ position_shuffle
  5. 路径总字符长度不得超过80个字符(控制台限制)
  6. 内容文件夹应保持单复数形式一致:
    • 统一使用复数或单数名称,不要混用

✅️ 正确示范:

BP/functions/wiki/ability/ice_blast.mcfunction
BP/functions/wiki/ability/fire_trail.mcfunction
BP/functions/wiki/event/players/on_death.mcfunction
BP/functions/wiki/event/worlds/on_initialise.mcfunction
1
2
3
4
  • 内容文件夹ability和event均为单数
  • event内的players和worlds均为复数

❌️ 错误示范:

BP/functions/wiki/abilities/ice_blast.mcfunction
BP/functions/wiki/abilities/fire_trail.mcfunction
BP/functions/wiki/event/players/on_death.mcfunction
BP/functions/wiki/event/world/on_initialise.mcfunction
1
2
3
4
  • abilities为复数而event为单数
  • event中players为复数而world为单数

新手须知 ​

以下是供新手参考的函数文件示例:

BP/functions/wiki/effects.mcfunction
yaml
# 这些效果适用于出生点
effect @a[tag=wiki:at_spawn] regeneration 12 255 true
effect @a[tag=wiki:at_spawn] saturation 12 255 true
effect @a[tag=wiki:at_spawn] weakness 12 255 true

# 这些效果适用于下界
effect @a[tag=wiki:in_nether] fire_resistance 12 255 true
1
2
3
4
5
6
7
  • 函数中的命令不能以斜杠(/)开头。文件中每新一行代表一个新命令(空行会被忽略)。可以用井号(#)开头添加注释——#后的空格仅为格式偏好。关于函数注释风格指南,请查看下方**注释风格指南**章节。

  • 函数中所有命令都在同一游戏刻执行。因此,导致大规模变化的函数可能造成突然的卡顿,建议尽可能将部分命令分配到多个游戏刻执行。但函数中的命令仍会按顺序执行。

  • 在Minecraft基岩版中,单个函数文件不能运行超过10,000条命令,这包括原始文件中执行的其他函数文件。

  • 无法运行条件命令。这些仍需以某种方式使用命令方块,或利用1.19.50版本的execute语法。

  • 要在函数中实现延迟命令执行,需使用记分板计时器逐步计数,直到特定时刻在文件中执行命令。详见记分板计时器页面了解设置方法。

注释风格指南 ​

  • 当处理包含许多命令的函数时,使用多级井号注释有助于保持组织性:
    • 可选为区分级别,可应用不同样式:
      • 一级标题 - # 大写字母
      • 二级标题 - ## 首字母大写
      • 三级标题 - ### 句子格式
  • 尽量避免使用超过三级标题或过多标题,这会使代码显得杂乱。参考示例如下:
示例函数文件
BP/functions/wiki/ability/fire_trail.mcfunction
yaml
# 玩家丢弃物品时

## 给予效果
### 火焰抗性
execute at @e[type=item,name="Fire Trail Ability"] run effect @p[r=3] fire_resistance 10 255
### 速度
execute at @e[type=item,name="Fire Trail Ability"] run effect @p[r=3] speed 10 1 true

## 添加粒子时间(10秒)
execute at @e[type=item,name="Fire Trail Ability"] run scoreboard players set @p[r=3] abilities.fire_trail 200

## 删除物品
kill @e[type=item,name="Fire Trail Ability"]


# 实体计时器

## 生成粒子轨迹
execute at @a[scores={wiki:ability.fire_trail=1..}] run particle minecraft:basic_flame_particle ~~~

## 倒计时
scoreboard players remove @a [scores={wiki:ability.fire_trail=1..}] wiki:ability.fire_trail 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

注意一级标题前空两行,二级标题前空一行以提升可读性。

这种做法有助于创建统一格式,便于他人理解并保持函数间一致性。 关于记分板和标签规范,请参阅**风格指南**页面。

创建函数 ​

  1. 找到📁 com.mojang文件夹并进入📁 development_behavior_packs

    • 开发文件夹用于快速重新加载包,因为这些包不会被缓存到世界文件中。
  2. 为函数包创建任意名称的文件夹(称为行为包或BP)

  3. 在BP文件夹内创建📄 manifest.json文件和可选的🖼 pack_icon.png文件

    • 清单文件包含注册包所需的所有信息,而包图标会显示在包菜单中。包图标通常为128x128或256x256图像,但任何2的幂次方分辨率均可,它们会相应缩放。
示例 📄 manifest.json
BP/manifest.json
json
{
    "format_version": 2,
    "header": {
        "description": "在此填写您的包描述",
        "name": "在此填写您的包名称",
        "uuid": "00000000-0000-0000-0000-000000000000",
        "version": [1, 0, 0],
        "min_engine_version": [1, 19, 73]
    },
    "modules": [
        {
            "description": "§r",
            "type": "data",
            "uuid": "00000000-0000-0000-0000-000000000000",
            "version": [1, 0, 0]
        }
    ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

注意uuid字段需要替换为实际uuid,且两个生成的uuid必须不同。可在**uuidgenerator.net**生成uuid

示例 🖼 pack_icon.png

示例A: pack_icon.png

示例B:

pack_icon.png

  1. 创建📁 functions文件夹。此文件夹内任何以**.mcfunction**结尾的文件都会在游戏中注册为函数,可通过/function <函数名称>运行。

    • 允许嵌套函数,只需列出相对于functions文件夹的文件路径,如函数包文件夹结构所示。
  2. 在游戏中应用行为包并测试函数。通过运行/reload或重新登录可反映函数文件的更改。

:::提示 注意:

函数有版本要求,因此它们将在📄 manifest.json中列出的版本运行,例如:

  • min_engine_version 1.19.50及以上版本将采用新的execute语法
  • min_engine_version 1.19.70及以上版本将要求用方块状态替换辅助值

:::

执行 ​

在游戏中输入/function 函数名称可执行函数。这将在一个游戏刻内执行函数文件中的所有命令。

例如嵌套函数BP/functions/wiki/teleport/zone/hell可以通过嵌套文件夹路径运行,即/function wiki/teleport/zone/hell

Tick JSON ​

functions文件夹中的最后一个文件是**tick.json。该文件指定了每个游戏刻服务器端运行的函数(类似于循环型命令方块)。它位于BP/functions文件夹中。默认情况下,此文件中运行的函数在主世界的原点(0, 0, 0)执行。示例tick.json**文件:

BP/functions/tick.json
json
{
  "values": [
    "wiki/function_1",
    "wiki/function_2"
  ]
}
1
2
3
4
5
6

注意:此文件中的函数会在世界初始化后立即运行,无论玩家是否已加载。如果使用不当可能导致意外行为。

示例函数包 ​

下载

函数故障排除 ​

使用/function时,您的函数可能不会出现在命令建议中。这通常是由于函数中一个或多个命令存在错误。

在创作者设置中启用内容日志可以查看函数包中是否存在错误,包括错误所在的函数、行号以及具体的语法错误。

每次加载世界或运行/reload反映文件更改后,都会生成错误列表。该列表可在屏幕上显示几秒钟,也可在设置的内容日志历史记录中查看。

contentLogToggles

contentLogHistory

贡献者

编辑 函数

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

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

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

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