diff --git a/level/palette.go b/level/palette.go index 70aa1f5..cfca51a 100644 --- a/level/palette.go +++ b/level/palette.go @@ -1,12 +1,12 @@ package level import ( + //"fmt" + "github.com/Tnze/go-mc/level/block" + pk "github.com/Tnze/go-mc/net/packet" "io" "math/bits" "strconv" - - "github.com/Tnze/go-mc/level/block" - pk "github.com/Tnze/go-mc/net/packet" ) type State interface { @@ -109,7 +109,7 @@ func (p *PaletteContainer[T]) Set(i int, v T) { bits: vv, config: p.config, palette: p.config.create(vv), - data: NewBitStorage(vv, oldLen+1, nil), + data: NewBitStorage(p.config.bits(vv), oldLen+1, nil), } // copy for i := 0; i < oldLen; i++ { @@ -177,7 +177,7 @@ func (s statesCfg) bits(bits int) int { case 5, 6, 7, 8: return bits default: - return bits + return block.BitsPerBlock } } diff --git a/level/palette_test.go b/level/palette_test.go new file mode 100644 index 0000000..501a6fe --- /dev/null +++ b/level/palette_test.go @@ -0,0 +1,18 @@ +package level + +import ( + "testing" +) + +func TestPaletteResize(t *testing.T) { + container := NewStatesPaletteContainer(16*16*16, 0) + + for i := 0; i < 4096; i++ { + container.Set(i, BlocksState(i)) + } + for i := 0; i < 4096; i++ { + if container.Get(i) != BlocksState(i) { + t.Errorf("Get Error, got: %v,but expect: %v", container.Get(i), BlocksState(i)) + } + } +}