LeviLamina
Loading...
Searching...
No Matches
ChestBlockActor.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/shared_types/legacy/LevelSoundEvent.h"
7#include "mc/legacy/ActorUniqueID.h"
8#include "mc/world/level/BlockPos.h"
9#include "mc/world/level/block/ChestType.h"
10#include "mc/world/level/block/actor/BlockActorRendererId.h"
11#include "mc/world/level/block/actor/BlockActorType.h"
12#include "mc/world/level/block/actor/RandomizableBlockActorFillingContainer.h"
13
14// auto generated forward declare list
15// clang-format off
16class AABB;
17class Actor;
18class BlockActor;
20class BlockSource;
21class CompoundTag;
22class Container;
24class DataLoadHelper;
25class ILevel;
26class ItemStack;
27class Player;
28class SaveContext;
29// clang-format on
30
31class ChestBlockActor : public ::RandomizableBlockActorFillingContainer {
32public:
33 // ChestBlockActor inner types declare
34 // clang-format off
35 class ChestCloser;
36 // clang-format on
37
38 // ChestBlockActor inner types define
39 class ChestCloser {
40 public:
41 // member variables
42 // NOLINTBEGIN
43 ::ll::TypedStorage<8, 8, ::ChestBlockActor&> mChest;
44 ::ll::TypedStorage<1, 1, bool> mIsUsed;
45 ::ll::TypedStorage<8, 8, ::ActorUniqueID> mActorId;
46 // NOLINTEND
47
48 public:
49 // prevent constructor by default
50 ChestCloser& operator=(ChestCloser const&);
51 ChestCloser(ChestCloser const&);
52 ChestCloser();
53
54 public:
55 // member functions
56 // NOLINTBEGIN
57 MCAPI void close();
58 // NOLINTEND
59 };
60
61public:
62 // member variables
63 // NOLINTBEGIN
64 ::ll::TypedStorage<4, 4, float> mSpeed;
65 ::ll::TypedStorage<1, 1, bool> mIsGlobalChest;
66 ::ll::TypedStorage<1, 1, bool> mAlwayCheckObstructionComponent;
67 ::ll::TypedStorage<4, 4, float> mObstructionHeight;
68 bool mPairLead : 1;
69 ::ll::TypedStorage<4, 4, float> mOpenness;
70 ::ll::TypedStorage<4, 4, float> mOldOpenness;
71 ::ll::TypedStorage<1, 1, bool> mIsOpen;
72 ::ll::TypedStorage<4, 4, int> mTickInterval;
73 bool mPairingChanged : 1;
74 bool mAlongX : 1;
75 bool mDeferredPairLoad : 1;
76 bool mConverted : 1;
77 ::ll::TypedStorage<4, 4, int> mDeferredPairX;
78 ::ll::TypedStorage<4, 4, int> mDeferredPairZ;
79 ::ll::TypedStorage<8, 8, ::ChestBlockActor*> mLargeChestPaired;
80 ::ll::TypedStorage<4, 12, ::BlockPos> mLargeChestPairedPosition;
81 ::ll::TypedStorage<1, 2, ::std::optional<::ChestType>> mChestType;
82 ::ll::TypedStorage<1, 1, bool> mIsFindable;
83 ::ll::TypedStorage<8, 64, ::std::unordered_set<::ActorUniqueID>> mOpenedByIds;
84 ::ll::TypedStorage<4, 4, int> mUpdateFlags;
85 ::ll::TypedStorage<8, 24, ::std::vector<::std::shared_ptr<::ChestBlockActor::ChestCloser>>> mChestClosers;
86 // NOLINTEND
87
88public:
89 // prevent constructor by default
90 ChestBlockActor();
91
92public:
93 // virtual functions
94 // NOLINTBEGIN
95 virtual ~ChestBlockActor() /*override*/;
96
97 virtual int getContainerSize() const /*override*/;
98
99 virtual int getMaxStackSize() const /*override*/;
100
101 virtual ::std::string getName() const /*override*/;
102
103 virtual ::ItemStack const& getItem(int slot) const /*override*/;
104
105 virtual void setItem(int slot, ::ItemStack const& item) /*override*/;
106
107 virtual void setItemWithForceBalance(int slot, ::ItemStack const& item, bool forceBalanced) /*override*/;
108
109 virtual void serverInitItemStackIds(
110 int containerSlot,
111 int count,
112 ::std::function<void(int, ::ItemStack const&)> onNetIdChanged
113 ) /*override*/;
114
115 virtual void loadItems(::CompoundTag const& base, ::ILevel& level);
116
117 virtual void load(::ILevel& level, ::CompoundTag const& base, ::DataLoadHelper& dataLoadHelper) /*override*/;
118
119 virtual bool saveItems(::CompoundTag& base, ::SaveContext const& saveContext) const;
120
121 virtual bool save(::CompoundTag& tag, ::SaveContext const& saveContext) const /*override*/;
122
123 virtual bool saveItemInstanceData(::CompoundTag& base, ::SaveContext const& saveContext) const /*override*/;
124
125 virtual void tick(::BlockSource& region) /*override*/;
126
127 virtual void triggerEvent(int b0, int b1) /*override*/;
128
129 virtual void startOpen(::Actor& actor) /*override*/;
130
131 virtual void onRemoved(::BlockSource& region) /*override*/;
132
133 virtual void stopOpen(::Actor& actor) /*override*/;
134
135 virtual void onChanged(::BlockSource& region) /*override*/;
136
137 virtual void onNeighborChanged(::BlockSource&, ::BlockPos const&) /*override*/;
138
139 virtual ::BlockActor* getCrackEntity(::BlockSource& region, ::BlockPos const& pos) /*override*/;
140
141 virtual int clearInventory(int resizeTo) /*override*/;
142
143 virtual ::Container* getContainer() /*override*/;
144
145 virtual ::Container const* getContainer() const /*override*/;
146
147 virtual void onMove() /*override*/;
148
149 virtual void onPlace(::BlockSource& region) /*override*/;
150
151 virtual void openBy(::Player& p);
152
153 virtual void setContainerChanged(int slot) /*override*/;
154
155 virtual bool canPushInItem(int slot, int face, ::ItemStack const& item) const /*override*/;
156
157 virtual bool canPullOutItem(int, int, ::ItemStack const&) const /*override*/;
158
159 virtual void getDebugText(
160 ::std::vector<::std::string>& outputInfo,
161 ::BlockPos const& debugPos,
162 ::BlockSource const* region
163 ) const /*override*/;
164
165 virtual void addContentChangeListener(::ContainerContentChangeListener* listener) /*override*/;
166
167 virtual void removeContentChangeListener(::ContainerContentChangeListener* listener) /*override*/;
168
169 virtual void initializeContainerContents(::BlockSource& region) /*override*/;
170
171 virtual ::std::unique_ptr<::BlockActorDataPacket> _getUpdatePacket(::BlockSource&) /*override*/;
172
173 virtual void _onUpdatePacket(::CompoundTag const& data, ::BlockSource& region) /*override*/;
174
175 virtual bool _canOpenThis(::BlockSource& region) const;
176
177 virtual ::AABB getObstructionAABB() const;
178
179 virtual bool _detectEntityObstruction(::BlockSource& region) const;
180
181 virtual ::SharedTypes::Legacy::LevelSoundEvent getOpenSound() const;
182
183 virtual ::SharedTypes::Legacy::LevelSoundEvent getCloseSound() const;
184 // NOLINTEND
185
186public:
187 // member functions
188 // NOLINTBEGIN
189 MCAPI ChestBlockActor(
190 ::BlockActorType type,
191 ::BlockActorRendererId renderId,
192 ::std::optional<::ChestType> chestType,
193 ::BlockPos const& pos
194 );
195
196 MCAPI void _closeChest(::BlockSource& region, ::Actor* actor);
197
198 MCAPI bool _detectBlockObstruction(::BlockSource& region) const;
199
200 MCAPI void _pairWith(::ChestBlockActor* chest, ::BlockSource& region, bool isLead);
201
202 MCAPI bool _saveClientSideState(::CompoundTag& tag, ::SaveContext const& saveContext) const;
203
204 MCAPI void _tryToPairWith(::BlockSource& region, ::BlockPos const& position);
205
206 MCAPI void _validatePairedChest(::BlockSource& region);
207
208 MCAPI bool canOpen(::BlockSource& region) const;
209
210 MCAPI bool canPairWith(::BlockActor* entity, ::BlockSource& region);
211
212 MCAPI void forceCloseChest(::BlockSource& region);
213
214 MCAPI ::std::weak_ptr<::ChestBlockActor::ChestCloser> getChestCloser(::Actor& closingActor);
215
216#ifdef LL_PLAT_C
217 MCAPI bool getIsGlobalChest();
218#endif
219
220 MCAPI ::ChestBlockActor& getMainChest();
221
222#ifdef LL_PLAT_C
223 MCAPI float getModelOffsetX() const;
224
225 MCAPI float getOldOpenness() const;
226#endif
227
228 MCAPI int getOpenCount() const;
229
230 MCAPI float getOpenness() const;
231
232 MCFOLD ::BlockPos const& getPairedChestPosition() const;
233
234 MCAPI bool isFindable() const;
235
236 MCAPI bool isLargeChest() const;
237
238 MCAPI bool isMainSubchest() const;
239
240 MCAPI void onMove(::BlockSource& region, ::BlockPos const& from, ::BlockPos const& to);
241
242 MCAPI void pairWithLeadChest(::ChestBlockActor* leadChest, ::BlockSource& region);
243
244 MCAPI void playCloseSound(::BlockSource& region);
245
246 MCAPI void playOpenSound(::BlockSource& region);
247
248 MCAPI void setFindable(bool isFindable);
249
250 MCAPI void unpair(::BlockSource& region);
251 // NOLINTEND
252
253public:
254 // static functions
255 // NOLINTBEGIN
256 MCAPI static ::std::unique_ptr<::ChestBlockActor>
257 createChestBlockEntity(::std::optional<::ChestType> const& chestType, ::BlockPos const& pos);
258 // NOLINTEND
259
260public:
261 // constructor thunks
262 // NOLINTBEGIN
263 MCAPI void* $ctor(
264 ::BlockActorType type,
265 ::BlockActorRendererId renderId,
266 ::std::optional<::ChestType> chestType,
267 ::BlockPos const& pos
268 );
269 // NOLINTEND
270
271public:
272 // destructor thunk
273 // NOLINTBEGIN
274 MCAPI void $dtor();
275 // NOLINTEND
276
277public:
278 // virtual function thunks
279 // NOLINTBEGIN
280 MCAPI int $getContainerSize() const;
281
282 MCFOLD int $getMaxStackSize() const;
283
284 MCAPI ::std::string $getName() const;
285
286 MCAPI ::ItemStack const& $getItem(int slot) const;
287
288 MCAPI void $setItem(int slot, ::ItemStack const& item);
289
290 MCFOLD void $setItemWithForceBalance(int slot, ::ItemStack const& item, bool forceBalanced);
291
292 MCAPI void $serverInitItemStackIds(
293 int containerSlot,
294 int count,
295 ::std::function<void(int, ::ItemStack const&)> onNetIdChanged
296 );
297
298 MCAPI void $loadItems(::CompoundTag const& base, ::ILevel& level);
299
300 MCAPI void $load(::ILevel& level, ::CompoundTag const& base, ::DataLoadHelper& dataLoadHelper);
301
302 MCAPI bool $saveItems(::CompoundTag& base, ::SaveContext const& saveContext) const;
303
304 MCAPI bool $save(::CompoundTag& tag, ::SaveContext const& saveContext) const;
305
306 MCAPI bool $saveItemInstanceData(::CompoundTag& base, ::SaveContext const& saveContext) const;
307
308 MCAPI void $tick(::BlockSource& region);
309
310 MCAPI void $triggerEvent(int b0, int b1);
311
312 MCAPI void $startOpen(::Actor& actor);
313
314 MCAPI void $onRemoved(::BlockSource& region);
315
316 MCAPI void $stopOpen(::Actor& actor);
317
318 MCAPI void $onChanged(::BlockSource& region);
319
320 MCFOLD void $onNeighborChanged(::BlockSource&, ::BlockPos const&);
321
322 MCAPI ::BlockActor* $getCrackEntity(::BlockSource& region, ::BlockPos const& pos);
323
324 MCAPI int $clearInventory(int resizeTo);
325
326 MCFOLD ::Container* $getContainer();
327
328 MCFOLD ::Container const* $getContainer() const;
329
330 MCFOLD void $onMove();
331
332 MCAPI void $onPlace(::BlockSource& region);
333
334 MCAPI void $openBy(::Player& p);
335
336 MCAPI void $setContainerChanged(int slot);
337
338 MCFOLD bool $canPushInItem(int slot, int face, ::ItemStack const& item) const;
339
340 MCFOLD bool $canPullOutItem(int, int, ::ItemStack const&) const;
341
342 MCAPI void $getDebugText(
343 ::std::vector<::std::string>& outputInfo,
344 ::BlockPos const& debugPos,
345 ::BlockSource const* region
346 ) const;
347
348 MCAPI void $addContentChangeListener(::ContainerContentChangeListener* listener);
349
350 MCAPI void $removeContentChangeListener(::ContainerContentChangeListener* listener);
351
352 MCAPI void $initializeContainerContents(::BlockSource& region);
353
354 MCAPI ::std::unique_ptr<::BlockActorDataPacket> $_getUpdatePacket(::BlockSource&);
355
356 MCFOLD void $_onUpdatePacket(::CompoundTag const& data, ::BlockSource& region);
357
358 MCAPI bool $_canOpenThis(::BlockSource& region) const;
359
360 MCAPI ::AABB $getObstructionAABB() const;
361
362 MCAPI bool $_detectEntityObstruction(::BlockSource& region) const;
363
364 MCAPI ::SharedTypes::Legacy::LevelSoundEvent $getOpenSound() const;
365
366 MCAPI ::SharedTypes::Legacy::LevelSoundEvent $getCloseSound() const;
367
368
369 // NOLINTEND
370
371public:
372 // vftables
373 // NOLINTBEGIN
374 MCAPI static void** $vftableForFillingContainer();
375
376 MCAPI static void** $vftableForRandomizableBlockActorContainerBase();
377 // NOLINTEND
378};
Definition AABB.h:18
Definition Actor.h:125
Definition BlockActorDataPacket.h:19
Definition BlockActor.h:30
Definition BlockPos.h:21
Definition BlockSource.h:73
Definition ChestBlockActor.h:39
Definition CompoundTag.h:23
Definition ContainerContentChangeListener.h:5
Definition Container.h:34
Definition DataLoadHelper.h:20
Definition ILevel.h:219
Definition ItemStack.h:35
Definition Player.h:137
static MCAPI void ** $vftableForFillingContainer()
Definition SaveContext.h:5
STL namespace.