func (sub *SubChunk) RuntimeID(x, y, z byte, layer uint8) uint32 {
	if uint8(len(sub.storages)) <= layer {
		return sub.air
	}
	return sub.storages[layer].RuntimeID(x, y, z)
}
RuntimeID returns the runtime ID of the block located at the given X, Y and Z. X, Y and Z must be in a
range of 0-15.
package chunk
type SubChunk struct {
	air        uint32
	storages   []*BlockStorage
	blockLight [2048]uint8
	skyLight   [2048]uint8
}
func NewSubChunk(airRuntimeID uint32) *SubChunk {
	return &SubChunk{air: airRuntimeID}
}
func (sub *SubChunk) Layer(layer uint8) *BlockStorage {
	for i := uint8(len(sub.storages)); i <= layer; i++ {
		sub.addLayer()
	}
	return sub.storages[layer]
}
func (sub *SubChunk) addLayer() {
	sub.storages = append(sub.storages, newBlockStorage(make([]uint32, 128), newPalette(1, []uint32{sub.air})))
}
func (sub *SubChunk) Layers() []*BlockStorage {
	return sub.storages
}