You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将Minecraft基岩版mcstructure文件转换为字典

基岩版.mcstructure文件转Python字典解决方案

错误原因说明

基岩版.mcstructure采用未压缩小端序NBT存储,你之前使用的nbt/nbtlib/Python-nbt三个库默认适配Java版大端序gzip压缩NBT,参数不匹配才会出现gzip报错、读取乱码的问题。

可行实现方案

1. 依赖安装

选用专门适配基岩版NBT格式的amulet-nbt库,执行安装命令:
pip install amulet-nbt

2. 转换代码示例

import amulet_nbt

def mcstructure_to_dict(file_path: str) -> dict:
    # 加载基岩版未压缩小端NBT文件
    nbt_object = amulet_nbt.load(
        file_path,
        little_endian=True,
        compressed=False
    )
    
    # 递归转换NBT对象为Python原生数据类型
    def parse_nbt(nbt_item):
        if isinstance(nbt_item, amulet_nbt.Compound):
            return {key: parse_nbt(value) for key, value in nbt_item.items()}
        elif isinstance(nbt_item, amulet_nbt.List):
            return [parse_nbt(item) for item in nbt_item]
        elif isinstance(nbt_item, (amulet_nbt.Byte, amulet_nbt.Short, amulet_nbt.Int, amulet_nbt.Long, amulet_nbt.Float, amulet_nbt.Double)):
            return nbt_item.value
        elif isinstance(nbt_item, amulet_nbt.String):
            return str(nbt_item)
        elif isinstance(nbt_item, (amulet_nbt.ByteArray, amulet_nbt.IntArray, amulet_nbt.LongArray)):
            return list(nbt_item.value)
        else:
            return nbt_item
    
    return parse_nbt(nbt_object)

3. 后续使用说明

  • 若读取的是特殊压缩过的.mcstructure文件,将compressed参数改为True即可
  • 转换后的Python字典完全匹配基岩版结构数据规范,可直接遍历其中的方块调色板和方块索引字段统计各材料数量,实现材料清单生成功能

内容的提问来源于stack exchange,提问作者DaNubCoding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 08:54:04