mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-24 16:24:11 +00:00
# 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
103 lines
3.5 KiB
C++
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);
|
|
}
|
|
}
|
|
|