LeviLamina
Loading...
Searching...
No Matches
BlockActor.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/container/EnumSet.h"
7#include "mc/safety/RedactableString.h"
8#include "mc/world/actor/ActorTerrainInterlockData.h"
9#include "mc/world/level/BlockPos.h"
10#include "mc/world/level/block/actor/BlockActorRendererId.h"
11#include "mc/world/level/block/actor/BlockActorType.h"
12#include "mc/world/phys/AABB.h"
13
14// auto generated forward declare list
15// clang-format off
16class Actor;
17class Block;
19class BlockSource;
20class CompoundTag;
21class Container;
22class DataLoadHelper;
24class ILevel;
25class LevelChunk;
27class Player;
28class SaveContext;
29class Vec3;
30// clang-format on
31
32class BlockActor {
33public:
34 // BlockActor inner types define
35 enum class Property : uchar {
36 Changed = 0,
37 Movable = 1,
38 ClientSideOnly = 2,
39 SaveCustomName = 3,
40 CanRenderCustomName = 4,
41 Count = 5,
42 };
43
44 using MapIdType = ::std::unordered_map<::std::string, ::BlockActorType>;
45
46 using MapTypeId = ::std::unordered_map<::BlockActorType, ::std::string>;
47
49
50public:
51 LLAPI void refresh(optional_ref<class BlockSource> blockSource = std::nullopt);
52
53 LLNDAPI static std::shared_ptr<BlockActor> create(class CompoundTag const& nbt);
54
55 LLNDAPI static std::shared_ptr<BlockActor> create(class CompoundTag const& nbt, class BlockPos const& pos);
56
57public:
58 // member variables
59 // NOLINTBEGIN
60 ::ll::TypedStorage<4, 4, int> mTickCount;
61 ::ll::TypedStorage<4, 4, int> mRepairCost;
62 ::ll::TypedStorage<4, 12, ::BlockPos> mPosition;
63 ::ll::TypedStorage<4, 24, ::AABB> mBB;
64 ::ll::TypedStorage<1, 1, ::BlockActorRendererId> mRendererId;
65 ::ll::TypedStorage<1, 1, ::BlockActorType const> mType;
66 ::ll::TypedStorage<1, 1, ::Bedrock::EnumSet<::BlockActor::Property, 5>> mProperties;
67 ::ll::TypedStorage<8, 72, ::Bedrock::Safety::RedactableString> mCustomName;
68 ::ll::TypedStorage<8, 24, ::ActorTerrainInterlockData> mTerrainInterlockData;
69 // NOLINTEND
70
71public:
72 // prevent constructor by default
73 BlockActor();
74
75public:
76 // virtual functions
77 // NOLINTBEGIN
78 virtual ~BlockActor();
79
80 virtual void load(::ILevel&, ::CompoundTag const& tag, ::DataLoadHelper&);
81
82 virtual bool save(::CompoundTag& tag, ::SaveContext const&) const;
83
84 virtual bool saveItemInstanceData(::CompoundTag& tag, ::SaveContext const& saveContext) const;
85
86 virtual void saveBlockData(::CompoundTag&, ::BlockSource&) const;
87
88 virtual void loadBlockData(::CompoundTag const&, ::BlockSource&, ::DataLoadHelper&);
89
90 virtual void onCustomTagLoadDone(::BlockSource&);
91
92 virtual bool isPermanentlyRendered() const;
93
94 virtual bool isWithinRenderDistance(::Vec3 const& cameraPosition) const;
95
96 virtual void tick(::BlockSource& region);
97
98 virtual void onChanged(::BlockSource&);
99
100 virtual void onPlace(::BlockSource&);
101
102 virtual void onMove();
103
104 virtual void onRemoved(::BlockSource&);
105
106 virtual bool isPreserved(::BlockSource&) const;
107
108 virtual bool shouldPreserve(::BlockSource&);
109
110 virtual void triggerEvent(int, int);
111
112 virtual void executeEvent(::BlockSource&, ::BlockPos const&, ::Block const&, ::std::string const&, ::Actor&);
113
114 virtual void onNeighborChanged(::BlockSource&, ::BlockPos const&);
115
116 virtual float getShadowRadius(::BlockSource&) const;
117
118 virtual bool hasAlphaLayer() const;
119
120 virtual ::BlockActor* getCrackEntity(::BlockSource&, ::BlockPos const&);
121
122 virtual ::AABB getCollisionShape(::IConstBlockSource const&) const;
123
124 virtual void getDebugText(
125 ::std::vector<::std::string>& outputInfo,
126 ::BlockPos const& debugPos,
127 ::BlockSource const* region
128 ) const;
129
130 virtual ::Bedrock::Safety::RedactableString const& getCustomName() const;
131
132 virtual ::std::string getName() const;
133
134 virtual void setCustomName(::Bedrock::Safety::RedactableString const& name);
135
136 virtual ::std::string getImmersiveReaderText(::BlockSource&);
137
138 virtual ::PistonBlockActor* getOwningPiston(::BlockSource&);
139
140 virtual ::PistonBlockActor const* getOwningPiston(::BlockSource&) const;
141
142 virtual ::Container* getContainer();
143
144 virtual ::Container const* getContainer() const;
145
146 virtual void eraseLootTable();
147
148 virtual void onChunkLoaded(::LevelChunk&);
149
150 virtual void onChunkUnloaded(::LevelChunk&);
151
152 virtual void onSubChunkLoaded(::LevelChunk&, short, bool);
153
154 virtual ::std::vector<::std::string> getUgcStrings(::CompoundTag const&) const;
155
156 virtual ::std::vector<::std::string> getFilteredUgcStrings(::CompoundTag const&) const;
157
158 virtual void setUgcStrings(::CompoundTag&, ::std::vector<::std::string> const&) const;
159
160 virtual void setFilteredUgcStrings(::CompoundTag&, ::std::vector<::std::string> const&) const;
161
162 virtual bool validateData(::CompoundTag const&) const;
163
164 virtual void fixupOnLoad(::LevelChunk&);
165
166 virtual ::std::unique_ptr<::BlockActorDataPacket> _getUpdatePacket(::BlockSource&);
167
168 virtual void _onUpdatePacket(::CompoundTag const&, ::BlockSource&);
169
170 virtual bool _playerCanUpdate(::Player const&) const;
171 // NOLINTEND
172
173public:
174 // member functions
175 // NOLINTBEGIN
176 MCAPI BlockActor(::BlockActorType type, ::BlockPos const& pos, ::BlockActorRendererId rendererId);
177
178 MCAPI_C ::Bedrock::Safety::RedactableString getDisplayName() const;
179
180 MCAPI bool onUpdatePacket(::CompoundTag const& data, ::BlockSource& region, ::Player const* fromPlayer);
181 // NOLINTEND
182
183public:
184 // static functions
185 // NOLINTBEGIN
186 MCAPI static ::std::unordered_map<::BlockActorType, ::std::string> const& _getClassIdMap();
187
188 MCAPI static ::std::shared_ptr<::BlockActor>
189 loadStatic(::ILevel& level, ::CompoundTag const& tag, ::DataLoadHelper& dataLoadHelper);
190 // NOLINTEND
191
192public:
193 // constructor thunks
194 // NOLINTBEGIN
195 MCAPI void* $ctor(::BlockActorType type, ::BlockPos const& pos, ::BlockActorRendererId rendererId);
196 // NOLINTEND
197
198public:
199 // destructor thunk
200 // NOLINTBEGIN
201 MCAPI void $dtor();
202 // NOLINTEND
203
204public:
205 // virtual function thunks
206 // NOLINTBEGIN
207 MCAPI void $load(::ILevel&, ::CompoundTag const& tag, ::DataLoadHelper&);
208
209 MCAPI bool $save(::CompoundTag& tag, ::SaveContext const&) const;
210
211 MCAPI bool $saveItemInstanceData(::CompoundTag& tag, ::SaveContext const& saveContext) const;
212
213 MCFOLD void $saveBlockData(::CompoundTag&, ::BlockSource&) const;
214
215 MCFOLD void $loadBlockData(::CompoundTag const&, ::BlockSource&, ::DataLoadHelper&);
216
217 MCFOLD void $onCustomTagLoadDone(::BlockSource&);
218
219 MCFOLD bool $isPermanentlyRendered() const;
220
221 MCAPI bool $isWithinRenderDistance(::Vec3 const& cameraPosition) const;
222
223 MCFOLD void $tick(::BlockSource& region);
224
225 MCFOLD void $onChanged(::BlockSource&);
226
227 MCFOLD void $onPlace(::BlockSource&);
228
229 MCFOLD void $onMove();
230
231 MCFOLD void $onRemoved(::BlockSource&);
232
233 MCFOLD bool $isPreserved(::BlockSource&) const;
234
235 MCFOLD bool $shouldPreserve(::BlockSource&);
236
237 MCFOLD void $triggerEvent(int, int);
238
239 MCFOLD void $executeEvent(::BlockSource&, ::BlockPos const&, ::Block const&, ::std::string const&, ::Actor&);
240
241 MCFOLD void $onNeighborChanged(::BlockSource&, ::BlockPos const&);
242
243 MCFOLD float $getShadowRadius(::BlockSource&) const;
244
245 MCFOLD bool $hasAlphaLayer() const;
246
247 MCFOLD ::BlockActor* $getCrackEntity(::BlockSource&, ::BlockPos const&);
248
249 MCAPI ::AABB $getCollisionShape(::IConstBlockSource const&) const;
250
251 MCAPI void $getDebugText(
252 ::std::vector<::std::string>& outputInfo,
253 ::BlockPos const& debugPos,
254 ::BlockSource const* region
255 ) const;
256
257 MCFOLD ::Bedrock::Safety::RedactableString const& $getCustomName() const;
258
259 MCFOLD ::std::string $getName() const;
260
261 MCAPI void $setCustomName(::Bedrock::Safety::RedactableString const& name);
262
263 MCFOLD ::std::string $getImmersiveReaderText(::BlockSource&);
264
265 MCFOLD ::PistonBlockActor* $getOwningPiston(::BlockSource&);
266
267 MCFOLD ::PistonBlockActor const* $getOwningPiston(::BlockSource&) const;
268
269 MCFOLD ::Container* $getContainer();
270
271 MCFOLD ::Container const* $getContainer() const;
272
273 MCFOLD void $eraseLootTable();
274
275 MCFOLD void $onChunkLoaded(::LevelChunk&);
276
277 MCFOLD void $onChunkUnloaded(::LevelChunk&);
278
279 MCFOLD void $onSubChunkLoaded(::LevelChunk&, short, bool);
280
281 MCFOLD ::std::vector<::std::string> $getUgcStrings(::CompoundTag const&) const;
282
283 MCFOLD ::std::vector<::std::string> $getFilteredUgcStrings(::CompoundTag const&) const;
284
285 MCFOLD void $setUgcStrings(::CompoundTag&, ::std::vector<::std::string> const&) const;
286
287 MCFOLD void $setFilteredUgcStrings(::CompoundTag&, ::std::vector<::std::string> const&) const;
288
289 MCFOLD bool $validateData(::CompoundTag const&) const;
290
291 MCFOLD void $fixupOnLoad(::LevelChunk&);
292
293 MCFOLD ::std::unique_ptr<::BlockActorDataPacket> $_getUpdatePacket(::BlockSource&);
294
295 MCFOLD void $_onUpdatePacket(::CompoundTag const&, ::BlockSource&);
296
297 MCFOLD bool $_playerCanUpdate(::Player const&) const;
298
299
300 // NOLINTEND
301
302public:
303 // vftables
304 // NOLINTBEGIN
305 MCAPI static void** $vftable();
306 // NOLINTEND
307};
Definition Actor.h:105
Definition EnumSet.h:8
Definition RedactableString.h:10
Definition BlockActorDataPacket.h:19
Definition BlockPos.h:19
Definition BlockSource.h:68
Definition Block.h:43
Definition CompoundTag.h:23
Definition Container.h:33
Definition DataLoadHelper.h:20
Definition IConstBlockSource.h:25
Definition ILevel.h:214
Definition LevelChunk.h:79
Definition PistonBlockActor.h:26
Definition Player.h:125
Definition SaveContext.h:5
Definition Vec3.h:10
Definition optional_ref.h:10