From 57d39e1bdc2b3f6ba5f63142800091d264ca9a4e Mon Sep 17 00:00:00 2001 From: raven Date: Sat, 21 Mar 2026 16:17:38 -0500 Subject: properly set player position when changing dimensions --- server/player.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'server') diff --git a/server/player.go b/server/player.go index b63bd94..6b03466 100644 --- a/server/player.go +++ b/server/player.go @@ -16,6 +16,7 @@ type player struct { server *Server name string level *level + levelLoaded bool } type authLevel int @@ -77,7 +78,7 @@ func (p *player) kick(reason string) { } func (p *player) handlePacket(packet classic.Packet) { - if p.level == nil { + if p.level == nil || !p.levelLoaded { return } switch pck := packet.(type) { @@ -141,10 +142,11 @@ func (p *player) OnPacket(from phony.Actor, packet classic.Packet) { } func (p *player) joinLevel(id levelId, lvl *level, pos entityPos) { - lvl.OnAddPlayer(p, p.name, pos) - p.level = lvl p.state.LevelId = id p.state.Pos = pos + p.level = lvl + p.levelLoaded = false + lvl.OnAddPlayer(p, p.name, pos) } func (p *player) ChangeLevel(from phony.Actor, lvl levelId, pos entityPos) { @@ -161,6 +163,8 @@ func (p *player) ChangeLevel(from phony.Actor, lvl levelId, pos entityPos) { func (p *player) MovePlayer( from phony.Actor, pos entityPos, facing entityFacing) { p.Act(from, func() { + p.state.Pos = pos + p.state.Facing = facing p.client.SendPacket(p, &classic.SpawnPlayer { PlayerId: -1, X: classic.FShort(pos.X), @@ -238,6 +242,7 @@ func (p *player) OnLevelData(from *level, info levelInfo, data io.ReadCloser) { Yaw: p.state.Facing.Yaw, Pitch: p.state.Facing.Pitch, }) + p.levelLoaded = true }) } -- cgit v1.2.3