diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2022-06-08 23:07:30 +0200 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2022-06-08 23:07:30 +0200 |
commit | 7132ab02479fb73fe4926750469bde3a81bc769d (patch) | |
tree | 59d9bcaf077f8473bf02e27cde3ac0bb983c9079 | |
parent | 34f9c500888396781ecb565b566f7a0fb4c3c71b (diff) | |
download | hydra-dragonfire-7132ab02479fb73fe4926750469bde3a81bc769d.tar.xz |
Fix map race condition
-rw-r--r-- | map.go | 24 |
1 files changed, 11 insertions, 13 deletions
@@ -41,23 +41,21 @@ func newMap(l *lua.LState) *Map { func (mp *Map) process(client *Client, pkt *mt.Pkt) { switch cmd := pkt.Cmd.(type) { case *mt.ToCltBlkData: - go func() { - mp.mu.Lock() - defer mp.mu.Unlock() + mp.mu.Lock() + defer mp.mu.Unlock() - blk := &MapBlk{} - blk.data = &cmd.Blk + blk := &MapBlk{} + blk.data = &cmd.Blk - if mp.pathfind { - if oldblk, ok := mp.blocks[cmd.Blkpos]; ok { - pathRemoveBlock(oldblk) - } - - pathAddBlock(mp, blk, cmd.Blkpos) + if mp.pathfind { + if oldblk, ok := mp.blocks[cmd.Blkpos]; ok { + pathRemoveBlock(oldblk) } - mp.blocks[cmd.Blkpos] = blk - }() + pathAddBlock(mp, blk, cmd.Blkpos) + } + + mp.blocks[cmd.Blkpos] = blk client.conn.SendCmd(&mt.ToSrvGotBlks{Blks: [][3]int16{cmd.Blkpos}}) } |