LeviLamina
Loading...
Searching...
No Matches
TheEndGenerator.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/threading/InstancedThreadLocal.h"
7#include "mc/util/MultidimensionalArray.h"
8#include "mc/world/level/DividedPos2d.h"
9#include "mc/world/level/levelgen/WorldGenerator.h"
10
11// auto generated forward declare list
12// clang-format off
13class Biome;
14class BiomeArea;
15class BiomeSource;
16class Block;
17class BlockPos;
18class BlockSource;
19class BlockVolume;
21class BoundingBox;
22class ChunkPos;
23class ChunkViewSource;
24class Dimension;
26class LevelChunk;
27class PerlinNoise;
29class Random;
30class SimplexNoise;
31// clang-format on
32
33class TheEndGenerator : public ::WorldGenerator {
34public:
35 // TheEndGenerator inner types declare
36 // clang-format off
37 struct ThreadData;
38 // clang-format on
39
40 // TheEndGenerator inner types define
41 struct ThreadData {
42 public:
43 // member variables
44 // NOLINTBEGIN
45 ::ll::TypedStorage<8, 262144, ::std::array<::Block const*, 32768>> blockBuffer;
46 // NOLINTEND
47 };
48
49 using CellPos2d = ::DividedPos2d<8>;
50
52
53public:
54 // member variables
55 // NOLINTBEGIN
56 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::PerlinNoise>> mLPerlinNoise1;
57 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::PerlinNoise>> mLPerlinNoise2;
58 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::PerlinNoise>> mPerlinNoise1;
59 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::SimplexNoise>> mIslandNoise;
60 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::PerlinSimplexNoise>> mMaterialAdjNoise;
61 ::ll::TypedStorage<
62 8,
63 168,
64 ::Bedrock::Threading::
65 InstancedThreadLocal<::TheEndGenerator::ThreadData, ::std::allocator<::TheEndGenerator::ThreadData>>>
66 generatorHelpersPool;
67 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::FixedBiomeSource>> mBiomeSource;
68 // NOLINTEND
69
70public:
71 // prevent constructor by default
72 TheEndGenerator();
73
74public:
75 // virtual functions
76 // NOLINTBEGIN
77 virtual ~TheEndGenerator() /*override*/;
78
79 virtual void loadChunk(::LevelChunk& lc, bool forceImmediateReplacementDataLoad) /*override*/;
80
81 virtual bool structurePostProcessChunk(::ChunkViewSource& neighborhoodIn) /*override*/;
82
83 virtual bool decorationPostProcessChunk(::ChunkViewSource& neighborhood) /*override*/;
84
85 virtual void
86 postProcessMobsAt(::BlockSource& region, int chunkWestBlock, int chunkNorthBlock, ::Random& random) /*override*/;
87
88 virtual void
89 prepareHeights(::BlockVolume& box, ::ChunkPos const& chunkPos, ::std::vector<short>* ZXheights, bool) /*override*/;
90
91 virtual ::std::optional<short> getPreliminarySurfaceLevel(::DividedPos2d<4> worldQuartPos) const /*override*/;
92
93 virtual ::BiomeArea getBiomeArea(::BoundingBox const& area, uint scale) const /*override*/;
94
95 virtual ::BiomeSource const& getBiomeSource() const /*override*/;
96
97 virtual ::BlockPos findSpawnPosition() const /*override*/;
98
99 virtual ::WorldGenerator::BlockVolumeDimensions getBlockVolumeDimensions() const /*override*/;
100
101 virtual void
102 decorateWorldGenLoadChunk(::Biome const&, ::LevelChunk&, ::BlockVolumeTarget&, ::Random&, ::ChunkPos const&) const
103 /*override*/;
104
105 virtual void
106 decorateWorldGenPostProcess(::Biome const& biome, ::LevelChunk& lc, ::BlockSource& source, ::Random& random) const
107 /*override*/;
108 // NOLINTEND
109
110public:
111 // member functions
112 // NOLINTBEGIN
113 MCAPI TheEndGenerator(::Dimension& dimension, uint seed, ::Biome const* overrideBiome);
114
115 MCAPI void _prepareHeights(::BlockVolume& box, ::ChunkPos const& chunkPos, ::std::vector<short>* ZXheights) const;
116
117 MCAPI void buildSurfaces(::BlockVolume& box, ::ChunkPos const& levelChunk, ::LevelChunk&);
118
119 MCAPI ::Util::MultidimensionalArray<float, 3, 3, 33> generateDensityCellsForChunk(::ChunkPos const& chunkPos) const;
120
121 MCAPI float getIslandHeightValue(int chunkX, int chunkZ, int cellOffsetX, int cellOffsetZ) const;
122 // NOLINTEND
123
124public:
125 // static functions
126 // NOLINTBEGIN
127 MCAPI static bool isOutsideCentralIslandArea(::ChunkPos const& chunkPos);
128 // NOLINTEND
129
130public:
131 // constructor thunks
132 // NOLINTBEGIN
133 MCAPI void* $ctor(::Dimension& dimension, uint seed, ::Biome const* overrideBiome);
134 // NOLINTEND
135
136public:
137 // destructor thunk
138 // NOLINTBEGIN
139 MCAPI void $dtor();
140 // NOLINTEND
141
142public:
143 // virtual function thunks
144 // NOLINTBEGIN
145 MCAPI void $loadChunk(::LevelChunk& lc, bool forceImmediateReplacementDataLoad);
146
147 MCAPI bool $structurePostProcessChunk(::ChunkViewSource& neighborhoodIn);
148
149 MCAPI bool $decorationPostProcessChunk(::ChunkViewSource& neighborhood);
150
151 MCAPI void $postProcessMobsAt(::BlockSource& region, int chunkWestBlock, int chunkNorthBlock, ::Random& random);
152
153 MCAPI void $prepareHeights(::BlockVolume& box, ::ChunkPos const& chunkPos, ::std::vector<short>* ZXheights, bool);
154
155 MCAPI ::std::optional<short> $getPreliminarySurfaceLevel(::DividedPos2d<4> worldQuartPos) const;
156
157 MCAPI ::BiomeArea $getBiomeArea(::BoundingBox const& area, uint scale) const;
158
159 MCAPI ::BiomeSource const& $getBiomeSource() const;
160
161 MCAPI ::BlockPos $findSpawnPosition() const;
162
163 MCFOLD ::WorldGenerator::BlockVolumeDimensions $getBlockVolumeDimensions() const;
164
165 MCFOLD void
166 $decorateWorldGenLoadChunk(::Biome const&, ::LevelChunk&, ::BlockVolumeTarget&, ::Random&, ::ChunkPos const&) const;
167
168 MCFOLD void
169 $decorateWorldGenPostProcess(::Biome const& biome, ::LevelChunk& lc, ::BlockSource& source, ::Random& random) const;
170
171
172 // NOLINTEND
173
174public:
175 // vftables
176 // NOLINTBEGIN
177 MCNAPI static void** $vftableForChunkSource();
178
180 // NOLINTEND
181};
Definition BiomeArea.h:11
Definition BiomeSource.h:24
Definition Biome.h:24
Definition BlockPos.h:21
Definition BlockSource.h:73
Definition BlockVolumeTarget.h:28
Definition BlockVolume.h:14
Definition Block.h:69
Definition BoundingBox.h:13
Definition ChunkPos.h:11
Definition ChunkViewSource.h:23
Definition Dimension.h:89
Definition DividedPos2d.h:7
Definition FixedBiomeSource.h:21
Definition LevelChunk.h:87
Definition PerlinNoise.h:14
Definition PerlinSimplexNoise.h:13
Definition Random.h:10
Definition SimplexNoise.h:14
static MCAPI void ** $vftableForChunkSource()
static MCAPI void ** $vftableForIPreliminarySurfaceProvider()
Definition MultidimensionalArray.h:12
STL namespace.
Definition TheEndGenerator.h:41
Definition WorldGenerator.h:39