如何读取 Minecraft mca 文件?

1 python python-3.x minecraft

我正在尝试在 python3 中读取 mca 文件,但是当出现问题时,Mca 文件不是 base64 和 gzip,因为使用 nbt 库不起作用,并且在您说之前:anvil-parser 库存在问题:

  Traceback (most recent call last):
  File "/Applications/nbt-editor/nbt-editor.py", line 141, in main
  chunk = anvil.Chunk.from_region(region, 19, 22)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/anvil/chunk.py", line 382, in from_region
return cls(nbt_data)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/anvil/chunk.py", line 55, in __init__
self.data = nbt_data['Level']
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/nbt/nbt.py", line 543, in __getitem__
raise KeyError("Tag %s does not exist" % key)
KeyError: 'Tag Level does not exist'
Run Code Online (Sandbox Code Playgroud)

anvil-parser 模块也将其吐出,而不是脚本

小智 6

从格式 1.16 或更高版本打开世界时,使用 pip 安装的 anvil-parser 库会中断,我从Damiaan的评论中得到了答案:

世界MC是1.18版本吗?看起来 anvilParser 这个版本有一些问题:https://github.com/matcool/anvil-parser/issues/36

解决方案是使用不同的解析器分支:https://github.com/0xTiger/anvil-parser

编辑:普通版本在 1.16+ 上中断

这个评论很有帮助,因为我知道有关 anvil-parser 的问题并且我知道正确的版本。因此,如果您想编辑 1.16 之前的世界,请使用 pip 安装 anvil-parser,但如果您想编辑 1.16 及以上的世界,请从 GitHub 安装 anvil-parser:https: //github.com/0xTiger/anvil-parser