lan*_*cew 11 javascript decoding minecraft
我解析一个schematic file具有以下结构
该.schematic文件格式是由社区创建到存储的Minecraft世界的部分与第三方程序使用。原理图为NBT格式
该命名二进制变量(NBT)文件格式是使用的游戏的Minecraft为各种事情非常简单的结构化的二进制格式
块Data Value小号定义的Minecraft地形的部分。
我检索了block data每个Minecraft块,并需要弄清楚如何解码这些字节。这是《我的世界》Stairs方块的一个例子
例如,阶梯块数据包括:
我可以使用nbt-js解析整个原理图文件,这使我可以像这样访问块数据:
var b = schem.value.Data.value[index];
Run Code Online (Sandbox Code Playgroud)
我使用以下代码解码楼梯块数据位数据
var facing = b & 0x03;
var half = (b >> 2) & 0x01;
var shape = (b >> 3) & 0x03;
Run Code Online (Sandbox Code Playgroud)
这些配置值对于确定应如何渲染楼梯楼梯至关重要。例如,我使用面值旋转块:
block.rotateX(facing);
Run Code Online (Sandbox Code Playgroud)
但是,对于每种块类型,位的解释都不同,这在我能找到的任何地方都没有定义。
而且您只需要处理它
这就是为什么 1.13和The Flattening会完全删除元数据,从而在序列化时完全将所有块状态编码为字符串的原因(NBT是一种序列化的数据格式,几乎在到达Anvil格式之前用于所有内容)。在运行时,将解析这些状态并将其转换为真实Object实例,从而无需使用魔术值。
这样您就不必弄清楚facing = b & 0x03;自己会得到{"facing":"east"}
不幸的是,如果您在1.13以下工作,则必须处理元数据魔术值,并且没有解决方案,除非您对游戏具有运行时访问权限并可以调用getStateFromMeta()(1.10至1.12;不确定1.8和1.9位于何处,因为我从来没有修改为这些版本)。
| 归档时间: |
|
| 查看次数: |
594 次 |
| 最近记录: |