编辑 Minecraft 基岩版存档

2021 年 十月 2 日 星期六 15 点 38 分
教程

文章未完成,持续更新中……

数据无价,谨慎操作!!

正式操作前请备份好存档!
若出现存档损坏需自行承担!

该文章具有时效性与局限性!
时效性:Minecraft Bedrock 正式版 1.19.20(版本:10811071 Branch:r/19_u2)
局限性:Minecraft for Windows 10

此教程仅限基岩版正式版 1.17.30,测试版及其他版本可能存在差异。

出现问题要善用搜索引擎,并学会自己创造出解决问题的方法。
这篇教程如果有错误欢迎在评论区指出。

为什么写这篇文章(不重要)

在 2019 年我介绍了一款“我的世界编辑器”,虽然 B 站上还有不少介绍怎么编辑存档的,但目前还没看到什么特别详细的教程。
对于这个软件,我一直在期待着什么时候出中文版,我曾经有想过手动去汉化,但无奈本人能力有限,而且这款软件也没有开源,汉化什么的基本就别想了,到 2021 年 10 月 02 号为止还没有汉化或第三方的汉化版。

在我的视频的评论区里,也有不少观众有关于修改存档的问题。关于这些问题,也一并整理到这篇文章当中。

2022 年 8 月更新

因为地图和存档的编辑需要使用不同的软件,所以这篇文章主要介绍 NBT 的编辑。
由于个人精力有限,不再逐个说明各个标签及其参数的作用,以实现实际的需求的方法来介绍。

一些编辑器的简单介绍

以下内容截止自 2022 年 8 月。

  • NBTExplorer
    • 自 2017 年开始停更到现在。
  • MCC ToolChest PE
    • 状态不明,官网不能正常打开,似乎自 2020 年 9 月起停更。
    • 我找到的版本太老(2018),以下是编辑最新基岩版存档时的结果。
    • 背包编辑等功能不正常,当背包中第二行及第四行(即物品栏)存在物品时,编辑器报错且不能正常编辑,编辑器中第四行(即物品栏)对应游戏中背包第一行,编辑器第三行对应游戏中背包第三行。
    • nbt 编辑正常,但不确定是否存在隐患。
    • 区块查看和编辑不可用。
    • 自定义超平坦可用,但存在问题。
    • 自“洞穴与山崖”更新后,y 轴最低变为 - 64,使用超平坦自定义后,新的区块会在 y = 0 处生成。
  • Universal Minecraft Editor
    • 该软件已停止更新。
    • 同作者的另一软件 Universal Minecraft Converter 仍在更新,这是一款付费的存档转换软件,支持多个平台的 Minecraft。
    • 2021 年 10 月该作者公布了正在开发的新软件 Universal Minecraft Tool,集成了 NBT 编辑和存档转换,暂无更多信息,详见
    • 大部分功能仍然可用。
    • 区块编辑功能不能编辑 1.16 及之后版本的存档。
  • Amulet Map Editor
    • 十分活跃的开源项目。
    • 可编辑基岩版新版存档的区块。
    • 不支持编辑 NBT。
  • Blocktopograph
    • 一个安卓上的编辑器。
    • 自 2017 年停更,原作者已弃坑。
    • 汉化版地址:https://github.com/oO0oO0oO0o0o00/blocktopograph
    • 鲜有活跃,上次活跃于 2021 年 12 月。
    • 上次发布版本于 2020 年 7 月。
    • 不支持编辑最新版地图。
    • 可编辑 NBT。

存档位置

win10 版

正式版存档位置(复制到文件资源管理器地址栏然后按下回车):%appdata%\..\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\minecraftWorlds\
Preview 版存档位置取决于安装位置。

Android 版

Android 版存档位置取决游戏内设置和游戏版本.

文件存储位置设置为“外部”时:

  • 1.18 之前:/games/com.mojang/minecraftWorlds/
  • 1.18 及之后:/Android/data/com.mojang.minecraftpe/files/games/com.mojang/minecraftWorlds/

对于存档在”应用程序“的,可尝试安装“World Export on Mobile”,添加导出按钮然后导出存档:

如果设备有 root 权限,则在:/data/data/com.mojang.minecraftpe/files/games/com.mojang/minecraftWorlds/

NBT 及其结构的简单说明

Tag 类型名称说明
Byte Tag字节整形标签存储整数;大小:1 字节;范围:-128 ~ 127
Short Tag短整型标签存储整数;大小:2字节;范围:-32768 ~ 32767
Int Tag整型标签存储整数;大小:4字节;范围:-2147483648 ~ 2147483647
Long Tag长整型标签存储整数;大小:1 字节;范围:-2147483648~2147483647
Float Tag单浮点型标签存储小数;大小:4字节;范围:-3.4E+38 ~ 3.4E+38
Double Tag双浮点型标签存储小数;大小:8字节;范围:-1.7E-308~1.7E+308
Byte Array Tag字节整形数组标签存储一组整数;大小:1×n字节;范围:-128 ~ 127
Int Array Tag整型数组标签存储一组整数;大小:2×n字节;范围:-32768 ~ 32767
String Tag字符串型标签存储字符串
List Tag列表型标签存储一个列表
Compound Tag复合标签存储各种标签(可理解为文件夹)

实例操作

由于其他编辑器弃坑依旧或官网不可访问,导致不易下载,以下均使用 Universal Minecraft Editor 来编辑存档。
关于如何使用编辑器,此处暂不做具体说明。

基本世界设置

打开地图后,点击左侧“World Settings”,右侧将展示所有世界设置。
部分设置如下(已验证)。标记 * 的表示:0 为关闭,1 为开启。标记 A 表示通过修改器修改不会导致不能获得成就。

名称说明
LevelNameA世界名称。
RandomSeedA种子。
DifficultyA游戏难度。0:和平,1:简单,2:普通,3:困难。
GameType默认游戏模式。0:生存,1:创造,2:冒险。
commandsEnabled*激活作弊。
pvp*A误伤。
showcoordinates*A显示坐标。
falldamage*A摔落伤害。
firedamage*A燃烧伤害。包括火、岩浆、炼药锅里的岩浆、岩浆块、恶魂的火球。
但是,通过发射器发射出的火焰弹在击中玩家时仍造成伤害,击中后产生的火焰对玩家不造成伤害。
drowningdamage*A溺水伤害。
freezedamage*A细雪伤害。
dofiretick*A火焰蔓延。
tntexplodes*ATNT 爆炸。
respawnblocksexplode*A重生方块爆炸。
domobloot*A生物战利品。
naturalregeneration*A自然生命恢复。
dotiledrops*A方块掉落。
doimmediaterespawn*A立即重生。
falldamage*终为百日。
dodaylightcycle*A开启昼夜循环。
keepinventory*A死亡不掉落。通过编辑器修改不影响获得成就。
domobspawning*A生物生成。
mobgriefing*生物破坏。
doentitydrops*A实体掉落战利品。
doweathercycle*A天气更替。
commandblocksenabled*A命令方块已开启。
randomtickspeedA随机速度刻。
TimeA时间。请参考 命令/time - Minecraft Wiki
GeneratorA世界类型。0:有限,1:无限,2:超平坦。
FlatWorldLayersA超平坦世界图层。

基本玩家设置

打开地图后,点击左侧“Player”,双击选中一个玩家来修改。本地游玩的玩家显示为“~local_player”,多人游玩的玩家显示为该玩家的 uuid。
部分设置如下(已验证)。修改这些数值不会导致不能获得成就。

名称说明
playerPermissionsLevel权限。0:访客,1:成员,2:操作员。
PlayerGameMode个人游戏模式。0:生存,1:创造,2:冒险,3:类生存(设置中不显示模式),4:与 3 相同,5:默认。
PlayerLevel等级。
PlayerLevelProgress等级进度。0~1,当超过 1 游戏会修正为 1,当低于 0 游戏会修正为 0。
Pos位置。这是一个列表,其中三个数值分别对应 X Y Z。
Rotation朝向。
第一个值为左右朝向,部分角度,0:南,90:西,180:北,-90:东。
第二个值为上下朝向,部分角度,90:朝下,0:朝前,-90:朝上。
SpawnX出生点 X 值。
SpawnY出生点 Y 值。
SpawnZ出生点 Z 值。

详细玩家权限

这些权限储存在玩家的 abilities Compound Tag 中。
部分设置如下(已验证)。标记 * 的表示:0 为关闭,1 为开启。修改这些数值不会导致不能获得成就。

名称说明
attackmobs*攻击生物。
attackplayers*攻击玩家。
build*建造。
doorsandswitches*使用门和开关。
mine*挖掘。
op*管理员权限。
opencontainers*打开容器。
teleport*传送。
flySpeed飞行速度。
walkSpeed行走速度。

玩家属性

这些属性储存在玩家的 Attributes Compound Tag 中,每个属性又用一个 Compound Tag 储存,其中的 name 指定了属性类型。
部分设置如下(已验证)。下表中的“名称”即为 name。修改这些数值不会导致不能获得成就。

名称说明
minecraft:luck幸运。请参考 幸运 - Minecraft Wiki
minecraft:health生命。
minecraft:absorption抗性。(在我的测试中,无论设置为任何值都会被游戏修改为 0)
minecraft:knockback_resistance击退抗性。(设置为 2 时约等于没有击退)
minecraft:movement速度。
minecraft:underwater_movement水下速度。
minecraft:lava_movement岩浆中速度。
minecraft:follow_range追踪范围。
minecraft:attack_damage攻击伤害。(在我的测试中,无论设置为任何值都会被游戏修改为 1)
minecraft:player.hunger饥饿。
minecraft:player.exhaustion体力。
minecraft:player.saturation饱和。
minecraft:player.level等级。
minecraft:player.experience经验。

另外,这些 Compound Tag 都有相同类型的标签,它们的意义如下。

名称说明
Base基础值。
Current当前值。
DefaultMax默认最大值。
DefaultMin默认最小值。
Max最大值。限制了 CurrentBase 的最大值。
Min最小值。限制了 CurrentBase 的最小值。

自定义超平坦世界

即完全空白没有方块的世界,通常用于空岛生存等。
你可以通过 MCC ToolChest PE 来编辑,当然,手动修改也并不困难。
只需要修改 “World Settings” 中的 FlatWorldLayers 就可以做到。
FlatWorldLayers 记录的是一个字符串,而这是一个 JSON 格式的字符串,默认值如下。

json
{
"biome_id": 1,
"block_layers": [
{
"block_name": "minecraft:bedrock",
"count": 1
},
{
"block_name": "minecraft:dirt",
"count": 2
},
{
"block_name": "minecraft:grass",
"count": 1
}
],
"encoding_version": 6,
"structure_options": null,
"world_version": "version.post_1_18"
}

为了确保修改后能影响到每个区块,创建世界时选择“超平坦”类型的世界,关闭“生物生成”,然后创建世界。创建完毕进入世界后立即保存并退出到主菜单。然后再使用编辑器修改。

FlatWorldLayers

目前暂时不清楚 encoding_versionworld_versionstructure_options 的作用。

biome_id

很明显的是,这个值指定了一个生物群系 ID,你可以在 Wiki 中找到对应的 ID 并修改。注意生物群系 ID 分为 Java 版和基岩版,请使用基岩版的生物群系 ID。

block_layers

block_layers 数组指定了生成的层。生成时从最低可用的坐标开始,从数组中的第 0 个开始(在各种编程语言中数组的第 0 个即代表我们所认为的第一个)。
block_name 即方块的“命名空间 ID”,你可以在 Minecraft Wiki 中找到各个方块对应的“命名空间 ID”。
count 即生成层数。
在上方的默认值中,block_layers 数组的第 0 个的 block_name 指向“基岩”,count 为 1,因此生成一层基岩。然后第 1 个的 block_name 指向“泥土”,count 为 2,在前面的基础上加上两层泥土。以此类推。

虚空世界

如果你只是想要一个虚空地图,那么在创建世界时选择超平坦,进入游戏后立即保存并退出。
然后修改 FlatWorldLayers 的值为:

json
{
"biome_id": 1,
"block_layers": [
{
"block_name": "minecraft:air",
"count": 1
}
],
"encoding_version": 6,
"structure_options": null,
"world_version": "version.post_1_18"
}

另外,创建世界前关闭“生物生成”,防止保存太多个区块。保存的区块不多的话,修改为虚空后就不用清理太多的区块了。运气好一个区块都不会保存,进入游戏后就是完全的一片虚空。

编辑背包

一个玩家共有三个储存物品的位置。即 ArmorInventoryEnderChestInventory,分别对应“装备栏”、“背包”和“末影箱”。

其中,Armor 数列中四个 Compound Tag 按顺序对应了装备栏的四个槽位。EnderChestInventory 也是按顺序一一对应末影箱中的每个格子。而 Inventory 的顺序比较特殊,前九个按顺序一一对应快捷物品栏的每个格子,后 27 个按顺序一一对应背包的每个格子。

每个 Compound Tag 拥有的部分属性如下表(已验证)。标记 * 的表示:0 为关闭,1 为开启。修改这些数值不会导致不能获得成就。

名称说明
Count数量。
Slot槽位。仅 InventoryEnderChestInventory 中有此属性,请不要随意更改。
WasPickedUp*是否被捡起过。
Name物品 命名空间 ID。
Damage物品属性

其中,可以在 Minecraft Wiki 中找到各个物品对应的“命名空间 ID”。
部分物品有特殊属性,详见 Minecraft Wiki。

特殊属性

  • 可能找不到部分属性,可以手动创建,请参考 Wiki 确保格式正确。
  • 下方列表仅提供经过测试且可用的属性。
  • Wiki 中记录的部分属性,未能测试出其效果,故不在该列表中展示。

结构如下:

  • CanDestroy 冒险模式下该物品能破坏的方块(这是一个数组类型,其中用字符串类型储存方块 命名空间 ID)
  • CanPlaceOn 冒险模式下该方块能摆在什么方块上(这是一个数组类型,其中用字符串类型储存方块 命名空间 ID)
  • tag
    • Damage 耐久度(数值越大耐久越低)
    • RepairCost 修复花费(数值越大,在铁砧中附魔、修复、重命名所需的经验就越多)
    • minecraft:keep_on_death 为 1 时在死后不掉落
    • display
    • Name 名称
    • Lore 物品的描述(这是一个数组类型,其中用字符串类型储存描述)
    • ench 附魔
    • 数组中的 Compound
    • id 附魔 ID
    • lvl 附魔等级
    • customColor 皮革套装、皮革马铠、烟火之星的颜色(
    • chargedItem 弩填装的物品(与普通的物品结构相同)
    • map_uuid 地图的 ID
    • Type 旗帜种类(0:普通旗帜,1:灾厄旗帜)
    • FireworksItem 烟火之星的属性
    • FireworkFlicker 为 1 时有闪烁效果
    • FireworkTrail 为 1 时有轨迹效果
    • FireworkType 爆炸形状(0:小型爆炸,1为大型爆炸,2:星型爆炸,3:苦力怕型爆炸,4:炸裂效果)
    • FireworkColor 颜色(
    • FireworkFade 渐变(
    • Fireworks
    • Explosions 烟火之星,数组内 Compound Tag 属性均与 FireworksItem 相同
    • Flight 飞行时间
    • trackingHandle 磁石指南针指向的磁石 ID
    • pages 成书的分页
    • 数组中的 Compound
    • text 分页的内容
    • generation 书的品质(0:原著,1:副本,2:副本的副本,3:破烂不堪)
    • author 书的作者
    • title 书的标题
    • xuid 书的 ID
    • Items 潜影盒的物品列表(与普通的物品结构相同)
    • 当桶装鱼或美西螈时,存储了实体的属性
  • Block 方块的属性
    • states 状态
    • color 玻璃、羊毛、羊毛地毯、陶瓦、混凝土粉末、混凝土的颜色
    • name 方块的 命名空间 ID

详细:颜色

该值为自定义的颜色取反色,将反色后的 HEX 转换为 10 进制,乘以 -1。
如:$# B02E25\dfrac{取反色}{} ># 4FD1DA\dfrac{转 10 进制}{} >5231066\dfrac{\times -1}{} >-5231066$
其中,#B02E25 是想要的颜色,-5231066 是储存进 customColor 的值。

详细:烟火颜色

该值与颜色一一对应,见下表。

颜色
00黑色
01红色
02绿色
03棕色
04蓝色
05紫色
06青色
07淡灰色
08灰色
08灰色
0a黄绿色
0b黄色
0c淡蓝色
0d品红色
0e橙色
0f白色

10 之后的未作详细测试,根据随机抽取测试得出:从 10ff 都会显示为“自定义”,且颜色均为紫色。

Q&A

文章未完成,持续更新中……

参考与引用

  • 更多引用 Minecraft Wiki 未列出……