2019-01-29 09:47:53 +03:00
|
|
|
package mapobject
|
|
|
|
|
|
|
|
import (
|
|
|
|
"mapserver/mapobjectdb"
|
2023-12-29 18:00:11 +03:00
|
|
|
"mapserver/types"
|
2019-12-01 13:35:16 +03:00
|
|
|
"strconv"
|
2021-10-12 08:44:07 +03:00
|
|
|
|
|
|
|
"github.com/minetest-go/mapparser"
|
2019-01-29 09:47:53 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
type BonesBlock struct{}
|
|
|
|
|
2023-12-29 18:00:11 +03:00
|
|
|
func (this *BonesBlock) onMapObject(mbpos *types.MapBlockCoords, x, y, z int, block *mapparser.MapBlock) *mapobjectdb.MapObject {
|
2019-01-29 09:47:53 +03:00
|
|
|
md := block.Metadata.GetMetadata(x, y, z)
|
|
|
|
|
2019-12-13 00:11:20 +03:00
|
|
|
invMap := block.Metadata.GetInventoryMapAtPos(x, y, z)
|
|
|
|
mainInv := invMap["main"]
|
|
|
|
|
|
|
|
if mainInv == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2021-10-12 08:44:07 +03:00
|
|
|
o := mapobjectdb.NewMapObject(mbpos, x, y, z, "bones")
|
2019-01-29 09:47:53 +03:00
|
|
|
o.Attributes["time"] = md["time"]
|
2020-04-13 21:07:56 +03:00
|
|
|
|
|
|
|
if _, ok := md["owner"]; ok {
|
|
|
|
o.Attributes["owner"] = md["owner"]
|
|
|
|
} else if _, ok := md["_owner"]; ok {
|
|
|
|
o.Attributes["owner"] = md["_owner"]
|
|
|
|
} else {
|
|
|
|
o.Attributes["owner"] = "unknown"
|
|
|
|
}
|
|
|
|
|
2019-12-12 23:46:13 +03:00
|
|
|
o.Attributes["info"] = md["infotext"]
|
2019-01-29 09:47:53 +03:00
|
|
|
|
2019-12-01 13:35:16 +03:00
|
|
|
itemCount := 0
|
|
|
|
for _, item := range mainInv.Items {
|
|
|
|
itemCount += item.Count
|
|
|
|
}
|
|
|
|
|
|
|
|
o.Attributes["item_count"] = strconv.Itoa(itemCount)
|
|
|
|
|
2019-01-29 09:47:53 +03:00
|
|
|
return o
|
|
|
|
}
|