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*/ = default;
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 ::Util::MultidimensionalArray<float, 3, 3, 33> generateDensityCellsForChunk(::ChunkPos const& chunkPos) const;
124
125 MCAPI float
126 getIslandHeightValue(int const chunkX, int const chunkZ, int const cellOffsetX, int const cellOffsetZ) const;
127 // NOLINTEND
128
129public:
130 // constructor thunks
131 // NOLINTBEGIN
132 MCAPI void* $ctor(::Dimension& dimension, uint seed, ::Biome const* overrideBiome);
133 // NOLINTEND
134
135public:
136 // virtual function thunks
137 // NOLINTBEGIN
138 MCAPI void $loadChunk(::LevelChunk& levelChunk, bool forceImmediateReplacementDataLoad);
139
140 MCAPI bool $structurePostProcessChunk(::ChunkViewSource& neighborhoodIn);
141
142 MCAPI bool $decorationPostProcessChunk(::ChunkViewSource& neighborhood);
143
144 MCAPI void $postProcessMobsAt(::BlockSource& region, int chunkWestBlock, int chunkNorthBlock, ::Random& random);
145
146 MCAPI void $prepareHeights(
147 ::BlockVolume& box,
148 ::ChunkPos const& chunkPos,
149 ::std::vector<short>* ZXheights,
150 bool factorInBeardsAndShavers
151 );
152
153 MCAPI ::std::optional<short> $getPreliminarySurfaceLevel(::DividedPos2d<4> worldQuartPos) const;
154
155 MCAPI ::BiomeArea $getBiomeArea(::BoundingBox const& area, uint scale) const;
156
157 MCAPI ::BiomeSource const& $getBiomeSource() const;
158
159 MCFOLD ::BlockPos $findSpawnPosition() const;
160
161 MCAPI ::WorldGenerator::BlockVolumeDimensions $getBlockVolumeDimensions() const;
162
163 MCFOLD void $decorateWorldGenLoadChunk(
164 ::Biome const& biome,
165 ::LevelChunk& lc,
166 ::BlockVolumeTarget& target,
167 ::Random& random,
168 ::ChunkPos const& pos
169 ) const;
170
171 MCAPI void
172 $decorateWorldGenPostProcess(::Biome const& biome, ::LevelChunk& lc, ::BlockSource& source, ::Random& random) const;
173
174
175 // NOLINTEND
176};
Definition BiomeArea.h:10
Definition BiomeSource.h:23
Definition Biome.h:23
Definition BlockPos.h:17
Definition BlockSource.h:71
Definition BlockVolumeTarget.h:28
Definition BlockVolume.h:14
Definition Block.h:41
Definition BoundingBox.h:13
Definition ChunkPos.h:13
Definition ChunkViewSource.h:22
Definition Dimension.h:86
Definition DividedPos2d.h:7
Definition FixedBiomeSource.h:21
Definition LevelChunk.h:77
Definition PerlinNoise.h:12
Definition PerlinSimplexNoise.h:11
Definition Random.h:10
Definition SimplexNoise.h:13
Definition MultidimensionalArray.h:12
STL namespace.
Definition TheEndGenerator.h:41
Definition WorldGenerator.h:43