69 lines
1.2 KiB
Go
69 lines
1.2 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 {
|
|
Info() LevelInfo
|
|
PlayerJoin(p *Player)
|
|
PlayerQuit(p *Player)
|
|
}
|
|
|
|
type LevelInfo struct {
|
|
Name string
|
|
HashedSeed uint64
|
|
}
|
|
|
|
type SimpleDim struct {
|
|
numOfSection int
|
|
Columns map[level.ChunkPos]*level.Chunk
|
|
}
|
|
|
|
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 *Player) {
|
|
for pos, column := range s.Columns {
|
|
column.Lock()
|
|
packet := pk.Marshal(
|
|
packetid.ClientboundLevelChunkWithLight,
|
|
pk.Int(pos.X), pk.Int(pos.Z),
|
|
column,
|
|
)
|
|
column.Unlock()
|
|
|
|
p.WritePacket(Packet757(packet))
|
|
}
|
|
|
|
p.WritePacket(Packet757(pk.Marshal(
|
|
packetid.ClientboundPlayerPosition,
|
|
pk.Double(0), pk.Double(143), pk.Double(0),
|
|
pk.Float(0), pk.Float(0),
|
|
pk.Byte(0),
|
|
pk.VarInt(0),
|
|
pk.Boolean(true),
|
|
)))
|
|
}
|
|
|
|
func (s *SimpleDim) PlayerQuit(p *Player) {
|
|
|
|
}
|