aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2022-06-08 23:07:30 +0200
committerElias Fleckenstein <eliasfleckenstein@web.de>2022-06-08 23:07:30 +0200
commit7132ab02479fb73fe4926750469bde3a81bc769d (patch)
tree59d9bcaf077f8473bf02e27cde3ac0bb983c9079
parent34f9c500888396781ecb565b566f7a0fb4c3c71b (diff)
downloadhydra-dragonfire-7132ab02479fb73fe4926750469bde3a81bc769d.tar.xz
Fix map race condition
-rw-r--r--map.go24
1 files changed, 11 insertions, 13 deletions
diff --git a/map.go b/map.go
index f877dca..3d4faee 100644
--- a/map.go
+++ b/map.go
@@ -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}})
}