From 6e597fe4f83f58a0b3fc8d528cd14bb06beba7e3 Mon Sep 17 00:00:00 2001 From: patyhank Date: Sun, 20 Nov 2022 21:16:53 +0800 Subject: [PATCH 1/3] Try to fix palette resizing --- level/palette.go | 10 +++++----- level/palette_test.go | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 level/palette_test.go 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)) + } + } +} From 2e100cdb11bc2e647b759b17ff9aaeef90310b2a Mon Sep 17 00:00:00 2001 From: patyhank Date: Sun, 20 Nov 2022 21:19:47 +0800 Subject: [PATCH 2/3] remove import comment --- level/palette.go | 1 - 1 file changed, 1 deletion(-) diff --git a/level/palette.go b/level/palette.go index cfca51a..d7d0c80 100644 --- a/level/palette.go +++ b/level/palette.go @@ -1,7 +1,6 @@ package level import ( - //"fmt" "github.com/Tnze/go-mc/level/block" pk "github.com/Tnze/go-mc/net/packet" "io" From 096cd8cf381ecf61b0df19e83fcf26de910e8f29 Mon Sep 17 00:00:00 2001 From: Tnze Date: Sun, 20 Nov 2022 22:28:20 +0800 Subject: [PATCH 3/3] fix bugs --- level/palette.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/level/palette.go b/level/palette.go index d7d0c80..516c467 100644 --- a/level/palette.go +++ b/level/palette.go @@ -108,7 +108,7 @@ func (p *PaletteContainer[T]) Set(i int, v T) { bits: vv, config: p.config, palette: p.config.create(vv), - data: NewBitStorage(p.config.bits(vv), oldLen+1, nil), + data: NewBitStorage(p.config.bits(vv), oldLen, nil), } // copy for i := 0; i < oldLen; i++ { @@ -123,7 +123,7 @@ func (p *PaletteContainer[T]) Set(i int, v T) { if vv, ok := newPalette.palette.id(v); !ok { panic("not reachable") } else { - newPalette.data.Set(oldLen, vv) + newPalette.data.Set(i, vv) } *p = newPalette }