4jcraft/Minecraft.World/Level/Storage/McRegionLevelStorageSource.cpp
MatthewBeshay a0fdc643d1 Merge branch 'upstream-dev' into cleanup/nullptr-replacement
# Conflicts:
#	Minecraft.Client/Network/PlayerChunkMap.cpp
#	Minecraft.Client/Network/PlayerList.cpp
#	Minecraft.Client/Network/ServerChunkCache.cpp
#	Minecraft.Client/Platform/Common/Consoles_App.cpp
#	Minecraft.Client/Platform/Common/DLC/DLCManager.cpp
#	Minecraft.Client/Platform/Common/GameRules/LevelGenerationOptions.cpp
#	Minecraft.Client/Platform/Common/GameRules/LevelRuleset.cpp
#	Minecraft.Client/Platform/Common/Tutorial/Tutorial.cpp
#	Minecraft.Client/Platform/Common/Tutorial/TutorialTask.cpp
#	Minecraft.Client/Platform/Common/UI/IUIScene_CreativeMenu.cpp
#	Minecraft.Client/Platform/Common/UI/UIComponent_Panorama.cpp
#	Minecraft.Client/Platform/Common/UI/UIController.cpp
#	Minecraft.Client/Platform/Common/UI/UIController.h
#	Minecraft.Client/Platform/Extrax64Stubs.cpp
#	Minecraft.Client/Platform/Windows64/4JLibs/inc/4J_Input.h
#	Minecraft.Client/Platform/Windows64/4JLibs/inc/4J_Storage.h
#	Minecraft.Client/Player/EntityTracker.cpp
#	Minecraft.Client/Player/ServerPlayer.cpp
#	Minecraft.Client/Rendering/EntityRenderers/PlayerRenderer.cpp
#	Minecraft.Client/Textures/Packs/DLCTexturePack.cpp
#	Minecraft.Client/Textures/Stitching/StitchedTexture.cpp
#	Minecraft.Client/Textures/Stitching/TextureMap.cpp
#	Minecraft.Client/Textures/Textures.cpp
#	Minecraft.World/Blocks/NotGateTile.cpp
#	Minecraft.World/Blocks/PressurePlateTile.cpp
#	Minecraft.World/Blocks/TileEntities/PotionBrewing.cpp
#	Minecraft.World/Enchantments/EnchantmentHelper.cpp
#	Minecraft.World/Entities/HangingEntity.cpp
#	Minecraft.World/Entities/LeashFenceKnotEntity.cpp
#	Minecraft.World/Entities/LivingEntity.cpp
#	Minecraft.World/Entities/Mobs/Boat.cpp
#	Minecraft.World/Entities/Mobs/Minecart.cpp
#	Minecraft.World/Entities/Mobs/Witch.cpp
#	Minecraft.World/Entities/SyncedEntityData.cpp
#	Minecraft.World/Items/LeashItem.cpp
#	Minecraft.World/Items/PotionItem.cpp
#	Minecraft.World/Level/BaseMobSpawner.cpp
#	Minecraft.World/Level/CustomLevelSource.cpp
#	Minecraft.World/Level/Level.cpp
#	Minecraft.World/Level/Storage/DirectoryLevelStorage.cpp
#	Minecraft.World/Level/Storage/McRegionLevelStorage.cpp
#	Minecraft.World/Level/Storage/RegionFileCache.cpp
#	Minecraft.World/Player/Player.cpp
#	Minecraft.World/WorldGen/Biomes/BiomeCache.cpp
#	Minecraft.World/WorldGen/Features/RandomScatteredLargeFeature.cpp
#	Minecraft.World/WorldGen/Layers/BiomeOverrideLayer.cpp
2026-03-30 16:28:40 +11:00

103 lines
3.5 KiB
C++

#include "../../Platform/stdafx.h"
#include "../../Util/JavaMath.h"
#include "../../Util/ProgressListener.h"
#include "../../Headers/net.minecraft.world.level.chunk.storage.h"
#include "../../Headers/net.minecraft.world.level.chunk.h"
#include "LevelSummary.h"
#include "McRegionLevelStorage.h"
#include "../../IO/Files/File.h"
#include "../LevelData.h"
#include "McRegionLevelStorageSource.h"
#include "../../IO/Files/ConsoleSaveFileIO.h"
McRegionLevelStorageSource::McRegionLevelStorageSource(File dir)
: DirectoryLevelStorageSource(dir) {}
std::wstring McRegionLevelStorageSource::getName() {
return L"Scaevolus' McRegion";
}
std::vector<LevelSummary*>* McRegionLevelStorageSource::getLevelList() {
// 4J Stu - We don't need to do directory lookups with the xbox save files
std::vector<LevelSummary*>* levels = new std::vector<LevelSummary*>;
return levels;
}
void McRegionLevelStorageSource::clearAll() {}
std::shared_ptr<LevelStorage> McRegionLevelStorageSource::selectLevel(
ConsoleSaveFile* saveFile, const std::wstring& levelId,
bool createPlayerDir) {
// return new LevelStorageProfilerDecorator(new
// McRegionLevelStorage(baseDir, levelId, createPlayerDir));
return std::shared_ptr<LevelStorage>(
new McRegionLevelStorage(saveFile, baseDir, levelId, createPlayerDir));
}
bool McRegionLevelStorageSource::isConvertible(ConsoleSaveFile* saveFile,
const std::wstring& levelId) {
// check if there is old file format level data
LevelData* levelData = getDataTagFor(saveFile, levelId);
if (levelData == nullptr || levelData->getVersion() != 0) {
delete levelData;
return false;
}
delete levelData;
return true;
}
bool McRegionLevelStorageSource::requiresConversion(
ConsoleSaveFile* saveFile, const std::wstring& levelId) {
LevelData* levelData = getDataTagFor(saveFile, levelId);
if (levelData == nullptr || levelData->getVersion() != 0) {
delete levelData;
return false;
}
delete levelData;
return true;
}
bool McRegionLevelStorageSource::convertLevel(ConsoleSaveFile* saveFile,
const std::wstring& levelId,
ProgressListener* progress) {
assert(false);
// I removed this while updating the saves to use the single save file
// Will we ever use this convertLevel function anyway? The main issue is the
// check for the hellFolder.exists() which would require a slight change to
// the way our save files are structured
return true;
}
void McRegionLevelStorageSource::convertRegions(
File& baseFolder, std::vector<ChunkFile*>* chunkFiles, int currentCount,
int totalCount, ProgressListener* progress) {
assert(false);
// 4J Stu - Removed, see comment in convertLevel above
}
void McRegionLevelStorageSource::eraseFolders(std::vector<File*>* folders,
int currentCount, int totalCount,
ProgressListener* progress) {
File* folder;
auto itEnd = folders->end();
for (auto it = folders->begin(); it != itEnd; it++) {
folder = *it; // folders->at(i);
std::vector<File*>* files = folder->listFiles();
deleteRecursive(files);
folder->_delete();
currentCount++;
int percent =
(int)Math::round(100.0 * (double)currentCount / (double)totalCount);
progress->progressStagePercentage(percent);
}
}