4jcraft/targets/minecraft/world/level/levelgen/structure/StructureFeatureSavedData.cpp
2026-04-01 18:02:06 -05:00

42 lines
1.4 KiB
C++

#include "StructureFeatureSavedData.h"
#include <string>
#include "console_helpers/StringHelpers.h"
#include "minecraft/world/level/saveddata/SavedData.h"
#include "nbt/CompoundTag.h"
std::wstring StructureFeatureSavedData::TAG_FEATURES = L"Features";
StructureFeatureSavedData::StructureFeatureSavedData(const std::wstring& idName)
: SavedData(idName) {
this->pieceTags = new CompoundTag(TAG_FEATURES);
}
StructureFeatureSavedData::~StructureFeatureSavedData() { delete pieceTags; }
void StructureFeatureSavedData::load(CompoundTag* tag) {
this->pieceTags = tag->getCompound(TAG_FEATURES);
}
void StructureFeatureSavedData::save(CompoundTag* tag) {
tag->put(TAG_FEATURES, pieceTags->copy());
}
CompoundTag* StructureFeatureSavedData::getFeatureTag(int chunkX, int chunkZ) {
return pieceTags->getCompound(createFeatureTagId(chunkX, chunkZ));
}
void StructureFeatureSavedData::putFeatureTag(CompoundTag* tag, int chunkX,
int chunkZ) {
std::wstring name = createFeatureTagId(chunkX, chunkZ);
tag->setName(name);
pieceTags->put(name, tag);
}
std::wstring StructureFeatureSavedData::createFeatureTagId(int chunkX,
int chunkZ) {
return L"[" + _toString<int>(chunkX) + L"," + _toString<int>(chunkZ) + L"]";
}
CompoundTag* StructureFeatureSavedData::getFullTag() { return pieceTags; }