编辑 Minecraft 基岩版存档

编辑 Minecraft 基岩版存档

时效性

这篇文章中的部分内容已经过时,请留意。

数据无价,谨慎操作

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

警告

该文章具有时效性与局限性!
时效性: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 月。

存档位置

win10 版

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

Android 版

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

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

对于存档在”应用程序“的,可尝试安装“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立即重生。
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最大值。限制了 Current 和 Base 的最大值。
Min最小值。限制了 Current 和 Base 的最小值。

自定义超平坦世界

即完全空白没有方块的世界,通常用于空岛生存等。
你可以通过 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_version、world_version 和 structure_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"
}

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

编辑背包

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

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

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

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

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

特殊属性

注意

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

结构如下:

详细:颜色

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

详细:烟火颜色

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

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

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

参考与引用

更多引用 Minecraft Wiki 未列出……