Constants

基本信息

属性 值
类名 com.gtnewhorizons.neid.Constants
角色 NEID 全部硬编码上限的唯一定义点(vanilla vs NEID 数值并列)
调用方 所有 Mixin / ASM transformer / Hooks 通过静态字段引用

方块 ID 上限

常量 值 说明
BITS_PER_ID 16 NEID 方块 ID 总位数(short 容器)
VANILLA_BITS_PER_ID 12 原版方块 ID 总位数
MAX_BLOCK_ID 32767 NEID 实际可用最大方块 ID((1 << (BITS_PER_ID - 1)) - 1,1 位预留给符号)
VANILLA_MAX_BLOCK_ID 4095 原版最大方块 ID
BLOCK_ID_MASK 0xFFFF NEID 方块 ID 位掩码(16 位)
VANILLA_BLOCK_ID_MASK 4095 原版方块 ID 位掩码

Metadata 上限

常量 值 说明
BITS_PER_METADATA 16 NEID Metadata 总位数
VANILLA_BITS_PER_METADATA 4 原版 Metadata 总位数
METADATA_COUNT 65536 NEID Metadata 数量 (1 << 16)
VANILLA_METADATA_COUNT 16 原版 Metadata 数量
METADATA_MASK 0xFFFF NEID Metadata 位掩码

区块 / EBS 字节尺寸

常量 值 说明
BLOCKS_PER_EBS 4096 一个 ExtendedBlockStorage 容纳的方块数(与原版相同)
BYTES_PER_EBS 20480 NEID 单 EBS 总字节 (16 LSB + 0 MSB + 16 meta + 4 sky + 4 block)
VANILLA_BYTES_PER_EBS 12288 原版单 EBS 总字节 (8 + 4 + 4 + 4 + 4)
BYTES_PER_CHUNK 327936 NEID 单区块总字节 (16 * 20480 + 256 biome)
VANILLA_BYTES_PER_CHUNK 196864 原版单区块总字节 (16 * 12288 + 256)
BYTES_PER_EBS_MINUS_LIGHTING_BUT_INCLUDE_MSB 18432 NEID S26PacketMapChunkBulk 用的 EBS 字节 (16 + 0.5 + 16 = 32.5 bits/block × 4096),含 MSB padding
VANILLA_BYTES_PER_EBS_MINUS_LIGHTING_BUT_INCLUDE_MSB 8192 原版 S26PacketMapChunkBulk 用的 EBS 字节

DataWatcher 上限

常量 值 说明
MAX_DATA_WATCHER_ID 127 NEID DataWatcher 索引上限(启用 ExtendDataWatcher 后生效,vanilla 为 31)

关键设计:1 位预留给符号

MAX_BLOCK_ID = (1 << (BITS_PER_ID - 1)) - 1 = 32767:尽管容器是 short(16 位),由于 short 是有符号类型,理论最高 32767。vanilla 不预留是因为它的 BLOCK_ID_MASK 直接是 4095;NEID 的 BLOCK_ID_MASK = 0xFFFF = 65535(用于位运算),但实际写入短变量时被符号位约束到 32767。

跨条目引用