Fix bugs to load chunks
This commit is contained in:
@ -120,7 +120,7 @@ func ChunkFromSave(c *save.Chunk, secs int) *Chunk {
|
||||
}
|
||||
}
|
||||
|
||||
biomesData := *(*[]uint64)((unsafe.Pointer)(&v.BlockStates.Data))
|
||||
biomesData := *(*[]uint64)((unsafe.Pointer)(&v.Biomes.Data))
|
||||
biomesPalette := v.Biomes.Palette
|
||||
biomesRawPalette := make([]int, len(biomesPalette))
|
||||
for i, v := range biomesPalette {
|
||||
@ -130,7 +130,7 @@ func ChunkFromSave(c *save.Chunk, secs int) *Chunk {
|
||||
i := int32(int8(v.Y)) - c.YPos
|
||||
sections[i].blockCount = blockCount
|
||||
sections[i].States = NewStatesPaletteContainerWithData(16*16*16, stateData, stateRawPalette)
|
||||
sections[i].Biomes = NewBiomesPaletteContainerWithData(16*16*16*2, biomesData, biomesRawPalette)
|
||||
sections[i].Biomes = NewBiomesPaletteContainerWithData(4*4*4, biomesData, biomesRawPalette)
|
||||
}
|
||||
for i := range sections {
|
||||
if sections[i].States == nil {
|
||||
|
@ -28,16 +28,20 @@ func NewStatesPaletteContainer(length int, defaultValue state) *PaletteContainer
|
||||
|
||||
func NewStatesPaletteContainerWithData(length int, data []uint64, pat []int) *PaletteContainer {
|
||||
var p palette
|
||||
var n int
|
||||
if len(pat) == 1 {
|
||||
n := bits.Len(uint(len(pat) - 1))
|
||||
switch n {
|
||||
case 0:
|
||||
p = &singleValuePalette{pat[0]}
|
||||
n = 0
|
||||
} else {
|
||||
n = statesCfg{}.bits(bits.Len(uint(len(pat))))
|
||||
case 1, 2, 3, 4:
|
||||
n = 4
|
||||
fallthrough
|
||||
case 5, 6, 7, 8:
|
||||
p = &linearPalette{
|
||||
values: pat,
|
||||
bits: n,
|
||||
}
|
||||
default:
|
||||
p = &globalPalette{}
|
||||
}
|
||||
return &PaletteContainer{
|
||||
bits: n,
|
||||
@ -58,16 +62,17 @@ func NewBiomesPaletteContainer(length int, defaultValue state) *PaletteContainer
|
||||
|
||||
func NewBiomesPaletteContainerWithData(length int, data []uint64, pat []int) *PaletteContainer {
|
||||
var p palette
|
||||
var n int
|
||||
if len(pat) == 1 {
|
||||
n := bits.Len(uint(len(pat) - 1))
|
||||
switch n {
|
||||
case 0:
|
||||
p = &singleValuePalette{pat[0]}
|
||||
n = 0
|
||||
} else {
|
||||
n = biomesCfg{}.bits(bits.Len(uint(len(pat))))
|
||||
case 1, 2, 3:
|
||||
p = &linearPalette{
|
||||
values: pat,
|
||||
bits: n,
|
||||
}
|
||||
default:
|
||||
p = &globalPalette{}
|
||||
}
|
||||
return &PaletteContainer{
|
||||
bits: n,
|
||||
|
Reference in New Issue
Block a user