Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
FlatWorldGenerator.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/buffer_span.h"
7#include "mc/world/level/block/BlockVolume.h"
8#include "mc/world/level/levelgen/WorldGenerator.h"
9
10// auto generated forward declare list
11// clang-format off
12class Biome;
13class BiomeArea;
14class BiomeSource;
15class Block;
16class BlockPos;
17class BlockSource;
19class BoundingBox;
20class ChunkPos;
21class ChunkViewSource;
22class Dimension;
24class HashedString;
25class LevelChunk;
26class Random;
27namespace Json { class Value; }
28// clang-format on
29
30class FlatWorldGenerator : public ::WorldGenerator {
31public:
32 // FlatWorldGenerator inner types define
33 using LayerList = ::std::vector<::Block const*>;
34
35public:
36 // member variables
37 // NOLINTBEGIN
38 ::ll::TypedStorage<8, 24, ::std::vector<::Block const*>> mPrototypeBlocks;
39 ::ll::TypedStorage<8, 40, ::BlockVolume> mPrototype;
40 ::ll::TypedStorage<1, 1, bool> mIsVoidWorld;
41 ::ll::TypedStorage<8, 8, ::Biome const*> mBiome;
42 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::FixedBiomeSource>> mBiomeSource;
43 ::ll::TypedStorage<2, 2, short> mMaxHeight;
44 // NOLINTEND
45
46public:
47 // prevent constructor by default
48 FlatWorldGenerator();
49
50public:
51 // virtual functions
52 // NOLINTBEGIN
53 virtual void loadChunk(::LevelChunk& lc, bool forceImmediateReplacementDataLoad) /*override*/;
54
55 virtual bool structurePostProcessChunk(::ChunkViewSource&) /*override*/;
56
57 virtual bool decorationPostProcessChunk(::ChunkViewSource& neighborhood) /*override*/;
58
59 virtual ::HashedString findStructureFeatureTypeAt(::BlockPos const& pos) /*override*/;
60
61 virtual bool isStructureFeatureTypeAt(::BlockPos const& pos, ::HashedString type) const /*override*/;
62
63 virtual bool findNearestStructureFeature(
64 ::HashedString feature,
65 ::BlockPos const& origin,
66 ::BlockPos& pos,
67 bool mustBeInNewChunks,
68 ::std::optional<::HashedString> biomeTag,
69 int searchRadiusCells
70 ) /*override*/;
71
72 virtual void
73 prepareHeights(::BlockVolume& box, ::ChunkPos const&, ::std::vector<short>* zxHeights, bool) /*override*/;
74
75 virtual void garbageCollectBlueprints(::buffer_span<::ChunkPos> activeChunks) /*override*/;
76
77 virtual ::BiomeArea getBiomeArea(::BoundingBox const& area, uint scale) const /*override*/;
78
79 virtual ::BlockPos findSpawnPosition() const /*override*/;
80
81 virtual ::BiomeSource const& getBiomeSource() const /*override*/;
82
83 virtual ::WorldGenerator::BlockVolumeDimensions getBlockVolumeDimensions() const /*override*/;
84
85 virtual void
86 decorateWorldGenLoadChunk(::Biome const&, ::LevelChunk&, ::BlockVolumeTarget&, ::Random&, ::ChunkPos const&) const
87 /*override*/;
88
89 virtual void decorateWorldGenPostProcess(::Biome const&, ::LevelChunk&, ::BlockSource&, ::Random&) const
90 /*override*/;
91 // NOLINTEND
92
93public:
94 // member functions
95 // NOLINTBEGIN
96 MCAPI FlatWorldGenerator(::Dimension& dimension, uint, ::Json::Value const& generationOptionsJSON);
97 // NOLINTEND
98
99public:
100 // constructor thunks
101 // NOLINTBEGIN
102 MCAPI void* $ctor(::Dimension& dimension, uint, ::Json::Value const& generationOptionsJSON);
103 // NOLINTEND
104
105public:
106 // virtual function thunks
107 // NOLINTBEGIN
108 MCAPI void $loadChunk(::LevelChunk& lc, bool forceImmediateReplacementDataLoad);
109
110 MCFOLD bool $structurePostProcessChunk(::ChunkViewSource&);
111
112 MCAPI bool $decorationPostProcessChunk(::ChunkViewSource& neighborhood);
113
114#ifdef LL_PLAT_S
115 MCAPI ::HashedString $findStructureFeatureTypeAt(::BlockPos const& pos);
116#else // LL_PLAT_C
117 MCFOLD ::HashedString $findStructureFeatureTypeAt(::BlockPos const& pos);
118#endif
119
120 MCAPI bool $isStructureFeatureTypeAt(::BlockPos const& pos, ::HashedString type) const;
121
122 MCAPI bool $findNearestStructureFeature(
123 ::HashedString feature,
124 ::BlockPos const& origin,
125 ::BlockPos& pos,
126 bool mustBeInNewChunks,
127 ::std::optional<::HashedString> biomeTag,
128 int searchRadiusCells
129 );
130
131 MCAPI void $prepareHeights(::BlockVolume& box, ::ChunkPos const&, ::std::vector<short>* zxHeights, bool);
132
133 MCFOLD void $garbageCollectBlueprints(::buffer_span<::ChunkPos> activeChunks);
134
135 MCAPI ::BiomeArea $getBiomeArea(::BoundingBox const& area, uint scale) const;
136
137 MCAPI ::BlockPos $findSpawnPosition() const;
138
139 MCAPI ::BiomeSource const& $getBiomeSource() const;
140
141 MCAPI ::WorldGenerator::BlockVolumeDimensions $getBlockVolumeDimensions() const;
142
143 MCFOLD void
144 $decorateWorldGenLoadChunk(::Biome const&, ::LevelChunk&, ::BlockVolumeTarget&, ::Random&, ::ChunkPos const&) const;
145
146 MCFOLD void $decorateWorldGenPostProcess(::Biome const&, ::LevelChunk&, ::BlockSource&, ::Random&) const;
147
148
149 // NOLINTEND
150};
Definition BiomeArea.h:10
Definition BiomeSource.h:23
Definition Biome.h:23
Definition BlockPos.h:14
Definition BlockSource.h:72
Definition BlockVolumeTarget.h:28
Definition BlockVolume.h:14
Definition Block.h:42
Definition BoundingBox.h:13
Definition ChunkPos.h:13
Definition ChunkViewSource.h:23
Definition Dimension.h:86
Definition FixedBiomeSource.h:21
Definition HashedString.h:5
Definition Value.h:16
Definition LevelChunk.h:76
Definition Random.h:10
Definition buffer_span.h:6