diff --git a/examples/frameworkServer/main.go b/examples/frameworkServer/main.go index 7123897..72a0131 100644 --- a/examples/frameworkServer/main.go +++ b/examples/frameworkServer/main.go @@ -32,7 +32,7 @@ func main() { s := server.Server{ ListPingHandler: serverInfo, LoginHandler: &server.MojangLoginHandler{ - OnlineMode: true, + OnlineMode: false, Threshold: 256, }, GamePlay: &server.Game{ diff --git a/save/chunk.go b/save/chunk.go index 46356a6..a1f4256 100644 --- a/save/chunk.go +++ b/save/chunk.go @@ -11,42 +11,36 @@ import ( // Column is 16* chunk type Column struct { - DataVersion int - Level struct { - Heightmaps map[string][]int64 - Structures struct { - References map[string][]int64 - Starts map[string]struct { - ID string `nbt:"id"` - } - } - // Entities - // LiquidTicks - // PostProcessing - Sections []Chunk - // TileEntities - // TileTicks - InhabitedTime int64 - IsLightOn byte `nbt:"isLightOn"` - LastUpdate int64 - Status string - PosX int32 `nbt:"xPos"` - PosZ int32 `nbt:"zPos"` - Biomes []int32 + DataVersion int32 + XPos int32 `nbt:"xPos"` + YPos int32 `nbt:"yPos"` + ZPos int32 `nbt:"zPos"` + BlockEntities nbt.RawMessage `nbt:"block_entities"` + Structures nbt.RawMessage `nbt:"structures"` + Heightmaps struct { + MotionBlocking []int64 `nbt:"MOTION_BLOCKING"` + MotionBlockingNoLeaves []int64 `nbt:"MOTION_BLOCKING_NO_LEAVES"` + OceanFloor []int64 `nbt:"OCEAN_FLOOR"` + WorldSurface []int64 `nbt:"WORLD_SURFACE"` } + Sections []struct { + Y byte + BlockStates struct { + Palette []BlockState `nbt:"palette"` + Data []int64 `nbt:"data"` + } `nbt:"block_states"` + Biomes struct { + Palette []string `nbt:"palette"` + Data []int64 `nbt:"data"` + } `nbt:"biomes"` + SkyLight []byte + BlockLight []byte + } `nbt:"sections"` } -type Chunk struct { - Palette []Block - Y byte - BlockLight []byte - BlockStates []int64 - SkyLight []byte -} - -type Block struct { +type BlockState struct { Name string - Properties map[string]interface{} + Properties nbt.RawMessage } // Load read column data from []byte diff --git a/save/chunk_test.go b/save/chunk_test.go index 386dac8..498b7b9 100644 --- a/save/chunk_test.go +++ b/save/chunk_test.go @@ -6,18 +6,17 @@ import ( ) func TestColumn(t *testing.T) { - var c Column r, err := region.Open("testdata/region/r.0.0.mca") if err != nil { t.Fatal(err) } defer r.Close() + var c Column data, err := r.ReadSector(0, 0) if err != nil { t.Fatal(err) } - err = c.Load(data) if err != nil { t.Fatal(err) @@ -36,10 +35,13 @@ func BenchmarkColumn_Load(b *testing.B) { defer r.Close() for i := 0; i < b.N; i++ { - x, y := (i%1024)/32, (i%1024)%32 - //x, y := rand.Intn(32), rand.Intn(32) + x, z := (i%1024)/32, (i%1024)%32 + //x, z := rand.Intn(32), rand.Intn(32) + if !r.ExistSector(x, z) { + continue + } - data, err := r.ReadSector(x, y) + data, err := r.ReadSector(x, z) if err != nil { b.Fatal(err) } diff --git a/save/region/mca.go b/save/region/mca.go index bd23b63..7c1e22a 100644 --- a/save/region/mca.go +++ b/save/region/mca.go @@ -121,8 +121,8 @@ func sectorLoc(offset int32) (sec, num int32) { } // ReadSector find and read the Chunk data from region -func (r *Region) ReadSector(x, y int) (data []byte, err error) { - offset, _ := sectorLoc(r.offsets[x][y]) +func (r *Region) ReadSector(x, z int) (data []byte, err error) { + offset, _ := sectorLoc(r.offsets[x][z]) if offset == 0 { return nil, errors.New("sector not exist") diff --git a/save/testdata/DIM-1/data/raids.dat b/save/testdata/DIM-1/data/raids.dat new file mode 100644 index 0000000..4100fe4 Binary files /dev/null and b/save/testdata/DIM-1/data/raids.dat differ diff --git a/save/testdata/DIM-1/data/raids_nether.dat b/save/testdata/DIM-1/data/raids_nether.dat deleted file mode 100644 index d03c17e..0000000 Binary files a/save/testdata/DIM-1/data/raids_nether.dat and /dev/null differ diff --git a/save/testdata/DIM1/data/raids_end.dat b/save/testdata/DIM1/data/raids_end.dat index d03c17e..4100fe4 100644 Binary files a/save/testdata/DIM1/data/raids_end.dat and b/save/testdata/DIM1/data/raids_end.dat differ diff --git a/save/testdata/advancements/58f6356e-b30c-4811-8bfc-d72a9ee99e73.json b/save/testdata/advancements/58f6356e-b30c-4811-8bfc-d72a9ee99e73.json index 0d9008a..68cdfde 100644 --- a/save/testdata/advancements/58f6356e-b30c-4811-8bfc-d72a9ee99e73.json +++ b/save/testdata/advancements/58f6356e-b30c-4811-8bfc-d72a9ee99e73.json @@ -1,9 +1,9 @@ { "minecraft:adventure/adventuring_time": { "criteria": { - "minecraft:plains": "2019-07-31 15:56:59 +0800" + "minecraft:forest": "2021-12-19 20:04:35 +0800" }, "done": false }, - "DataVersion": 1976 + "DataVersion": 2865 } \ No newline at end of file diff --git a/save/testdata/data/raids.dat b/save/testdata/data/raids.dat index d03c17e..4100fe4 100644 Binary files a/save/testdata/data/raids.dat and b/save/testdata/data/raids.dat differ diff --git a/save/testdata/entities/r.-1.-1.mca b/save/testdata/entities/r.-1.-1.mca new file mode 100644 index 0000000..6dc42c9 Binary files /dev/null and b/save/testdata/entities/r.-1.-1.mca differ diff --git a/save/testdata/entities/r.-1.0.mca b/save/testdata/entities/r.-1.0.mca new file mode 100644 index 0000000..2e8f840 Binary files /dev/null and b/save/testdata/entities/r.-1.0.mca differ diff --git a/save/testdata/entities/r.0.-1.mca b/save/testdata/entities/r.0.-1.mca new file mode 100644 index 0000000..51c5c38 Binary files /dev/null and b/save/testdata/entities/r.0.-1.mca differ diff --git a/save/testdata/entities/r.0.0.mca b/save/testdata/entities/r.0.0.mca new file mode 100644 index 0000000..efa7e1a Binary files /dev/null and b/save/testdata/entities/r.0.0.mca differ diff --git a/save/testdata/icon.png b/save/testdata/icon.png new file mode 100644 index 0000000..04b60be Binary files /dev/null and b/save/testdata/icon.png differ diff --git a/save/testdata/level.dat b/save/testdata/level.dat index 6c3f785..e914193 100644 Binary files a/save/testdata/level.dat and b/save/testdata/level.dat differ diff --git a/save/testdata/level.dat_old b/save/testdata/level.dat_old index e9c59e8..5e10b4b 100644 Binary files a/save/testdata/level.dat_old and b/save/testdata/level.dat_old differ diff --git a/save/testdata/playerdata/58f6356e-b30c-4811-8bfc-d72a9ee99e73.dat b/save/testdata/playerdata/58f6356e-b30c-4811-8bfc-d72a9ee99e73.dat index eac67ea..4ac425e 100644 Binary files a/save/testdata/playerdata/58f6356e-b30c-4811-8bfc-d72a9ee99e73.dat and b/save/testdata/playerdata/58f6356e-b30c-4811-8bfc-d72a9ee99e73.dat differ diff --git a/save/testdata/playerdata/58f6356e-b30c-4811-8bfc-d72a9ee99e73.dat_old b/save/testdata/playerdata/58f6356e-b30c-4811-8bfc-d72a9ee99e73.dat_old new file mode 100644 index 0000000..4ac425e Binary files /dev/null and b/save/testdata/playerdata/58f6356e-b30c-4811-8bfc-d72a9ee99e73.dat_old differ diff --git a/save/testdata/poi/r.-1.-1.mca b/save/testdata/poi/r.-1.-1.mca new file mode 100644 index 0000000..ff5b6f7 Binary files /dev/null and b/save/testdata/poi/r.-1.-1.mca differ diff --git a/save/testdata/poi/r.0.-1.mca b/save/testdata/poi/r.0.-1.mca new file mode 100644 index 0000000..cf2f1a7 Binary files /dev/null and b/save/testdata/poi/r.0.-1.mca differ diff --git a/save/testdata/poi/r.0.0.mca b/save/testdata/poi/r.0.0.mca new file mode 100644 index 0000000..2ca3870 Binary files /dev/null and b/save/testdata/poi/r.0.0.mca differ diff --git a/save/testdata/region/r.-1.-1.mca b/save/testdata/region/r.-1.-1.mca index c6f670d..528e7fe 100644 Binary files a/save/testdata/region/r.-1.-1.mca and b/save/testdata/region/r.-1.-1.mca differ diff --git a/save/testdata/region/r.-1.0.mca b/save/testdata/region/r.-1.0.mca index 642e0ec..81e7967 100644 Binary files a/save/testdata/region/r.-1.0.mca and b/save/testdata/region/r.-1.0.mca differ diff --git a/save/testdata/region/r.0.-1.mca b/save/testdata/region/r.0.-1.mca index 25e5d10..5964776 100644 Binary files a/save/testdata/region/r.0.-1.mca and b/save/testdata/region/r.0.-1.mca differ diff --git a/save/testdata/region/r.0.0.mca b/save/testdata/region/r.0.0.mca index bb36bb0..829f3bb 100644 Binary files a/save/testdata/region/r.0.0.mca and b/save/testdata/region/r.0.0.mca differ diff --git a/save/testdata/session.lock b/save/testdata/session.lock index 03394fd..0d7e5f8 100644 Binary files a/save/testdata/session.lock and b/save/testdata/session.lock differ diff --git a/save/testdata/stats/58f6356e-b30c-4811-8bfc-d72a9ee99e73.json b/save/testdata/stats/58f6356e-b30c-4811-8bfc-d72a9ee99e73.json index 460c316..4da5ab7 100644 --- a/save/testdata/stats/58f6356e-b30c-4811-8bfc-d72a9ee99e73.json +++ b/save/testdata/stats/58f6356e-b30c-4811-8bfc-d72a9ee99e73.json @@ -1 +1 @@ -{"stats":{"minecraft:custom":{"minecraft:time_since_rest":6,"minecraft:play_one_minute":6,"minecraft:leave_game":1,"minecraft:time_since_death":6}},"DataVersion":1976} \ No newline at end of file +{"stats":{"minecraft:custom":{"minecraft:time_since_rest":14,"minecraft:leave_game":1,"minecraft:play_time":14,"minecraft:time_since_death":14,"minecraft:total_world_time":77}},"DataVersion":2865} \ No newline at end of file diff --git a/server/dimension.go b/server/dimension.go index 181328d..542c032 100644 --- a/server/dimension.go +++ b/server/dimension.go @@ -152,7 +152,7 @@ func (s *SimpleDim) LoadChunk(pos ChunkPos, c *Chunk) { func (s *SimpleDim) Info() DimInfo { return DimInfo{ Name: "minecraft:overworld", - HashedSeed: 0, + HashedSeed: 1234567, } }