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