MCPcopy Create free account
hub / github.com/PolyMC/PolyMC / loadFromLevelDat

Method loadFromLevelDat

launcher/minecraft/World.cpp:480–530  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

478}
479
480void World::loadFromLevelDat(QByteArray data)
481{
482 auto levelData = parseLevelDat(data);
483 if(!levelData)
484 {
485 is_valid = false;
486 return;
487 }
488
489 nbt::value * valPtr = nullptr;
490 try {
491 valPtr = &levelData->at("Data");
492 }
493 catch (const std::out_of_range &e) {
494 qWarning() << "Unable to read NBT tags from " << m_folderName << ":" << e.what();
495 is_valid = false;
496 return;
497 }
498 nbt::value &val = *valPtr;
499
500 is_valid = val.get_type() == nbt::tag_type::Compound;
501 if(!is_valid)
502 return;
503
504 auto name = read_string(val, "LevelName");
505 m_actualName = name ? *name : m_folderName;
506
507 auto timestamp = read_long(val, "LastPlayed");
508 m_lastPlayed = timestamp ? QDateTime::fromMSecsSinceEpoch(*timestamp) : levelDatTime;
509
510 m_gameType = read_gametype(val, "GameType");
511
512 optional<int64_t> randomSeed;
513 try {
514 auto &WorldGen_val = val.at("WorldGenSettings");
515 randomSeed = read_long(WorldGen_val, "seed");
516 }
517 catch (const std::out_of_range &) {}
518 if(!randomSeed) {
519 randomSeed = read_long(val, "RandomSeed");
520 }
521 m_randomSeed = randomSeed ? *randomSeed : 0;
522
523 qDebug() << "World Name:" << m_actualName;
524 qDebug() << "Last Played:" << m_lastPlayed.toString();
525 if(randomSeed) {
526 qDebug() << "Seed:" << *randomSeed;
527 }
528 qDebug() << "Size:" << m_size;
529 qDebug() << "GameType:" << m_gameType.toLogString();
530}
531
532bool World::replace(World &with)
533{

Callers

nothing calls this directly

Calls 8

parseLevelDatFunction · 0.85
read_stringFunction · 0.85
read_longFunction · 0.85
read_gametypeFunction · 0.85
whatMethod · 0.80
toLogStringMethod · 0.80
atMethod · 0.45
toStringMethod · 0.45

Tested by

no test coverage detected