mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-24 16:13:51 +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
101 lines
3.3 KiB
C++
101 lines
3.3 KiB
C++
#include "../Platform/stdafx.h"
|
|
#include "../Headers/net.minecraft.world.level.levelgen.structure.h"
|
|
#include "StructureFeatureIO.h"
|
|
|
|
std::unordered_map<std::wstring, structureStartCreateFn>
|
|
StructureFeatureIO::startIdClassMap;
|
|
std::unordered_map<unsigned int, std::wstring>
|
|
StructureFeatureIO::startClassIdMap;
|
|
|
|
std::unordered_map<std::wstring, structurePieceCreateFn>
|
|
StructureFeatureIO::pieceIdClassMap;
|
|
std::unordered_map<unsigned int, std::wstring>
|
|
StructureFeatureIO::pieceClassIdMap;
|
|
|
|
void StructureFeatureIO::setStartId(EStructureStart clas,
|
|
structureStartCreateFn createFn,
|
|
const std::wstring& id) {
|
|
startIdClassMap[id] = createFn;
|
|
startClassIdMap[clas] = id;
|
|
}
|
|
|
|
void StructureFeatureIO::setPieceId(EStructurePiece clas,
|
|
structurePieceCreateFn createFn,
|
|
const std::wstring& id) {
|
|
pieceIdClassMap[id] = createFn;
|
|
pieceClassIdMap[clas] = id;
|
|
}
|
|
|
|
void StructureFeatureIO::staticCtor() {
|
|
setStartId(eStructureStart_MineShaftStart, MineShaftStart::Create,
|
|
L"Mineshaft");
|
|
setStartId(eStructureStart_VillageStart,
|
|
VillageFeature::VillageStart::Create, L"Village");
|
|
setStartId(eStructureStart_NetherBridgeStart,
|
|
NetherBridgeFeature::NetherBridgeStart::Create, L"Fortress");
|
|
setStartId(eStructureStart_StrongholdStart,
|
|
StrongholdFeature::StrongholdStart::Create, L"Stronghold");
|
|
setStartId(eStructureStart_ScatteredFeatureStart,
|
|
RandomScatteredLargeFeature::ScatteredFeatureStart::Create,
|
|
L"Temple");
|
|
|
|
MineShaftPieces::loadStatic();
|
|
VillagePieces::loadStatic();
|
|
NetherBridgePieces::loadStatic();
|
|
StrongholdPieces::loadStatic();
|
|
ScatteredFeaturePieces::loadStatic();
|
|
}
|
|
|
|
std::wstring StructureFeatureIO::getEncodeId(StructureStart* start) {
|
|
auto it = startClassIdMap.find(start->GetType());
|
|
if (it != startClassIdMap.end()) {
|
|
return it->second;
|
|
} else {
|
|
return L"";
|
|
}
|
|
}
|
|
|
|
std::wstring StructureFeatureIO::getEncodeId(StructurePiece* piece) {
|
|
auto it = pieceClassIdMap.find(piece->GetType());
|
|
if (it != pieceClassIdMap.end()) {
|
|
return it->second;
|
|
} else {
|
|
return L"";
|
|
}
|
|
}
|
|
|
|
StructureStart* StructureFeatureIO::loadStaticStart(CompoundTag* tag,
|
|
Level* level) {
|
|
StructureStart* start = nullptr;
|
|
|
|
auto it = startIdClassMap.find(tag->getString(L"id"));
|
|
if (it != startIdClassMap.end()) {
|
|
start = (it->second)();
|
|
}
|
|
|
|
if (start != nullptr) {
|
|
start->load(level, tag);
|
|
} else {
|
|
app.DebugPrintf("Skipping Structure with id %ls",
|
|
tag->getString(L"id").c_str());
|
|
}
|
|
return start;
|
|
}
|
|
|
|
StructurePiece* StructureFeatureIO::loadStaticPiece(CompoundTag* tag,
|
|
Level* level) {
|
|
StructurePiece* piece = nullptr;
|
|
|
|
auto it = pieceIdClassMap.find(tag->getString(L"id"));
|
|
if (it != pieceIdClassMap.end()) {
|
|
piece = (it->second)();
|
|
}
|
|
|
|
if (piece != nullptr) {
|
|
piece->load(level, tag);
|
|
} else {
|
|
app.DebugPrintf("Skipping Piece with id %ls",
|
|
tag->getString(L"id").c_str());
|
|
}
|
|
return piece;
|
|
} |