diff options
Diffstat (limited to 'server')
| -rw-r--r-- | server/player.go | 8 | ||||
| -rw-r--r-- | server/server.go | 8 |
2 files changed, 15 insertions, 1 deletions
diff --git a/server/player.go b/server/player.go index b7698b1..04be3fa 100644 --- a/server/player.go +++ b/server/player.go @@ -275,6 +275,14 @@ func (p *player) OnLevelData(from *level, info levelInfo, data io.ReadCloser) { Height: int16(info.Size.Y), Length: int16(info.Size.Z), }) + p.server.GetInfo(p, func(info ServerInfo) { + if info.TexturePack == "" { + return + } + p.client.SendPacket(p, &classic.SetMapEnvUrl { + TexturePackUrl: classic.PadString(info.TexturePack), + }) + }) p.client.SendPacket(p, &classic.SpawnPlayerExt { PlayerId: -1, Username: classic.PadString(p.name), diff --git a/server/server.go b/server/server.go index 407ae35..b1c64fb 100644 --- a/server/server.go +++ b/server/server.go @@ -21,11 +21,13 @@ var supportedExtensions = []string { } var requiredExtensions = []string { "ExtEntityPositions", + "EnvMapAspect.2", } type ServerInfo struct { Name string Motd string + TexturePack string } type Server struct { @@ -39,7 +41,6 @@ type Server struct { stopping bool stopped chan struct{} } - type worldState struct { LastId levelId SpawnLevel levelId @@ -185,6 +186,11 @@ func (s *Server) ExecuteCommand( }) } +func (s *Server) GetInfo(from phony.Actor, reply func(ServerInfo)) { + info := s.info + from.Act(nil, func() {reply(info)}) +} + func (s *Server) OnDisconnect(cl *client, username string, pl *player) { s.Act(cl, func() { delete(s.clients, cl) |
