LeviLamina
Loading...
Searching...
No Matches
FurnaceBlockActor.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/string/HashedString.h"
7#include "mc/deps/shared_types/legacy/ContainerType.h"
8#include "mc/deps/shared_types/legacy/LevelSoundEvent.h"
9#include "mc/legacy/ActorUniqueID.h"
10#include "mc/world/Container.h"
11#include "mc/world/item/ItemInstance.h"
12#include "mc/world/item/ItemStack.h"
13#include "mc/world/level/block/actor/BlockActor.h"
14#include "mc/world/level/block/actor/BlockActorType.h"
15
16// auto generated forward declare list
17// clang-format off
18class Actor;
19class Block;
21class BlockPos;
22class BlockSource;
23class CompoundTag;
24class DataLoadHelper;
25class ILevel;
26class Item;
27class ItemStackBase;
28class LevelChunk;
29class Recipes;
30class SaveContext;
31// clang-format on
32
33class FurnaceBlockActor : public ::BlockActor, public ::Container {
34public:
35 // FurnaceBlockActor inner types define
36 enum : int {
37 SlotIngredient = 0,
38 SlotFuel = 1,
39 SlotResult = 2,
40 NumItems = 3,
41 };
42
43public:
44 // member variables
45 // NOLINTBEGIN
46 ::ll::TypedStorage<4, 4, int> mLitTime;
47 ::ll::TypedStorage<4, 4, int> mLitDuration;
48 ::ll::TypedStorage<4, 4, int> mCookingProgress;
49 ::ll::TypedStorage<4, 4, uint> mStoredXP;
50 ::ll::TypedStorage<8, 456, ::ItemStack[3]> mItems;
51 ::ll::TypedStorage<1, 3, bool[3]> mDirty;
52 ::ll::TypedStorage<8, 64, ::std::unordered_set<::ActorUniqueID>> mActors;
53 ::ll::TypedStorage<8, 48, ::HashedString const> mRecipeTag;
54 ::ll::TypedStorage<4, 4, int const> mBurnInterval;
55 ::ll::TypedStorage<1, 1, bool> mOpenByLocalPlayer;
56 ::ll::TypedStorage<4, 4, ::SharedTypes::Legacy::LevelSoundEvent> mSmeltSoundEvent;
57 ::ll::TypedStorage<4, 4, int> mSoundTick;
58 ::ll::TypedStorage<4, 4, int> mSoundTickTarget;
59 ::ll::TypedStorage<8, 8, ::Block const&> mUnlitFurnace;
60 ::ll::TypedStorage<8, 8, ::Block const&> mLitFurnace;
61 ::ll::TypedStorage<8, 128, ::ItemInstance> mLastFuelItem;
62 ::ll::TypedStorage<1, 1, bool> mNoDrop;
63 ::ll::TypedStorage<1, 1, bool> mNeedsLitStateFixup;
64 // NOLINTEND
65
66public:
67 // prevent constructor by default
68 FurnaceBlockActor& operator=(FurnaceBlockActor const&);
69 FurnaceBlockActor(FurnaceBlockActor const&);
70 FurnaceBlockActor();
71
72public:
73 // virtual functions
74 // NOLINTBEGIN
75 virtual ::ItemStack const& getItem(int slot) const /*override*/;
76
77 virtual void setItem(int slot, ::ItemStack const& item) /*override*/;
78
79 virtual ::std::string getName() const /*override*/;
80
81 virtual int getMaxStackSize() const /*override*/;
82
83 virtual int getContainerSize() const /*override*/;
84
85 virtual void onRemoved(::BlockSource&) /*override*/;
86
87 virtual void startOpen(::Actor& actor) /*override*/;
88
89 virtual void stopOpen(::Actor& actor) /*override*/;
90
91 virtual bool canPushInItem(int slot, int face, ::ItemStack const& item) const /*override*/;
92
93 virtual bool canPullOutItem(int slot, int face, ::ItemStack const& item) const /*override*/;
94
95 virtual ::Container* getContainer() /*override*/;
96
97 virtual ::Container const* getContainer() const /*override*/;
98
99 virtual void load(::ILevel& level, ::CompoundTag const& base, ::DataLoadHelper& dataLoadHelper) /*override*/;
100
101 virtual void onCustomTagLoadDone(::BlockSource& region) /*override*/;
102
103 virtual bool save(::CompoundTag& tag, ::SaveContext const& saveContext) const /*override*/;
104
105 virtual void tick(::BlockSource& region) /*override*/;
106
107 virtual void onNeighborChanged(::BlockSource& region, ::BlockPos const&) /*override*/;
108
109 virtual void onMove() /*override*/;
110
111 virtual void serverInitItemStackIds(
112 int containerSlot,
113 int count,
114 ::std::function<void(int, ::ItemStack const&)> onNetIdChanged
115 ) /*override*/;
116
117 virtual void fixupOnLoad(::LevelChunk& lc) /*override*/;
118
119 virtual ::std::unique_ptr<::BlockActorDataPacket> _getUpdatePacket(::BlockSource&) /*override*/;
120
121 virtual void _onUpdatePacket(::CompoundTag const& data, ::BlockSource&) /*override*/;
122 // NOLINTEND
123
124public:
125 // member functions
126 // NOLINTBEGIN
127 MCAPI explicit FurnaceBlockActor(::BlockPos const& pos);
128
129 MCAPI FurnaceBlockActor(
130 ::BlockActorType blockActorType,
131 ::BlockPos const& pos,
132 ::HashedString const& recipeTag,
133 ::SharedTypes::Legacy::LevelSoundEvent smeltSound,
134 ::SharedTypes::Legacy::ContainerType containerType,
135 int burnInterval,
136 ::Block const& unlitFurnace,
137 ::Block const& litFurnace
138 );
139
140 MCAPI void _tryBroadcastBurnSound(::BlockSource& region);
141
142 MCAPI void burn(::Recipes const& recipes);
143
144 MCAPI bool canBurn(::Recipes const& recipes);
145
146 MCAPI void checkForAlternativeFuelAchievement(::BlockSource& region, ::ItemStack const& item);
147
148 MCAPI void checkForSmeltEverythingAchievement(::BlockSource& region);
149
150#ifdef LL_PLAT_C
151 MCAPI int getBurnProgress(int max);
152
153 MCFOLD ::ItemInstance const& getLastFuelItem() const;
154#endif
155
156 MCFOLD int getLitDuration() const;
157
158#ifdef LL_PLAT_C
159 MCAPI int getLitProgress(int max);
160#endif
161
162 MCFOLD int getLitTime() const;
163
164 MCAPI int getStoredXP() const;
165
166 MCFOLD int getTickCount() const;
167
168 MCAPI bool isEmptiedByHopper(::BlockSource& region);
169
170 MCAPI void onFurnaceBlockRemoved(::BlockSource& region);
171
172 MCFOLD void setLitDuration(int value);
173
174 MCFOLD void setLitTime(int value);
175
176 MCAPI void setOpenByLocalPlayer(bool open);
177
178 MCAPI void setStoredXP(int value);
179
180 MCFOLD void setTickCount(int value);
181
182 MCAPI void storeXPRewardForRemovingWithHopper(::ItemStackBase const& item, int numItemsSmelted);
183
184 MCAPI int withdrawStoredXPReward();
185 // NOLINTEND
186
187public:
188 // static functions
189 // NOLINTBEGIN
190 MCAPI static float _getXPRewardMultiplier(::ItemStackBase const& item);
191
192 MCAPI static int getAvailableFuelSetCount(int slot, ::ItemStackBase const& item);
193
194 MCAPI static float getBurnDuration(::ItemStackBase const& itemInstance, float burnInterval);
195
196 MCAPI static float getItemBurnDuration(::Item const& item, float burnInterval);
197
198 MCAPI static int getXPRewardFromSmeltingItems(::ItemStackBase const& item, int numItemsSmelted);
199
200 MCAPI static bool isItemAllowedInFuelSlot(int slot, ::ItemStackBase const& item, int amount);
201 // NOLINTEND
202
203public:
204 // static variables
205 // NOLINTBEGIN
206 MCAPI static ::std::string const& BURN_DURATION_KEY();
207
208 MCAPI static int const& BURN_INTERVAL();
209
210 MCAPI static ::std::string const& BURN_TIME_KEY();
211
212 MCAPI static ::std::string const& COOK_TIME_KEY();
213
214 MCAPI static float const& DEFAULT_SMELTING_TIME();
215
216 MCAPI static ::std::string const& FILTERED_CUSTOM_NAME_KEY();
217
218 MCAPI static ::std::string const& ITEMS_LIST_KEY();
219
220 MCAPI static ::std::string const& LAST_FUEL_KEY();
221
222 MCAPI static ::std::string const& SLOT_KEY();
223
224 MCAPI static ::std::string const& STORED_XP_DEPRECATED_KEY();
225
226 MCAPI static ::std::string const& STORED_XP_KEY();
227 // NOLINTEND
228
229public:
230 // constructor thunks
231 // NOLINTBEGIN
232 MCAPI void* $ctor(::BlockPos const& pos);
233
234 MCAPI void* $ctor(
235 ::BlockActorType blockActorType,
236 ::BlockPos const& pos,
237 ::HashedString const& recipeTag,
238 ::SharedTypes::Legacy::LevelSoundEvent smeltSound,
239 ::SharedTypes::Legacy::ContainerType containerType,
240 int burnInterval,
241 ::Block const& unlitFurnace,
242 ::Block const& litFurnace
243 );
244 // NOLINTEND
245
246public:
247 // virtual function thunks
248 // NOLINTBEGIN
249 MCFOLD ::ItemStack const& $getItem(int slot) const;
250
251 MCAPI void $setItem(int slot, ::ItemStack const& item);
252
253 MCAPI ::std::string $getName() const;
254
255 MCFOLD int $getMaxStackSize() const;
256
257 MCFOLD int $getContainerSize() const;
258
259 MCFOLD void $onRemoved(::BlockSource&);
260
261 MCAPI void $startOpen(::Actor& actor);
262
263 MCAPI void $stopOpen(::Actor& actor);
264
265 MCAPI bool $canPushInItem(int slot, int face, ::ItemStack const& item) const;
266
267 MCAPI bool $canPullOutItem(int slot, int face, ::ItemStack const& item) const;
268
269 MCFOLD ::Container* $getContainer();
270
271 MCFOLD ::Container const* $getContainer() const;
272
273 MCAPI void $load(::ILevel& level, ::CompoundTag const& base, ::DataLoadHelper& dataLoadHelper);
274
275 MCAPI void $onCustomTagLoadDone(::BlockSource& region);
276
277 MCAPI bool $save(::CompoundTag& tag, ::SaveContext const& saveContext) const;
278
279 MCAPI void $tick(::BlockSource& region);
280
281 MCAPI void $onNeighborChanged(::BlockSource& region, ::BlockPos const&);
282
283 MCFOLD void $onMove();
284
285 MCAPI void $serverInitItemStackIds(
286 int containerSlot,
287 int count,
288 ::std::function<void(int, ::ItemStack const&)> onNetIdChanged
289 );
290
291 MCAPI void $fixupOnLoad(::LevelChunk& lc);
292
293 MCAPI ::std::unique_ptr<::BlockActorDataPacket> $_getUpdatePacket(::BlockSource&);
294
295 MCAPI void $_onUpdatePacket(::CompoundTag const& data, ::BlockSource&);
296
297
298 // NOLINTEND
299
300public:
301 // vftables
302 // NOLINTBEGIN
303 MCAPI static void** $vftableForContainer();
304
305 MCAPI static void** $vftableForBlockActor();
306 // NOLINTEND
307};
Definition Actor.h:123
Definition BlockActorDataPacket.h:19
Definition BlockPos.h:21
Definition BlockSource.h:72
Definition Block.h:69
Definition CompoundTag.h:23
Definition DataLoadHelper.h:20
Definition HashedString.h:5
Definition ILevel.h:218
Definition ItemStackBase.h:52
Definition ItemStack.h:35
Definition Item.h:71
Definition LevelChunk.h:87
Definition Recipes.h:36
Definition SaveContext.h:5