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

Style Guide

Style Guide
  • 文件夹结构
  • 标识符
  • 文件和文件夹命名
  • 命名空间
  • 子索引
  • 组和事件应相互对应
  • 短名称应通用
  • 函数
    • 函数中的注释
  • 记分板目标与标签
    • 记分板持有者
  • 尽可能分组动画文件
  • 按路径而非名称拆分纹理
  • .lang文件注释
  • 讨论时使用的缩写
  • 定义格式顺序
    • 方块
    • 实体
    • 物品
  • 自定义组件
    • 变量命名

本文档将介绍基岩版Wiki附加包创作风格指南。本指南旨在推广附加包创作的最佳实践,并为所有人提供统一的格式规范。

TIP

本风格指南是动态更新的文档,将随着附加包创作的发展而不断演进。如果您认为某些内容需要更新或修改,请联系我们!

文件夹结构 ​

  • 文件路径中不要使用空格,应使用下划线。
  • 标识符、文件名和文件夹名中不要使用大写字母。"BP"和"RP"文件夹名称可以使用大写。
  • 任何路径的总字符长度不得超过80个字符(控制台限制)。
  • 内容文件夹应保持一致的复数形式:要么全部使用复数,要么全部使用单数,不要混用。例如:

✅️ 一致:

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是单数。

标识符 ​

不要使用以数字开头的标识符,尤其不要使用纯数字的标识符。这适用于实体、组件组、事件以及任何使用命名空间:名称对的内容。

文件和文件夹命名 ​

概念示例
行为包dragons_BP
资源包dragons_RP
几何模型dragon.geo.json
动画dragon.animation.json
dragon.anim.json
动画控制器dragon.animation_controllers.json
dragon.ac.json
RP实体dragon.entity.json
dragon.client_entity.json
dragon.ce.json
BP实体dragon.behavior.json
dragon.se.json
(se: 服务端实体)
物品dragon_tooth.item.json
传统物品 (BP)dragon_tooth.item.bp.json
传统物品 (RP)dragon_tooth.item.rp.json
渲染控制器dragon.render_controllers.json
dragon.rc.json
战利品表dragon.json
配方dragon_saddle.recipe.json
生成规则dragon.spawn.json
交易表dragon.json
粒子效果dragon_magic.particle.json
纹理dragon.png
脚本dragonFlight.js

命名空间 ​

合适的命名空间应该是您或您的团队独有的。像mob、cars、content或custom这样的命名空间是不好的,因为其他开发者可能会使用相同的命名空间。

minecraft和minecon是保留的命名空间,请不要使用。

对于个人项目,请使用您玩家名的变体;对于团队项目,请使用团队名称的合适变体。

当多个开发者共同参与一个项目时,命名空间应该始终共享。如果需要注明贡献者,可以使用子索引:minetite.wiki:dragon

使用命名空间的场景:

  • 实体
  • 粒子效果
  • 组件组
  • 事件

不使用命名空间的场景:

  • 不要在文件夹路径或文件名中包含命名空间。
  • 注意: 以下文件夹例外:functions、structures、loot_tables、trade_tables、sounds和textures。
    • 建议在这些文件夹中使用命名空间,以防止与其他包冲突。
    • 示例: BP/functions/namespace/test.mcfunction

子索引 ​

子索引使用.来分隔链式概念。子索引应按从大到小的顺序排列:

✔️ animation.controller.dragon.flying.taking_off

❌ animation.controller.dragon_take_off_flying

使用子索引时,用_代替空格,而不是另一个.。

✔️ animation.controller.dragon.flying.taking_off

❌ animation.controller.dragon.flying.taking.off

您可以在实体中使用子索引: wiki:dragon.drake

组和事件应相互对应 ​

组事件
wiki:wild✔️ wiki:become_wild
wiki:wild❌ wiki:wild
wiki:tame✔️ wiki:on_tame
wiki:tame❌ wiki:tame

短名称应通用 ​

短名称是文件特定的标识符,用于在标识符和友好名称之间建立映射。它们非常有用,因为它们允许我们重用动画控制器和渲染控制器。因此,您的短名称应该是通用的。

✔️ "sit": "animation.dragon.sit"

❌ "dragon_sitting": "animation.dragon.sit"

当我们使用这种形式的短名称时,可以为所有实体使用通用的"sit"动画控制器,因为我们可以使用sit短名称来播放坐下的动画。

函数 ​

  1. 所有.mcfunction文件必须放在函数文件夹内带命名空间的根文件夹中。在基岩版Wiki上,我们使用wiki命名空间。但您可以根据自己的名称或项目选择命名空间。更多信息请参考命名空间页面。
    • ✅️ BP/functions/wiki/random_number.mcfunction
    • ❌️ BP/functions/random_number.mcfunction
  2. 必须正确嵌套:
    • ✅️ BP/functions/wiki/teleport/zone/hell.mcfunction
    • ❌ BP/functions/wiki/teleport_hellzone.mcfunction
  3. 名称必须遵循动作_对象结构。即动词应在主语之前。
    • ✅️ add_all
    • ❌️ all_add
    • ✅️ shuffle_position
    • ❌️ position_shuffle

函数中的注释 ​

  • 当处理包含多个命令的函数时,使用多个井号(#)在注释中标记不同的标题级别有助于保持代码组织。
  • 可选地,为了进一步区分这些级别,可以应用不同的样式:
    • 一级标题 - # 大写
    • 二级标题 - ## 首字母大写
    • 三级标题 - ### 句子大小写
  • 尽量避免使用超过三个标题级别或过多的标题,因为这会使代码看起来杂乱。参考示例如下:
函数文件示例
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

注意一级标题前使用两行间距,二级标题前使用一行间距以提高可读性。

这种做法有助于创建一致的格式,使每个人更容易遵循,并保持函数的统一性。

记分板目标与标签 ​

  • 必须以命名空间开头并使用蛇形命名法。
    • 这可以防止与其他使用相同标签或目标的包发生冲突。
  • 只能使用小写字母(a-z)、下划线(_)和点号(.)作为特殊字符。

目标示例:

  • wiki:blocks_travelled.overworld
  • wiki:q.is_sneaking
  • wiki:q.is_armed_any

标签示例:

  • wiki:inventory.full
  • wiki:inventory.empty
  • wiki:is_flying

注意:

标签描述确定的状态——如果标签存在,则其条件为真。这就是为什么以类似方式表示为标签的Molang查询不使用q.前缀。

记分板持有者 ​

  • 必须以点号(.)或井号(#)为前缀,并使用帕斯卡命名法。
    • 这可以防止与使用相同名称的游戏标签冲突,并提供清晰的视觉区分,因为记分板持有者与目标紧密相关。
    • 使用前缀而不是命名空间是为了保持简洁,因为带命名空间的目标已经可以防止与其他包冲突。
  • 除点号(.)外,不要使用其他特殊字符。

示例:

  • .Ores.Iron
  • .Ores.DeepslateIron
  • .200

提示:

以井号(#)为前缀的记分板持有者不会显示在记分板侧边栏上。但是,必须用双引号(" ")括起来以避免语法错误。

尽可能分组动画文件 ​

示例:

json
{
    "format_version": "1.8.0",
    "animations": {
        "animation.dragon.sit": {...},
        "animation.dragon.fly": {...},
        "animation.dragon.roar": {...},
  }
}
1
2
3
4
5
6
7
8

按路径而非名称拆分纹理 ​

✔️ textures/dragon/red

❌ textures/dragon_red_skin

✔️ textures/npc/dragon_hunter/archer

❌ textures/npc/dragon_hunter_archer

.lang文件注释 ​

为本地化人员准备的注释应始终内联,格式如下:

the.key=字符串<\t>## 注释,供本地化人员参考。

<\t>代表制表符。

行内注释可用于组织目的,但不应存储对本地化至关重要的信息。

讨论时使用的缩写 ​

缩写概念
BP行为包
RP资源包
FP功能包
VRP原版资源包
VBP原版行为包
AC动画控制器
RPAC资源包动画控制器
BPAC行为包动画控制器
BBBlockbench
BDS基岩版专用服务器
FPV第一人称视角
RDRender Dragon
SP皮肤包
VSCodeVisual Studio Code

定义格式顺序 ​

方块、实体和物品应遵循以下格式顺序。

方块 ​

  • format_version
  • minecraft:block
    • description
      • identifier
      • menu_category
        • category
        • group
      • states
      • traits
    • components
    • permutations
      • condition
      • components

实体 ​

  • format_version
  • minecraft:entity
    • description
      • identifier
      • spawn_category
      • is_spawnable
      • is_summonable
      • properties
    • component_groups
    • components
    • events

物品 ​

  • format_version
  • minecraft:item
    • description
      • identifier
      • menu_category
        • category
        • group
    • components

自定义组件 ​

变量命名 ​

应使用帕斯卡命名法,以Block或Item作为前缀,以Component作为后缀。例如,使用const BlockMeltableComponent = { ... }而不是const meltable = { ... }。

这有助于区分我们在registerCustomComponent中使用的内容和在其他地方使用的值。

贡献者

编辑 Style Guide

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

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

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

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