pocketmine / bedrock-item-upgrade-schema
用于升级在较老版本的Minecraft: Bedrock世界存档中找到的物品的JSON模式
1.12.0
2024-09-11 19:48 UTC
README
用于升级在较老版本的Minecraft: Bedrock世界存档中找到的物品的JSON模式
背景
与方块一样,Bedrock不会自动升级物品(例如在物品栏、物品框架、掉落物品等)除非它们所在的块被加载并保存。
这意味着任何想要支持所有Minecraft: Bedrock世界的程序都需要知道如何升级这些旧数据。
存储库内容
id_meta_upgrade_schema
子目录包含一系列用于逐个版本升级的JSON模式列表。item_legacy_id_map.json
包含旧版数字ID与其字符串ID对应关系的映射(最高到1.16,尽管自1.5以来在vanilla世界存档中没有使用数字ID)1.12.0_item_id_to_block_id_map.json
包含物品ID到对应方块ID的映射,适用于所有方块物品。
推荐用于反序列化旧数据的方法
由于缺乏版本控制,物品处理比方块麻烦得多。这意味着我们只能猜测实际版本或始终应用所有升级器。
经典物品(MCPE <= 1.5, PM <= 1.12)
- 以整型ID + meta开始
- 通过
item_id_map.json
将1.16字符串ID转换为字符串ID + meta - 以中世纪物品反序列化
中世纪物品(MCPE 1.6 - 1.8)
- 以字符串ID + meta开始
- 如果在
1.12.0_item_id_to_block_id_map.json
中找到ID,则反序列化为方块物品;否则作为普通物品
非方块物品
- 以现代物品反序列化
方块物品
- 通过
1.12.0_item_id_to_block_id_map.json
将字符串方块ID转换为字符串方块ID + meta - 使用 BedrockBlockUpgradeSchema 数据转换为blockstate -> blockstate NBT
- 将blockstate NBT反序列化为方块
现代物品(MCPE 1.9 - 现今)
- 以字符串ID + meta / blockstate NBT开始
- 如果找到blockstate NBT,则将其反序列化为方块物品;否则作为普通物品
非方块物品
- 当前字符串ID通过
id_meta_upgrade_schema/
子目录中提供的模式进行转换 -> 当前字符串ID + meta
方块物品
- 将blockstate NBT反序列化为方块(可能需要 BedrockBlockUpgradeSchema 进行升级)