From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.World/StructureFeature.h | 58 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Minecraft.World/StructureFeature.h (limited to 'Minecraft.World/StructureFeature.h') diff --git a/Minecraft.World/StructureFeature.h b/Minecraft.World/StructureFeature.h new file mode 100644 index 00000000..642e6aad --- /dev/null +++ b/Minecraft.World/StructureFeature.h @@ -0,0 +1,58 @@ +#pragma once +#include "LargeFeature.h" +class StructureStart; + +class StructureFeature : public LargeFeature +{ +public: + // 4J added - Maps to values in the game rules xml + enum EFeatureTypes + { + eFeature_Mineshaft, + eFeature_NetherBridge, + eFeature_Temples, + eFeature_Stronghold, + eFeature_Village, + }; + +protected: + unordered_map<__int64, StructureStart *> cachedStructures; + +public: + ~StructureFeature(); + + virtual void addFeature(Level *level, int x, int z, int xOffs, int zOffs, byteArray blocks); + + bool postProcess(Level *level, Random *random, int chunkX, int chunkZ); + bool isIntersection(int cellX, int cellZ); + + bool isInsideFeature(int cellX, int cellY, int cellZ); + TilePos *getNearestGeneratedFeature(Level *level, int cellX, int cellY, int cellZ); +protected: + vector *getGuesstimatedFeaturePositions(); + + /** + * Returns true if the given chunk coordinates should hold a structure + * source. + * + * @param x + * chunk x + * @param z + * chunk z + * @return + */ +protected: + virtual bool isFeatureChunk(int x, int z, bool bIsSuperflat=false) = 0; + + /** + * Creates a new instance of a structure source at the given chunk + * coordinates. + * + * @param x + * chunk x + * @param z + * chunk z + * @return + */ + virtual StructureStart *createStructureStart(int x, int z) = 0; +}; -- cgit v1.2.3