教程:结构包

来自Minecraft基岩版开发Wiki
结构包
独立教程
难度
初级
前置知识
适用版本
国际版
中国版
所有版本
实践设备
Windows

前述[编辑]

这篇内容主要介绍基岩版的跨存档导出结构方法。和Java版相比,基岩版的方法稍复杂些,需要Addon的行为包。而且请确保你有Windows版的Minecraft(不论是否为中国版),否则你会在第一步的导出就卡住。

要想通过行为包进行跨存档导出结构的话,你至少需要了解结构方块的几种用法。直到现在(1.17.41),结构方块有4种用法:储存模式、加载模式、3D导出模式、角落模式,点击结构方块的链接来具体查看结构方块的用法,并在游戏内多加实践。

准备.mcstructure文件[编辑]

首先你应该把你的结构导出,这就需要用到结构方块。请注意,这需要在Windows上运作的基岩版,在Android或iOS里是无法导出的。

利用结构方块在储存模式或加载模式框选好你的结构,然后点击导出按钮,Windows会跳出一个保存.mcstructure的弹窗,先把它存储到一个易找的路径,之后还要用到这些文件。你可以同时导出多份文件。

构建一个行为包框架[编辑]

首先你需要准备一个文本编辑器,我个人非常推荐你使用Visual Studio Code,并安装扩展Blockception's Minecraft Bedrock Development

结构包的本质就是行为包,为此要构建一个行为包框架——manifest.json,这就是清单文件,在这篇文章里介绍的已经比较详细了,这里只贴出一个大致的模板。

{
  "format_version": 2,
  "header": {
    "description": "行为包的描述",
    "name": "行为包的名字",
    "uuid": "fca053d9-41de-4658-a2a2-9d87d6bc32e3",
    "version": [1, 0, 0],
    "min_engine_version": [1, 17, 0]
  },
  "modules": [
    {
      "description": "模块描述",
      "type": "data",
      "uuid": "57bb2629-5615-40ab-973d-01e46f77d867",
      "version": [1, 0, 0]
    }
  ]
}

然后将这个文件保存到一个新建的文件夹中,这就是你的行为包了。建议你可以将行为包命名为behavior_pack或BP,在后续编写addon的时候也可以继续沿用VSCode的扩展。关于更多的信息,请见手册:制作附加包/包的构建

完善你的行为包[编辑]

你构建了一个行为包,但还没有任何内容。接下来我们来向这个行为包里添加一些东西。

如果你需要行为包icon,可以准备一个pack_icon.png(最好是正方形)。

然后在manifest.json层级创建一个名为structures的文件夹(带上s),然后把你导出的.mcstructure文件放进structures文件夹里,路径如下:

  •  <behavior_pack>
    •  manifest.json
    •  pack_icon.png
    •  structures
      •  <structure_name1>.mcstructure
      •  <structure_name2>.mcstructure
      •  <structure_name3>.mcstructure
      •  ……

导入行为包[编辑]

接下来就是导入行为包了。关于导入更详细的信息,见手册:制作附加包/运行、调试与导出。当然,我们这里仍大致介绍一下导入方法。

.mcpack导入[编辑]

这个方法对国际版有效。

从manifest.json的层级以zip的形式压缩所有文件,并改后缀名为.mcpack,然后直接双击打开。如果你是Windows国际版用户,这个方法简单的不能再简单了;当然如果你是安卓用户,这是一个无法识别的后缀名,请将这个文件以文本-Minecraft打开,如果无法以这个方法打开,请尝试下面的方法。

这个方法有缺点——实时修改非常麻烦,且默认导入进全局。

文件夹导入[编辑]

这个方法对国际版有效。

安卓用户请注意:请将你的文件存储路径设置为外部!一旦你使用应用程序存储,所有地图文件,Addon文件等将需要通过Root才能更改!我们强烈建议你在外部存储你的文件,这也有利于你对你的地图进行设置。如果你有过多重要地图都存在了应用程序里,请使用第一种方法。

Android 11用户请注意:在1.18更新后,游戏文件目录被移到Android/data里,通过手机自带的文件管理器无法打开这个路径,你可能需要其他的文件管理器,例如ES文件管理器。

将整个BP文件夹复制(或剪切)粘贴到下面的目录,这将适用于全局:

平台类型 行为包路径
Android

(1.18前)

/storage/emulated/0/games/com.mojang/

development_behavior_packs(或behavior_packs)

Android

(1.18后)

/storage/emulated/0/Android/data/com.mojang.minecraftpe/files/games

/com.mojang/development_behavior_packs(或behavior_packs)

Windows C:\Users\<用户名>\AppData\Local\Packages\

Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\

games\com.mojang\development_behavior_packs(或behavior_packs)

或适用于单个地图:

平台类型 行为包路径
Android

(1.18前)

/storage/emulated/0/games/com.mojang/

minecraftWorlds/<对应地图>/behavior_packs

Android

(1.18后)

/storage/emulated/0/Android/data/com.mojang.minecraftpe/files/games

/com.mojang/minecraftWorlds/<对应地图>/behavior_packs

Windows C:\Users\<用户名>\AppData\Local\Packages\

Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\

games\com.mojang\minecraftWorlds\<对应地图>\behavior_packs

然后打开Minecraft,看看全局资源/地图资源是否有你的行为包,然后在地图设置里启用它。

强制导入[编辑]

这个方法对国际版和中国版有效。注意,中国版只能用这种方法,如果你是国际版用户,我强烈建议你用前两种方法,因为这种方法和第二种大同小异且工作更多;并且这个方法只用于单个地图的导入,不适用于全局资源。

首先用文件夹导入法将你的地图放进对应的文件夹里(是完整的走完这个流程)。对于中国版用户,路径如下:

平台类型 行为包路径
Android /storage/emulated/0/Android/data/com.netease.x19/files/minecraftWorlds
Windows C:\Users\<用户名>\AppData\Roaming\MinecraftPE_Netease\minecraftWorlds

如果你不是在官方下载而是在渠道服下载(比如手机的应用商店),则com.netease.x19改为com.netease.mc.(渠道服名)。

然后打开world_behavior_packs.json。这个文件展示的内容如下:

[
    {
        "pack_id" : "f2f4031c-be39-4d42-99ee-b6e8970e64bd",
        "version" : [ 1, 0, 0 ]
    }
]

将manifest.json里面的header-uuid粘贴到pack_id里面,header-version粘贴到version里面。这个过程实质上是文件夹导入法的启用Addon步骤,只不过是从文件层面上的强制启动。

中国版可能没有这个文件,你需要人为创建这个文件。

调试[编辑]

大功告成!试一下通过结构方块加载出你所导出的结构。如果它能够成功加载,就说明你成功了!以后还可以继续沿用这个方法导入导出结构。如果无法加载的话,则看看以下几点能否帮到你:

对于国际版用户:

  • 是否能够看到你的Addon?如果看不到说明manifest.json出现问题,请查看是否有语法错误或不支持的数值。如果能看到说明行为包内部出现问题,即structures文件夹。看看你的文件夹是否少了个s,或者文件夹里是否有文件,然后对应进行更改。

对于中国版用户:

  • 这可能会比较麻烦,因为无法确定究竟是什么环节出了问题。比较简单的方法是先用国际版导入一次,确定没有问题之后就不是行为包的问题而是world_behavior_pack.json出现了问题,确保version和pack_id都完全一致。没有国际版的话,首先判断manifest.json是否有问题,然后判断world_behavior_pack.json,最后判断structures文件夹。