gpt4 book ai didi

javascript - 如何解码 Minecraft 原理图 (nbt) 文件中的数据(即 block 状态)字节?

转载 作者:可可西里 更新时间:2023-11-01 02:25:52 26 4
gpt4 key购买 nike

我正在用 following structure 解析一个原理图文件

The .schematic file format was created by the community to store sections of a Minecraft world for use with third-party programs. Schematics are in NBT format

The Named Binary Tag (NBT) file format is an extremely simple structured binary format used by the Minecraft game for a variety of things

block Data Values在 Minecraft 中定义部分地形。

我正在检索 the block data每个 Minecraft 方 block ,并且需要弄清楚如何解码这些字节。这是 an example for the Stairs Minecraft Block

例如the stairs block data包括:

enter image description here

我可以使用 nbt-js解析整个原理图文件,这使我能够像这样访问 block 数据:

var b = schem.value.Data.value[index];

我用下面的代码解码Stairs Block Data位数据

var facing = b & 0x03;
var half = (b >> 2) & 0x01;
var shape = (b >> 3) & 0x03;

这些配置值对于确定楼梯 block 的渲染方式至关重要。例如,我使用面向值来旋转 block :

block.rotateX(facing);

但是,对于每种 block 类型,这些位的解释都不同,而且我找不到任何地方都没有定义。

最佳答案

不存在适用于所有 block 的映射

你只需要处理它

这就是 1.13 和扁平化完全删除元数据导致所有 block 状态在序列化时编码为字符串的全部原因(NBT 是一种序列化数据格式,在到达之前几乎用于所有内容) Anvil 格式)。在运行时,这些状态被解析并转化为真正的 Object 实例,避免了对魔法值的需要。

所以你不必计算出 facing = b & 0x03; 你会得到 {"facing":"east"}

不幸的是,如果您在 1.13 以下工作,您将不得不处理元数据魔术值,除非您具有游戏的运行时访问权限并且可以调用 getStateFromMeta()(1.10通过 1.12;不确定 1.8 和 1.9 在哪里,因为我从未为这些版本修改过)。

关于javascript - 如何解码 Minecraft 原理图 (nbt) 文件中的数据(即 block 状态)字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55816768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com