57 lines
1.0 KiB
Go
57 lines
1.0 KiB
Go
package server
|
|
|
|
import (
|
|
"github.com/Tnze/go-mc/data/packetid"
|
|
"github.com/Tnze/go-mc/level"
|
|
pk "github.com/Tnze/go-mc/net/packet"
|
|
)
|
|
|
|
type Level interface {
|
|
Init(g *Game)
|
|
Info() LevelInfo
|
|
PlayerJoin(p *Client)
|
|
PlayerQuit(p *Client)
|
|
}
|
|
|
|
type LevelInfo struct {
|
|
Name string
|
|
HashedSeed uint64
|
|
}
|
|
|
|
type SimpleDim struct {
|
|
numOfSection int
|
|
columns map[level.ChunkPos]*level.Chunk
|
|
}
|
|
|
|
func (s *SimpleDim) Init(*Game) {}
|
|
|
|
func NewSimpleDim(secs int) *SimpleDim {
|
|
return &SimpleDim{
|
|
numOfSection: secs,
|
|
columns: make(map[level.ChunkPos]*level.Chunk),
|
|
}
|
|
}
|
|
|
|
func (s *SimpleDim) LoadChunk(pos level.ChunkPos, c *level.Chunk) {
|
|
s.columns[pos] = c
|
|
}
|
|
|
|
func (s *SimpleDim) Info() LevelInfo {
|
|
return LevelInfo{
|
|
Name: "minecraft:overworld",
|
|
HashedSeed: 1234567,
|
|
}
|
|
}
|
|
|
|
func (s *SimpleDim) PlayerJoin(p *Client) {
|
|
for pos, column := range s.columns {
|
|
packet := pk.Marshal(
|
|
packetid.ClientboundLevelChunkWithLight,
|
|
pos, column,
|
|
)
|
|
p.WritePacket(Packet758(packet))
|
|
}
|
|
}
|
|
|
|
func (s *SimpleDim) PlayerQuit(*Client) {}
|