MCPcopy Create free account
hub / github.com/MultiMC/Launcher / loadFromLevelDat

Method loadFromLevelDat

launcher/minecraft/World.cpp:437–486  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

435}
436
437void World::loadFromLevelDat(QByteArray data)
438{
439 auto levelData = parseLevelDat(data);
440 if(!levelData)
441 {
442 is_valid = false;
443 return;
444 }
445
446 nbt::value * valPtr = nullptr;
447 try {
448 valPtr = &levelData->at("Data");
449 }
450 catch (const std::out_of_range &e) {
451 qWarning() << "Unable to read NBT tags from " << m_folderName << ":" << e.what();
452 is_valid = false;
453 return;
454 }
455 nbt::value &val = *valPtr;
456
457 is_valid = val.get_type() == nbt::tag_type::Compound;
458 if(!is_valid)
459 return;
460
461 auto name = read_string(val, "LevelName");
462 m_actualName = name ? *name : m_folderName;
463
464 auto timestamp = read_long(val, "LastPlayed");
465 m_lastPlayed = timestamp ? QDateTime::fromMSecsSinceEpoch(*timestamp) : levelDatTime;
466
467 m_gameType = read_gametype(val, "GameType");
468
469 optional<int64_t> randomSeed;
470 try {
471 auto &WorldGen_val = val.at("WorldGenSettings");
472 randomSeed = read_long(WorldGen_val, "seed");
473 }
474 catch (const std::out_of_range &) {}
475 if(!randomSeed) {
476 randomSeed = read_long(val, "RandomSeed");
477 }
478 m_randomSeed = randomSeed ? *randomSeed : 0;
479
480 qDebug() << "World Name:" << m_actualName;
481 qDebug() << "Last Played:" << m_lastPlayed.toString();
482 if(randomSeed) {
483 qDebug() << "Seed:" << *randomSeed;
484 }
485 qDebug() << "GameType:" << m_gameType.toLogString();
486}
487
488bool World::replace(World &with)
489{

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