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& levelChunk, 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 prepareHeights(
89 ::BlockVolume& box,
90 ::ChunkPos const& chunkPos,
91 ::std::vector<short>* ZXheights,
92 bool factorInBeardsAndShavers
93 ) /*override*/;
94
95 virtual ::std::optional<short> getPreliminarySurfaceLevel(::DividedPos2d<4> worldQuartPos) const /*override*/;
96
97 virtual ::BiomeArea getBiomeArea(::BoundingBox const& area, uint scale) const /*override*/;
98
99 virtual ::BiomeSource const& getBiomeSource() const /*override*/;
100
101 virtual ::BlockPos findSpawnPosition() const /*override*/;
102
103 virtual ::WorldGenerator::BlockVolumeDimensions getBlockVolumeDimensions() const /*override*/;
104
105 virtual void decorateWorldGenLoadChunk(
106 ::Biome const& biome,
107 ::LevelChunk& lc,
108 ::BlockVolumeTarget& target,
109 ::Random& random,
110 ::ChunkPos const& pos
111 ) const /*override*/;
112
113 virtual void
114 decorateWorldGenPostProcess(::Biome const& biome, ::LevelChunk& lc, ::BlockSource& source, ::Random& random) const
115 /*override*/;
116 // NOLINTEND
117
118public:
119 // member functions
120 // NOLINTBEGIN
121 MCAPI TheEndGenerator(::Dimension& dimension, uint seed, ::Biome const* overrideBiome);
122
123 MCAPI void _prepareHeights(::BlockVolume& box, ::ChunkPos const& chunkPos, ::std::vector<short>* ZXheights) const;
124
125 MCAPI void buildSurfaces(::BlockVolume& box, ::ChunkPos const& chunkPos, ::LevelChunk& levelChunk);
126
127 MCAPI ::Util::MultidimensionalArray<float, 3, 3, 33> generateDensityCellsForChunk(::ChunkPos const& chunkPos) const;
128
129 MCAPI float getIslandHeightValue(int chunkX, int chunkZ, int cellOffsetX, int cellOffsetZ) const;
130 // NOLINTEND
131
132public:
133 // constructor thunks
134 // NOLINTBEGIN
135 MCAPI void* $ctor(::Dimension& dimension, uint seed, ::Biome const* overrideBiome);
136 // NOLINTEND
137
138public:
139 // destructor thunk
140 // NOLINTBEGIN
141 MCAPI void $dtor();
142 // NOLINTEND
143
144public:
145 // virtual function thunks
146 // NOLINTBEGIN
147 MCAPI void $loadChunk(::LevelChunk& levelChunk, bool forceImmediateReplacementDataLoad);
148
149 MCAPI bool $structurePostProcessChunk(::ChunkViewSource& neighborhoodIn);
150
151 MCAPI bool $decorationPostProcessChunk(::ChunkViewSource& neighborhood);
152
153 MCAPI void $postProcessMobsAt(::BlockSource& region, int chunkWestBlock, int chunkNorthBlock, ::Random& random);
154
155 MCAPI void $prepareHeights(
156 ::BlockVolume& box,
157 ::ChunkPos const& chunkPos,
158 ::std::vector<short>* ZXheights,
159 bool factorInBeardsAndShavers
160 );
161
162 MCAPI ::std::optional<short> $getPreliminarySurfaceLevel(::DividedPos2d<4> worldQuartPos) const;
163
164 MCAPI ::BiomeArea $getBiomeArea(::BoundingBox const& area, uint scale) const;
165
166 MCAPI ::BiomeSource const& $getBiomeSource() const;
167
168 MCFOLD ::BlockPos $findSpawnPosition() const;
169
170 MCFOLD ::WorldGenerator::BlockVolumeDimensions $getBlockVolumeDimensions() const;
171
172 MCFOLD void $decorateWorldGenLoadChunk(
173 ::Biome const& biome,
174 ::LevelChunk& lc,
175 ::BlockVolumeTarget& target,
176 ::Random& random,
177 ::ChunkPos const& pos
178 ) const;
179
180 MCFOLD void
181 $decorateWorldGenPostProcess(::Biome const& biome, ::LevelChunk& lc, ::BlockSource& source, ::Random& random) const;
182
183
184 // NOLINTEND
185
186public:
187 // vftables
188 // NOLINTBEGIN
189 MCNAPI static void** $vftableForChunkSource();
190
192 // NOLINTEND
193};
Definition BiomeArea.h:11
Definition BiomeSource.h:20
Definition Biome.h:23
Definition BlockPos.h:19
Definition BlockSource.h:68
Definition BlockVolumeTarget.h:29
Definition BlockVolume.h:13
Definition Block.h:43
Definition BoundingBox.h:13
Definition ChunkPos.h:11
Definition ChunkViewSource.h:22
Definition Dimension.h:85
Definition DividedPos2d.h:7
Definition FixedBiomeSource.h:21
Definition LevelChunk.h:79
Definition PerlinNoise.h:12
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