func (r *nbtChunkReader) Entities() (entities []gamerules.INonPlayerEntity) { entityListTag, ok := r.chunkTag.Lookup("Level/Entities").(*nbt.List) if !ok { return } entities = make([]gamerules.INonPlayerEntity, 0, len(entities)) for _, entityTag := range entityListTag.Value { entityObjectId, ok := entityTag.Lookup("id").(*nbt.String) if !ok { log.Printf("missing or bad entity type ID in NBT: %s", entityObjectId) } else { if entity := gamerules.NewEntityByTypeName(entityObjectId.Value); entity == nil { log.Printf("Found unhandled entity type: %s", entityObjectId.Value) } else { if err := entity.ReadNbt(entityTag); err != nil { log.Printf("Error reading entity NBT: %s", err) } else { entities = append(entities, entity) } } } } return }
func (r *nbtChunkReader) Entities() (entities []gamerules.INonPlayerEntity) { entityListTag, ok := r.chunkTag.Lookup("Level/Entities").(*nbt.List) if !ok { return } entities = make([]gamerules.INonPlayerEntity, 0, len(entityListTag.Value)) for _, tag := range entityListTag.Value { compound, ok := tag.(nbt.Compound) if !ok { log.Printf("Found non-compound in entities list: %T", tag) continue } entityObjectId, ok := compound.Lookup("id").(*nbt.String) if !ok { log.Printf("Missing or bad entity type ID in NBT: %s", entityObjectId) continue } entity := gamerules.NewEntityByTypeName(entityObjectId.Value) if entity == nil { log.Printf("Found unhandled entity type: %s", entityObjectId.Value) continue } err := entity.UnmarshalNbt(compound) if err != nil { log.Printf("Error unmarshalling entity NBT: %s", err) continue } entities = append(entities, entity) } return }