| 123 | } |
| 124 | |
| 125 | std::unique_ptr<nbt::tag_compound> parseLevelDat(QByteArray data) |
| 126 | { |
| 127 | QByteArray output; |
| 128 | if (!GZip::unzip(data, output)) { |
| 129 | return nullptr; |
| 130 | } |
| 131 | std::istringstream foo(std::string(output.constData(), output.size())); |
| 132 | try { |
| 133 | auto pair = nbt::io::read_compound(foo); |
| 134 | |
| 135 | if (pair.first != "") |
| 136 | return nullptr; |
| 137 | |
| 138 | if (pair.second == nullptr) |
| 139 | return nullptr; |
| 140 | |
| 141 | return std::move(pair.second); |
| 142 | } catch (const nbt::io::input_error& e) { |
| 143 | qWarning() << "Unable to parse level.dat:" << e.what(); |
| 144 | return nullptr; |
| 145 | } |
| 146 | } |
| 147 | |
| 148 | QByteArray serializeLevelDat(nbt::tag_compound* levelInfo) |
| 149 | { |