函数 mcfunction
本页面镜像自 BedrockWiki
根据原始项目协议授权。本文经过AI翻译处理,如有内容遗漏,可以提交PR进行补充。
简介
源自 Bedrock Commands 社区 Discord
函数是包含多行命令的 .mcfunction
文件,可通过游戏中的 /function
命令运行。
函数需要创建在行为包的 functions 文件夹内。纯函数包系统完全由函数文件构成。
函数在多个方面非常有用,可以减少逐个命令方块调试系统所花费的时间。同时也便于将系统打包用于多个世界,并提供了许多可以改变整体运行方式的函数。
函数包目录结构
新手须知
#生成效果
effect @a [tag=atSpawn] regeneration 12 255 true
effect @a [tag=atSpawn] saturation 12 255 true
effect @a [tag=atSpawn] weakness 12 255 true
函数文件中每一新行代表一个新命令。可以使用
#
开头添加注释。函数内的命令不需要以斜杠/
开头,但添加了也不会报错。函数中的所有命令会在同一游戏刻内执行。因此,包含大量变更操作的函数可能导致突然的卡顿,建议尽可能将命令分摊到多个游戏刻中执行。但函数内的命令仍会按顺序依次运行。
Minecraft 无法在一个函数文件中运行超过10,000行命令,这包括原始文件中调用的其他函数文件。
无法执行条件型命令。这类命令仍需通过命令方块实现,或使用1.19.50版本的execute语法。
要在函数中实现延迟执行命令,需使用计分板计时器逐刻计数(达到指定值),并在特定分数时执行命令。可参考计分板计时器系统了解设置方法。
创建函数
找到
📁 com.mojang
文件夹并进入📁 development_behavior_packs
- 开发文件夹用于快速重载资源包,因为这些包不会被缓存到世界文件中。
为函数包创建任意名称的文件夹(称为行为包或BP)。
在BP文件夹内创建
📄 manifest.json
文件和🖼 pack_icon.png
文件(可选)- 清单文件包含注册资源包所需的所有信息,包图标则用于在资源包菜单中显示。包图标建议使用128x128或256x256分辨率(支持2次幂分辨率,会自动缩放)。
创建
📁 functions
文件夹。该文件夹内所有以 .mcfunction 结尾的文件都将注册为游戏内可用的函数,可通过/function <函数名称>
运行。- 支持嵌套函数,只需按函数包目录结构示例中的方式组织文件路径即可。
在游戏中应用行为包并测试函数。修改函数文件后可通过执行
/reload
或重新登录来刷新改动。
注意
函数具有版本依赖性,将运行在 📄 manifest.json
中声明的版本环境下:
min_engine_version
1.19.50+ 将采用新版execute语法min_engine_version
1.19.70+ 需将aux值替换为方块状态
执行方式
在游戏中输入 /function 函数名称
即可执行函数文件内的所有命令(同一游戏刻内完成)。例如嵌套函数 BP/functions/lobby/items/1.mcfunction
需使用路径 /function lobby/items/1
调用。
tick.json
tick.json 是函数包中的特殊文件,用于指定服务器每游戏刻自动运行的函数(类似循环命令方块)。该文件位于 BP/functions
文件夹中,默认在主世界原点坐标 0, 0, 0
处执行。
{
"values": [
"function_1",
"function_2"
]
}
注意:该文件中的函数会在世界初始化后立即运行(无论玩家是否加载完毕),使用不当可能导致意外行为。
示例函数包
函数排错指南
使用 /function
时若未出现命令建议,通常是由于函数中存在错误命令导致。
在创作者设置中启用内容日志可查看函数包中的具体错误信息,包括错误所在函数、行号及语法问题。
每次加载世界或执行 /reload
后都会生成错误列表,可在屏幕上短暂查看或通过设置中的内容日志历史记录查阅。