Files
netease-bedrock-wiki/mconline/15-玩法组件教程/6-认识附加包/1-理解附加包的结构.md
2025-08-25 18:36:29 +08:00

108 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
front: https://nie.res.netease.com/r/pic/20211104/69055361-2e7a-452f-8b1a-f23e1262a03a.jpg
hard: 入门
time: 10分钟
---
# 理解附加包的结构
接下来在本节中,我们将着重且正式介绍前文中已经出现过多次的**附加包****Add-on**)的概念。
## 附加包的概念
附件包这一概念由是微软引入我的世界开发,在我的世界中国版中,网易沿用了这一概念同样作为中国版作品的代名词。从本质上看,国际版和中国版的附加包性质是一样的。**附加包**就是一个带有一个**清单文件****Manifest File**)的能够通过**基岩引擎****Bedrock Engine**)对我的世界做出修改的**模组****Mod**),一般是以一个文件夹、一个压缩包或者某种特殊格式的加密文件出现。
基岩引擎就是我的世界游戏读取并应用附加包的一套接口和程序。我们只要按照规定的格式编写附加包,引擎就不会报错。而清单文件则是一个被称作`pack_manifest.json`或者`manifest.json`的文件,用于引领整个附加包的内容,同时方便基岩引擎了解附加包的类型,使其能够知道应选择何种接口来对接这个附加包。
从上述定义可以看出,附加包根据清单文件中的规定可以分为不同的类型。在中国版中,我们主要使用的便是**资源包****Resource Pack**)和**行为包****Behavior Pack**)两种附加包。
- **资源包**:资源包是一种用来存放客户端资源的附加包,其中存放的大部分内容都是用于客户端显示、渲染、计算的内容。比如,资源包中常放着方块、物品、实体等物体的纹理,有些资源包中还存放着渲染用的自定义的材质和着色器。对于和行为包一起制作用于特定玩法的一些资源包,还存放着各种方块、物品、实体等元素的客户端定义文件。
- **行为包**顾名思义行为包主要用来存放各种元素、物体的行为。同时行为包还存放着各种用于逻辑计算的表、脚本决定了游戏的服务端如何运作。比如行为包中一般用来存放玩法的方块、物品、实体等元素的服务端定义文件以及交易表、战利品表、维度、群系、地物等用于游戏服务端的数据或逻辑。模组API编写的脚本也存在于行为包中。
国际版和中国版的附加包的格式有相同之处,也有不同之处,这里我们着重介绍中国版的附加包格式。
## 资源包结构
```shell
RESOURCE_PACK
│ biomes_client.json # 客户端生物群系配色定义文件
│ blocks.json # 客户端方块属性定义文件,包括纹理、各向异性和方块形状等
│ pack_icon.jpg # 资源包的图标,也可以为.png或.tag格式
│ pack_manifest.json # 资源包的清单文件也可以单纯地为manifest.json
│ sounds.json # 声音定义文件,将声音事件链接到对应的系统音效类型上
├─animations # 客户端动画定义
├─animation_controllers # 客户端动画控制器定义,主要用于实体骨骼动画
├─attachables # 附着物定义
├─effects # 中国版特效定义
├─entity # 国际版客户端实体定义
├─fogs # 迷雾定义
├─font # 字体图片及其定义
├─items # 国际版客户端物品定义
├─materials # 材质定义
├─models # 模型定义,包括了几何、骨架和网格等
├─netease_items_res # 中国版客户端物品定义
├─particles # 国际版粒子定义
├─render_controllers # 渲染控制器定义
├─shaders # 着色器
├─sounds # 声音,包含了声音文件和声音事件的定义文件
├─texts # 本地化
├─textures # 纹理(资源包必须存在的文件夹)
└─ui # JSON UI定义
```
## 行为包结构
```shell
BEHAVIOR_PACK
│ pack_icon.jpg # 行为包的图标,也可以为.png或.tag格式
│ pack_manifest.json # 行为包的清单文件也可以单纯地为manifest.json
├─animations # 服务端动画定义
├─animation_controllers # 服务端动画控制器定义,主要用于实体命令动画
├─biomes # 国际版服务端生物群系定义
├─BoxData # 中国版素材
├─config # 中国版模组配置文件
├─customBook # 中国版自定义书
├─blocks # 国际版服务端方块定义
├─entities # 国际版服务端实体定义(行为包必须存在的文件夹)
├─features # 国际版地物定义
├─feature_rules # 国际版地物规则定义
├─functions # 函数
├─Galaxy # 中国版逻辑编辑器的宏和模板
├─items # 国际版服务端物品定义
├─loot_tables # 战利品表定义
├─netease_biomes # 中国版服务端生物群系定义
├─netease_blocks # 中国版服务端方块定义
├─netease_dimension # 中国版维度定义
├─netease_effects # 中国版状态效果定义
├─netease_enchants # 中国版魔咒定义
├─netease_features # 中国版特征定义
├─netease_feature_rules # 中国版特征规则定义
├─netease_group # 中国版物品分组定义
├─netease_items_beh # 中国版服务端物品定义
├─netease_micro_blocks # 中国版微缩方块定义
├─netease_recipes # 中国版配方定义
├─netease_tab # 中国版物品分类/物品栏分页定义
├─Parts # 中国版零件定义及其脚本
├─Presets # 中国版预设定义
├─recipes # 国际版配方定义
├─Script_xxx # 中国版的各类Python脚本
├─spawn_rules # 生成规则定义
├─storyline # 中国版逻辑编辑器的逻辑文件
├─structures # 结构
├─texts # 本地化
└─trading # 交易定义
```
以上为完整的资源包和行为包的文件夹模板框架。大部分资源包和行为包无需拥有以上全部的文件夹,只须在需要的时候建立对应的文件夹和相关的文件即可。在上述所有文件中,只有**清单文件**`pack_manifest.json``manifest.json`)是必须正确存在的,这关系到一个附加包是否能被游戏正常识别。
## 资源包、纹理包和光影包的区别
为了避免大家对各种概念的混淆,这里着重强调一下**资源包**、**纹理包****Texture Pack**,旧译**材质包**)和**光影包****Shader Pack**)的区别。
前面我们已经介绍了,资源包就是一种附加包的类型,一般包含着纹理文件、声音文件、着色器文件、各种客户端的实体、物品、方块定义文件中的全部或者一部分。这种包我们统称为资源包。
而纹理包(旧译材质包)则是指那些基本上只有**纹理****Texture**)贴图文件的资源包。一般的纹理包都主要用于修改原版纹理,更改原版游戏的外观,使游戏画风焕然一新。
光影包则是指主要包含**着色器****Shader**文件的资源包有些光影包还包含一些自定义材质Material或暴露出一些纹理Texture接口供其他纹理包使用比如这段时间很火的四合一PBR贴图规则接口。光影包主要用于改变游戏的渲染效果同样的纹理在不同的渲染效果下显示的样貌和状态是不同的。阴影效果、水面反射、体积云雾都是光影包能够实现的特效。