LeviLamina
Loading...
Searching...
No Matches
SpawnPlacements.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/shared_types/legacy/Difficulty.h"
7#include "mc/world/level/chunk/EntityPredicateToken.h"
8#include "mc/world/level/chunk/EntitySpawnReason.h"
9#include "mc/world/level/chunk/FinalizeMobToken.h"
10#include "mc/world/level/chunk/HeightmapToken.h"
11#include "mc/world/level/chunk/ObstructionPredicateToken.h"
12#include "mc/world/level/chunk/PlacementTypeToken.h"
13
14// auto generated forward declare list
15// clang-format off
16class Block;
17class BlockPos;
18class BlockSource;
19class IRandom;
20class Mob;
21namespace br::spawn { class PlacementType; }
22namespace br::spawn { struct EntityType; }
23namespace br::spawn::transform { class PropertyBag; }
24// clang-format on
25
26namespace br::spawn {
27
28class SpawnPlacements {
29public:
30 // SpawnPlacements inner types declare
31 // clang-format off
32 struct EntityRecord;
33 class PlacementRecord;
34 // clang-format on
35
36 // SpawnPlacements inner types define
37 struct EntityRecord {
38 public:
39 // member variables
40 // NOLINTBEGIN
41 ::ll::TypedStorage<1, 1, ::br::spawn::HeightmapToken> mHeightmap;
42 ::ll::TypedStorage<2, 2, ::br::spawn::PlacementTypeToken> mPlacement;
43 ::ll::TypedStorage<2, 2, ::br::spawn::EntityPredicateToken> mEntity;
44 ::ll::TypedStorage<2, 2, ::br::spawn::ObstructionPredicateToken> mObstruction;
45 ::ll::TypedStorage<2, 2, ::br::spawn::FinalizeMobToken> mFinalizeMob;
46 // NOLINTEND
47 };
48
49 class PlacementRecord {
50 public:
51 // member variables
52 // NOLINTBEGIN
53 ::ll::TypedStorage<8, 8, ::br::spawn::SpawnPlacements&> mParent;
54 ::ll::TypedStorage<8, 8, uint64> mIdx;
55 // NOLINTEND
56
57 public:
58 // prevent constructor by default
59 PlacementRecord& operator=(PlacementRecord const&);
60 PlacementRecord(PlacementRecord const&);
61 PlacementRecord();
62 };
63
64public:
65 // member variables
66 // NOLINTBEGIN
67 ::ll::TypedStorage<8, 24, ::std::vector<::std::tuple<::std::string, ::br::spawn::SpawnPlacements::EntityRecord>>>
68 mEntityRecords;
69 ::ll::TypedStorage<
70 8,
71 24,
72 ::std::vector<::std::tuple<
73 ::std::string,
74 ::std::function<bool(
77 ::br::spawn::EntitySpawnReason&,
80 )>>>>
81 mEntityPredicates;
82 ::ll::TypedStorage<
83 8,
84 24,
85 ::std::vector<::std::tuple<
86 ::std::string,
87 ::std::function<bool(::BlockSource&, ::Mob const&, ::br::spawn::EntityType const&)>>>>
88 mObstructionPredicates;
89 ::ll::TypedStorage<
90 8,
91 24,
92 ::std::vector<::std::tuple<
93 ::std::string,
94 ::std::function<void(
95 ::BlockSource const&,
96 ::SharedTypes::Legacy::Difficulty,
97 ::br::spawn::EntitySpawnReason,
98 ::Mob&,
99 ::IRandom&,
101 )>>>>
102 mFinalizeMobTransform;
103 ::ll::TypedStorage<8, 24, ::std::vector<::std::tuple<::std::string, ::std::function<bool(::Block const&)>>>>
104 mHeightmapTypes;
105 ::ll::TypedStorage<8, 24, ::std::vector<::std::tuple<::std::string, ::std::unique_ptr<::br::spawn::PlacementType>>>>
106 mPlacementTypes;
107 ::ll::
108 TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::tuple<::br::spawn::EntityPredicateToken, bool>>>
109 mReloadableEntitySpawnKeys;
110 ::ll::TypedStorage<
111 8,
112 64,
113 ::std::unordered_map<::std::string, ::std::tuple<::br::spawn::ObstructionPredicateToken, bool>>>
114 mReloadableObstructionKeys;
115 // NOLINTEND
116
117public:
118 // member functions
119 // NOLINTBEGIN
120 MCAPI SpawnPlacements();
121
122 MCAPI void clearReloadablePredicates();
123
124 MCAPI bool isEntityPredicateKeyRecordable(::std::string_view key) const;
125
126 MCAPI bool isObstructionPredicateKeyRecordable(::std::string_view key) const;
127
128 MCAPI ::br::spawn::SpawnPlacements::PlacementRecord record(
129 ::std::string_view typeId,
130 ::br::spawn::PlacementTypeToken placementType,
131 ::br::spawn::HeightmapToken heightmap,
132 ::br::spawn::EntityPredicateToken spawnPlacement
133 );
134
135 MCAPI ::br::spawn::EntityPredicateToken record(
136 ::std::string_view key,
137 ::std::function<bool(
140 ::br::spawn::EntitySpawnReason&,
142 ::IRandom&
143 )> predicate
144 );
145
146 MCAPI ::br::spawn::EntityPredicateToken recordReloadable(
147 ::std::string_view key,
148 ::std::function<bool(
151 ::br::spawn::EntitySpawnReason&,
153 ::IRandom&
154 )> predicate
155 );
156
157 MCAPI ::br::spawn::ObstructionPredicateToken recordReloadable(
158 ::std::string_view key,
159 ::std::function<bool(::BlockSource&, ::Mob const&, ::br::spawn::EntityType const&)> predicate
160 );
161
162 MCAPI ~SpawnPlacements();
163 // NOLINTEND
164
165public:
166 // constructor thunks
167 // NOLINTBEGIN
168 MCAPI void* $ctor();
169 // NOLINTEND
170
171public:
172 // destructor thunk
173 // NOLINTBEGIN
174 MCAPI void $dtor();
175 // NOLINTEND
176};
177
178} // namespace br::spawn
Definition BlockPos.h:17
Definition BlockSource.h:71
Definition Block.h:41
Definition IRandom.h:10
Definition Mob.h:56
Definition PlacementType.h:14
Definition SpawnPlacements.h:49
Definition PropertyBag.h:7
Definition EntityType.h:16
Definition SpawnPlacements.h:37