覆盖资源
附加包分层机制
附加包系统采用分层构建方式,每个资源包都会叠加在前一个包之上。即使你只添加了单个资源包,系统始终会隐式加载一个基础的原版资源包。当你添加自定义内容时,这些内容将能完全访问所有原版文件。
访问原版文件
这种分层结构非常实用,它允许我们直接访问原版内部文件,而无需将其复制到附加包中。例如你可以直接引用blocks/stone.png作为自定义实体的纹理——无需移动文件即可直接生效。这对模型、渲染控制器或音效等资源尤为便利。
若原版资源发生变更(比如JAPPA更新了石头纹理),你的附加包也会自动获得更新,因为你引用的是动态的原版资源。
请尽可能多地利用这种分层机制。如果不需要将某些内容复制到附加包中,就不要复制。
WARNING
绝对不要在原版资源包/行为包的副本中创建附加包。这会导致你的附加包体积异常庞大,并严重影响性能。请始终从空白附加包开始,然后仅复制需要覆盖的文件。
资源覆盖
通过分层机制,我们还可以覆盖原版资源——只需创建相同路径或相同标识符的文件即可。新文件将替换原版中的对应文件,从而实现纹理、音效、实体行为等修改。
WARNING
不同类型的资源有不同的覆盖方式,请务必使用正确的方法!
路径覆盖
通过路径引用且没有标识符的资源,可以通过创建相同路径的新文件直接覆盖。以下资源类型适用此方式:
- 函数
- 战利品表
- 纹理
- 音效
- 交易表
这种覆盖是绝对性的:新资源会完全取代旧资源。
TIP
示例:若要替换红石矿石纹理,只需在textures/blocks/redstone_ore.png路径放置新文件。
标识符覆盖
许多资源是通过标识符而非文件名定义的!覆盖这类资源时,只需创建具有相同标识符的新文件(无需考虑路径)。以下资源类型适用此方式:
- BP实体
- RP实体
- 动画
- 模型
- 动画控制器
- 生成规则
- 配方
- 粒子效果
- 渲染控制器
这种覆盖同样是绝对性的:新资源会完全取代旧资源。
TIP
示例:若要提升恶魂的生命值,需创建一个带有minecraft:ghast标识符的新BP实体文件,并包含使恶魂正常运行的所有行为组件。
注意:实体文件不会自动合并,因此你需要先完整复制原版恶魂BP文件,再修改生命值。仅创建带有高生命值组件的minecraft:ghast文件是无效的。
引用文件覆盖
许多资源还可以通过"注册系统"文件进行修改。这类文件的特殊之处在于:它们采用合并机制而非覆盖机制。这意味着你无需从原版资源复制内容,只需创建空白文件并定义需要修改的部分即可。
以下文件适用此机制:
- 所有UI文件
- 所有语言文件
item_texture.jsonflipbook_textures.jsonterrain_texture.jsonsounds.jsonmusic_definitions.jsonsound_definitions.json
TIP
示例:假设要通过引用文件覆盖糖的纹理,只需创建包含以下内容的item_texture.json:
{
"resource_pack_name": "vanilla",
"texture_data": {
"sugar": {
"textures": "textures/path/to/my/sugar"
}
}
}该定义会与原版item_texture.json合并,并覆盖sugar这个短名称。当原版物品调用该短名称时,将指向你的自定义纹理路径而非原版糖纹理。
覆盖风险
由于附加包主要采用覆盖而非合并机制,要让两个不兼容的附加包协同工作非常困难。例如,若同时加载两个修改苦力怕行为的附加包(一个使其加速,一个使其巨型化),后加载的附加包会完全覆盖前者的修改。
这个问题在player.json文件(无论是RP还是BP中)上尤为突出,因为该文件常被用于游戏性修改。
不可覆盖内容
并非所有内容都能被覆盖,以下列出无法通过上述方法修改的内容:
- 原版物品(非全部)
- 原版方块
- 原版雾效(需创建新命名空间的雾效并修改所有引用点)



