附加包

From Minecraft基岩版开发Wiki

附加包(Add-on)Mojang官方支持的一种能够改变游戏运行规则的文件。

附加包一般由资源包行为包两部分构成。资源包储存了游戏中的音效字体纹理文件UI文件模型动画渲染闪烁标语以及语言文件;行为包储存了游戏中的实体方块物品配方战利品表交易列表函数命令、以及生物生成规则

版本控制[edit]

附加包需要通过不同的版本号来决定相应部分的读取方式。

基版本[edit]

格式版本[edit]

格式版本普遍存在于附加包中,它用于确定当前文件的读取方式,通常是由三位数字组成的字符串(例如"format_version": "1.13.0"),有时又是数组。错误的格式版本可能会导致游戏无法正常读取该文件的内容,并抛出内容日志信息;错误的清单文件格式版本会导致游戏在附加包信息中抛出警告或直接无法读取。

附加包版本[edit]

附加包版本由附加包的作者自定义,它是清单文件中header对象里的一个名为version的数组,由三个整数组成(例如"version": [1,0,0])。附加包版本定义了这个附加包的版本,它会在附加包被成功读取后显示到附加包清单信息界面中。

游戏内的清单信息界面。

它还会影响附加包的升级和依赖。

模块版本[edit]

子包[edit]

子包(Subpack)用于为附加包添加可选的加载内容。

子包文件放置在附加包根目录下的subpacks文件夹内,其中每个文件夹为一个子包,子包内的文件结构与该附加包的文件结构相同,加载了子包后游戏将把该子包中的内容覆盖原附加包的内容。例如在子包文件夹中新建一个/textures/blocks路径并向其内添加一张名为stone.png的图片,那么游戏将在加载了该子包后将其添加到原附加包中一并加载或覆盖原有的stone.png贴图。下方举例了一个基本的子包结构:

  •  <附加包>.mcpack
    •  manifest.json
    •  pack_icon.png
    •  subpacks
      •  <subpack_0>
        • ……
      •  <subpack_1>
      •  <subpack_2>
      •  ……
    • ……
附加包的设置界面

添加了子包的附加包会在该附加包的选项中显示按钮,点击后会打开附加包设置界面,滑动分辨率‌[原文如此]滑块即可更改该附加包使用的子包。

语法[edit]

子包由清单文件定义并显示在该附加包的设置选项中。通过向清单文件中添加subpacks字段可对子包进行定义。下方给出了示例及相关注释:

{
  "format_version": 2,
  "header": {
    "description": "",
    "name": "example_pack",
    "uuid": "e2a8a535-de94-42bc-99b3-07b73c76adf5",
    "version": [ 1, 0, 0 ],
    "min_engine_version": [ 1, 16, 0 ]
  },
  "modules": [
    {
      "description": "",
      "type": "resources",
      "uuid": "bbb9e40d-c8a6-44cb-b50f-2a2d33801bf3",
      "version": [ 1, 0, 0 ]
    }
  ],
  "subpacks":[
    {
      "folder_name":"subpack_0", //String类型,该子包的文件夹名称。
      "name":"Low", //String类型,该子包在游戏子包设置界面中显示的名称。
      "memory_tier":1 //Int类型,该子包所需内存,数字从小到大所需内存依次升高。
    },
    {
      "folder_name":"subpack_1",
      "name":"Medium",
      "memory_tier":2
    },
    {
      "folder_name":"subpack_2",
      "name":"High",
      "memory_tier":3
    }
  ] //Array类型,可选,添加该字段后可定义该附加包的子包。
}

导入[edit]

自动导入[edit]

附加包文件可被Minecraft识别[注 1]对应后缀并自动导入游戏。以下是Minecraft可识别的附加包文件后缀:

包类型 文件后缀[注 2]
导入路径
Win10版 安卓版
资源包 .mcpack %LOCALAPPDATA%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\resource_packs /sdcard/Android/data/com.mojang.minecraftpe/files/games/com.mojang/resource_packs[注 3]
行为包 .mcpack %LOCALAPPDATA%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\behavior_packs /sdcard/Android/data/com.mojang.minecraftpe/files/games/com.mojang/behavior_packs[注 3]
附加包(含资源包和行为包)[注 4] .mcaddon (内部文件分别为资源包和行为包的路径) (内部文件分别为资源包和行为包的路径)
皮肤包 .mcpack %LOCALAPPDATA%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\skin_packs /sdcard/Android/data/com.mojang.minecraftpe/files/games/com.mojang/skin_packs[注 3]
世界模板 .mctemplate %LOCALAPPDATA%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\world_templates /sdcard/Android/data/com.mojang.minecraftpe/files/games/com.mojang/world_templates[注 3]

在Win10版中,双击文件即可启动游戏并自动导入;在安卓版中,点击文件打开为“其他”(在其他第三方文件管理器中称呼可能不同,例如:“更多”、“类型”等。),选择Minecraft图标即可启动游戏并自动导入。

自动导入可能会面临导入失败的问题,游戏会在导入后在屏幕顶部显示相关的提示信息。下方列出了可能遇到的问题及解决方案:

  • 缺少清单文件:添加正确的清单文件即可。
  • 附加包重复:该版本的附加包已经导入过了,无需再次导入。若是更新附加包,则需将附加包版本(清单文件中"version"对象的值)调高。
  • 清单文件格式错误:检查清单文件格式。清单文件中"type"对象的值可能不正确,对照包类型表"type"对象的值修改正确。
  • 游戏版本不适配:清单文件中"min_engine_version"对象中填写的游戏版本号大于了当前游戏的版本,降级游戏或修改"min_engine_version"对象的值至适配版本即可。

手动导入[edit]

部分附加包可能存在命名不规范和文件结构不规范的问题,这往往会导致自动导入失败,此时我们需要手动导入。

附加包通常打包为一个修改了后缀的压缩文件。手动导入需我们先将文件解压(部分平台需要先将文件后缀改为.zip才能解压),然后将解压后的文件按照上表放到对应文件夹即可。如果文件未压缩,则直接将文件放入对应文件夹。

除了通过文件后缀名来辨别包类型,我们还可以通过文件名来辨别。如果文件名中包含“BE”、“BEH”、“BP”、“behavior”等字样,则该文件多为行为包;如果文件名中包含“RE”、“RES”、“RP”、“resource”等字样,则该文件多为资源包。若无法通过文件名来辨别包类型,还可以通过包中的清单文件(文件名:manifest.json)来辨别。打开manifest.json,找到对象"type",其值决定了该包的类型。根据包类型将文件放入对应文件夹即可。

  1. 文件后缀仅决定该文件能否被Minecraft识别并导入,不能决定该文件的包类型。包类型由清单文件"type"的值决定。
  2. 一般情况下,附加包作者都会根据包类型使用对应的文件后缀,这样更便于使用者分清文件的包类型,但并不一定使用表中列出的对应文件后缀。
  3. 3.0 3.1 3.2 3.3 1.18.0.21之前的路径:
    • 资源包:/sdcard/games/com.mojang/resource_packs
    • 行为包:/sdcard/games/com.mojang/behavior_packs
    • 皮肤包:/sdcard/games/com.mojang/skin_packs
    • 世界模板:/sdcard/games/com.mojang/world_templates
  4. 资源包和附加包需以文件夹的形式放在附加包文件内,不能有多余嵌套文件夹。
    •  <pack_name.mcaddon>
      •  <behavior_pack>
        •  manifest.json
        •  pack_icon.png
        • ……
      •  <resource_pack>
        •  manifest.json
        •  pack_icon.png
        • ……

使用[edit]

附加包导入游戏后,其中资源包可在设置的“全局资源”一栏找到(若资源包清单文件"pack_scope"的值为world,则不会在此处显示)。在此激活的资源包将在整个游戏中使用,例如游戏主界面、单人存档、多人联机、服务器(多人游戏中如果服务端启用了“强制纹理”则资源包将无法生效)。

在世界设置中,“资源包”和“行为包”两栏分别可以设置该世界中使用的资源包行为包,设置后不会作用于除此世界外的其他地方。勾选“资源包”菜单中的“要求玩家接受资源包才能加入”选项可以使此世界只使用“资源包”菜单中激活了的资源包,而不会受“全局资源”中已激活的资源包的影响。

已导入的皮肤包会在角色创建器中“经典皮肤”目录的“已拥有”一栏显示,玩家可以在此处选择并使用皮肤包中的皮肤。

点击世界列表菜单栏中的“新建”按钮,在“创建”菜单下方“导入的模板”处会显示已导入的世界模板。点击世界模板进入世界设置可创建该模板中的世界,若清单文件中"lock_template_options"的值为true,则“游戏选项”菜单将会被锁上,点击“解锁模板世界选项”按钮可将该菜单解锁,但修改模板世界设置可能会导致游戏体验不能到达作者预期效果。

游戏设置的“存储”菜单中列出了所有的附加包,在此处可以管理和查看已拥有附加包。

你知道吗[edit]

  • 不同的平台有不同的路径长度限制。算上包或世界的路径,平台会计算导入到Minecraft里的目录长度。如果长度超出限制,包会导入失败并且会变成无效状态。正因如此,我们建议:保持路径长度为70字符或更少,即从包或世界模板的根目录到一个文件的最长路径长度应该只能有70字符长。路径中的每一部分(目录或文件名)必须小于60字符。否则,一些平台将无法识别这一部分。

Template:ModFormat Template:Navbox Addon