add player package with key client-side player functionality, update protocol codecs, and refactor metadata definitions and slot usage

This commit is contained in:
2025-08-23 16:19:45 +08:00
parent cff9d4a809
commit 4528bdc86a
32 changed files with 2613 additions and 468 deletions

View File

@ -1,12 +1,45 @@
package client
import "github.com/Tnze/go-mc/level"
import (
"io"
"github.com/Tnze/go-mc/level"
)
var _ ClientboundPacket = (*LevelChunkWithLight)(nil)
//codec:gen
type LevelChunkWithLight struct {
X int32
Z int32
Data level.Chunk
Pos level.ChunkPos
Data *level.Chunk
}
func (c *LevelChunkWithLight) ReadFrom(r io.Reader) (n int64, err error) {
temp, err := c.Pos.ReadFrom(r)
if err != nil {
return temp, err
}
c.Data = level.EmptyChunk(36)
temp, err = (c.Data).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c LevelChunkWithLight) WriteTo(w io.Writer) (n int64, err error) {
var temp int64
temp, err = c.Pos.WriteTo(w)
n += temp
if err != nil {
return n, err
}
temp, err = (*level.Chunk)(c.Data).WriteTo(w)
n += temp
if err != nil {
return n, err
}
return n, err
}