LeviLamina
Loading...
Searching...
No Matches
CraftingContainerManagerController.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/world/containers/SlotData.h"
7#include "mc/world/containers/controllers/ItemCraftType.h"
8#include "mc/world/containers/controllers/ItemTakeType.h"
9#include "mc/world/containers/managers/controllers/ContainerManagerController.h"
10#include "mc/world/containers/managers/controllers/CraftingSessionInfo.h"
11#include "mc/world/item/ItemInstance.h"
12#include "mc/world/level/BlockChangedEventTarget.h"
13#include "mc/world/level/BlockSourceListener.h"
14
15// auto generated forward declare list
16// clang-format off
17class Actor;
18class Block;
19class BlockPos;
20class BlockSource;
23class ItemStack;
24class ItemStackBase;
25class Recipe;
26class Recipes;
28struct AutoPlaceItem;
29struct AutoPlaceResult;
33struct ItemStateData;
36struct SelectedSlotInfo;
38// clang-format on
39
40class CraftingContainerManagerController : public ::ContainerManagerController {
41public:
42 // CraftingContainerManagerController inner types declare
43 // clang-format off
45 // clang-format on
46
47 // CraftingContainerManagerController inner types define
48 struct BlockChangeListener : public ::BlockSourceListener {
49 public:
50 // member variables
51 // NOLINTBEGIN
55 // NOLINTEND
56
57 public:
58 // prevent constructor by default
59 BlockChangeListener& operator=(BlockChangeListener const&);
60 BlockChangeListener(BlockChangeListener const&);
61 BlockChangeListener();
62
63 public:
64 // virtual functions
65 // NOLINTBEGIN
66 virtual ~BlockChangeListener() /*override*/ = default;
67
68 virtual void onBlockChanged(
69 ::BlockSource& source,
70 ::BlockPos const& pos,
71 uint layer,
72 ::Block const& block,
73 ::Block const& oldBlock,
74 int updateFlags,
75 ::ActorBlockSyncMessage const* syncMsg,
76 ::BlockChangedEventTarget eventTarget,
77 ::Actor* blockChangeSource
78 ) /*override*/;
79
80 virtual void onSourceDestroyed(::BlockSource& source) /*override*/;
81 // NOLINTEND
82
83 public:
84 // virtual function thunks
85 // NOLINTBEGIN
86#ifdef LL_PLAT_C
87 MCNAPI void $onBlockChanged(
88 ::BlockSource& source,
89 ::BlockPos const& pos,
90 uint layer,
91 ::Block const& block,
92 ::Block const& oldBlock,
93 int updateFlags,
94 ::ActorBlockSyncMessage const* syncMsg,
95 ::BlockChangedEventTarget eventTarget,
96 ::Actor* blockChangeSource
97 );
98
99 MCNAPI void $onSourceDestroyed(::BlockSource& source);
100#endif
101
102
103 // NOLINTEND
104
105 public:
106 // vftables
107 // NOLINTBEGIN
108 MCNAPI static void** $vftable();
109 // NOLINTEND
110 };
111
112public:
113 // member variables
114 // NOLINTBEGIN
115 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::CraftingContainerManagerModel>> mCraftingContainerManagerModel;
116 ::ll::TypedStorage<4, 4, int> mGridSize;
117 ::ll::TypedStorage<8, 8, ::Recipes*> mLevelRecipes;
118 ::ll::TypedStorage<8, 24, ::std::vector<::std::reference_wrapper<::Recipe const>>> mRecipes;
119 ::ll::TypedStorage<8, 8, ::Recipe const*> mCraftingRecipe;
120 ::ll::TypedStorage<8, 8, ::Recipe const*> mSelectedRecipe;
121 ::ll::TypedStorage<1, 1, bool> mDisplayingInvalidRecipe;
122 ::ll::TypedStorage<1, 1, bool> mClearInputGridOnChange;
123 ::ll::TypedStorage<8, 40, ::SlotData const> mCreatedItemOutputSlot;
124 ::ll::TypedStorage<8, 24, ::std::vector<::ItemStateData>> mSavedInventoryState;
125 ::ll::TypedStorage<8, 48, ::CraftingSessionInfo> mCraftingInformation;
126 ::ll::TypedStorage<8, 24, ::std::vector<::ItemStack>> mRemainingItems;
127 ::ll::TypedStorage<8, 128, ::ItemInstance> mResultPreviewItem;
128 ::ll::TypedStorage<8, 24, ::std::vector<::ItemInstance>> mAllResults;
129 ::ll::TypedStorage<8, 16, ::std::shared_ptr<bool>> mListenerLifeIndicator;
130 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::CraftingContainerManagerController::BlockChangeListener>>
131 mBlockChangeListener;
132 ::ll::TypedStorage<1, 1, bool> mCloseCraftingContainer;
133 ::ll::TypedStorage<1, 1, bool> mIsCrafting;
134 // NOLINTEND
135
136#ifdef LL_PLAT_S
137#else // LL_PLAT_C
138public:
139 // prevent constructor by default
140 CraftingContainerManagerController();
141
142#endif
143public:
144 // virtual functions
145 // NOLINTBEGIN
146#ifdef LL_PLAT_S
147 virtual ~CraftingContainerManagerController() /*override*/ = default;
148#else // LL_PLAT_C
149 virtual ~CraftingContainerManagerController() /*override*/;
150#endif
151
152 virtual bool isOutputSlot(::std::string const& collectionName) const /*override*/;
153
154 virtual void handleTakeAmount(::SlotData const& dstSlot, int amount, ::SlotData const& srcSlot) /*override*/;
155
156 virtual void handleTakeAll(::SlotData const& dstSlot, ::SlotData const& srcSlot) /*override*/;
157
158 virtual void handlePlaceAll(::SelectedSlotInfo const& selected, ::SlotData const& dstSlot) /*override*/;
159
160 virtual void handleTakeHalf(::SlotData const& dstSlot, ::SlotData const& srcSlot) /*override*/;
161
162 virtual void handlePlaceOne(::SlotData const& srcSlot, ::SlotData const& dstSlot) /*override*/;
163
164 virtual int handleAutoPlace(
165 ::SlotData const& srcSlot,
166 int amount,
167 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
168 ::std::vector<::AutoPlaceResult>& destinations
169 ) /*override*/;
170
171 virtual int handleAutoPlaceStack(
172 ::SlotData const& srcSlot,
173 ::ItemTakeType type,
174 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
175 ::std::vector<::AutoPlaceResult>& destinations
176 ) /*override*/;
177
178 virtual void handleSplitSingle(::SlotData const& srcSlot, ::SlotData const& dstSlot) /*override*/;
179
180 virtual void handleSplitMultiple(
181 ::SelectedSlotInfo const& selected,
182 ::ItemInstance const& itemTemplate,
183 ::SlotData const& dstSlot
184 ) /*override*/;
185
186 virtual void
187 handleAddToStack(::SlotData const& dstSlot, ::SlotData const& srcSlot, ::ItemTakeType type) /*override*/;
188
189 virtual bool handleDrop(::SlotData const& srcSlot, ::ItemTransferAmount const transferAmount) /*override*/;
190
191 virtual void closeContainers() /*override*/;
192
193 virtual ::ItemStackBase const& getTakeableItemStackBase(::SlotData const& slot) const /*override*/;
194 // NOLINTEND
195
196public:
197 // member functions
198 // NOLINTBEGIN
199#ifdef LL_PLAT_C
200 MCNAPI explicit CraftingContainerManagerController(
201 ::std::weak_ptr<::CraftingContainerManagerModel> containerManagerModel
202 );
203
204 MCNAPI ::std::vector<::ItemInstance> _craftItem(::ItemStackRequestScope const& requestScope, uchar craftCount);
205
206 MCNAPI void _filterRecipes();
207
208 MCNAPI ::std::vector<::RecipeSearchResult>
209 _getRecipesForItem(::ItemInstance const& recipeItem, ::std::vector<::std::string> const& tags, bool);
210
211 MCNAPI void _handleItemCraftedEvents(
212 ::ItemInstance const& resultItem,
213 ::std::vector<short> const& ingredientIds,
214 ::ShapedRecipeTriggeredEvent const& shapedRecipeTriggeredEvent
215 );
216
217 MCNAPI bool _handleTransferCraft(::SlotData const& srcSlot, ::SlotData const& dstSlot);
218
219 MCNAPI void _handleTransferCraftExtraResults(::std::vector<::ItemInstance>& allResults);
220
221 MCNAPI bool _inventoryContainsItemForRecipeInputSlot(::std::string const& containerName, int collectionIndex) const;
222
223 MCNAPI ::CreateContainerItemScope _makeCreateItemScopeCrafting(
224 ::SlotData const& srcSlot,
225 ::ItemTransferAmount const& takeAmount,
226 ::std::vector<::ItemInstance>& allResults
227 );
228
229 MCNAPI ::CreateContainerItemScope
230 _makeCreateItemScopeCreative(::SlotData const& srcSlot, ::ItemTransferAmount const& takeAmount);
231
232 MCNAPI void _setupCallbacks();
233
234 MCNAPI void _updateCraftingResultItem();
235
236 MCNAPI bool
237 autoCraftItem(::SlotData const& recipeSlot, ::ItemCraftType craftAmount, ::std::vector<::AutoPlaceItem> const&);
238
239 MCNAPI void clearAllRecipes();
240
241 MCNAPI void evacuateCraftingContainerToInventory(
242 ::ContainerController* container,
243 ::std::vector<::AutoPlaceItem> const& autoPlace
244 );
245
246 MCNAPI int getBackgroundStyle(::std::string const& containerName, int collectionIndex) const;
247
248 MCNAPI ::CraftableCountingData getCraftableCount(::ItemInstance const& item);
249
250 MCNAPI ::std::string const& getExpandoItemGroupName(::std::string const& collectionName, int collectionIndex);
251
252 MCNAPI ::ItemInstance const& getGhostItem(::std::string const& collectionName, int collectionIndex) const;
253
254 MCNAPI int getIndexForCreativeItem(::std::string const& collectionName, ::ItemStackBase const& item) const;
255
256 MCNAPI ::ItemInstance const& getRecipeItem(::std::string const& collectionName, int collectionIndex) const;
257
258 MCNAPI ::std::string const& getSearchString() const;
259
260 MCNAPI void handleRecipeSelect(
261 ::std::string const& collectionName,
262 int collectionIndex,
263 bool displayOnly,
264 ::std::vector<::AutoPlaceItem> const& autoPlace
265 );
266
267 MCNAPI bool isCreativeContainer(::std::string const& containerName) const;
268
269 MCNAPI bool isExpandableItemFiltered(::std::string const& collectionName, int collectionIndex) const;
270
271 MCNAPI bool isTakeableContainer(::std::string const& containerName) const;
272
273 MCNAPI bool setLastCraftedItem(::ItemInstance const& item);
274
275 MCNAPI void setOnItemExpandedCallback(::std::function<void(::std::string const&, int, int)> callback);
276
277 MCNAPI void setSearchString(::std::string const& searchString);
278
279 MCNAPI void switchExpandoItem(::std::string const& collectionName, int collectionIndex);
280#endif
281 // NOLINTEND
282
283public:
284 // constructor thunks
285 // NOLINTBEGIN
286#ifdef LL_PLAT_C
287 MCNAPI void* $ctor(::std::weak_ptr<::CraftingContainerManagerModel> containerManagerModel);
288#endif
289 // NOLINTEND
290
291public:
292 // destructor thunk
293 // NOLINTBEGIN
294 MCNAPI void $dtor();
295 // NOLINTEND
296
297public:
298 // virtual function thunks
299 // NOLINTBEGIN
300#ifdef LL_PLAT_C
301 MCNAPI bool $isOutputSlot(::std::string const& collectionName) const;
302
303 MCNAPI void $handleTakeAmount(::SlotData const& dstSlot, int amount, ::SlotData const& srcSlot);
304
305 MCNAPI void $handleTakeAll(::SlotData const& dstSlot, ::SlotData const& srcSlot);
306
307 MCNAPI void $handlePlaceAll(::SelectedSlotInfo const& selected, ::SlotData const& dstSlot);
308
309 MCNAPI void $handleTakeHalf(::SlotData const& dstSlot, ::SlotData const& srcSlot);
310
311 MCNAPI void $handlePlaceOne(::SlotData const& srcSlot, ::SlotData const& dstSlot);
312
313 MCNAPI int $handleAutoPlace(
314 ::SlotData const& srcSlot,
315 int amount,
316 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
317 ::std::vector<::AutoPlaceResult>& destinations
318 );
319
320 MCNAPI int $handleAutoPlaceStack(
321 ::SlotData const& srcSlot,
322 ::ItemTakeType type,
323 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
324 ::std::vector<::AutoPlaceResult>& destinations
325 );
326
327 MCNAPI void $handleSplitSingle(::SlotData const& srcSlot, ::SlotData const& dstSlot);
328
329 MCNAPI void $handleSplitMultiple(
330 ::SelectedSlotInfo const& selected,
331 ::ItemInstance const& itemTemplate,
332 ::SlotData const& dstSlot
333 );
334
335 MCNAPI void $handleAddToStack(::SlotData const& dstSlot, ::SlotData const& srcSlot, ::ItemTakeType type);
336
337 MCNAPI bool $handleDrop(::SlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
338
339 MCNAPI void $closeContainers();
340
341 MCNAPI ::ItemStackBase const& $getTakeableItemStackBase(::SlotData const& slot) const;
342#endif
343
344
345 // NOLINTEND
346
347public:
348 // vftables
349 // NOLINTBEGIN
350 MCNAPI static void** $vftable();
351 // NOLINTEND
352};
Definition Actor.h:106
Definition BlockPos.h:19
Definition BlockSourceListener.h:18
Definition BlockSource.h:71
Definition Block.h:43
Definition ContainerController.h:20
static MCAPI void ** $vftable()
Definition CraftingContainerManagerModel.h:25
Definition ItemInstance.h:15
Definition ItemStackBase.h:44
Definition ItemStack.h:26
Definition Recipe.h:31
Definition Recipes.h:36
Definition ActorBlockSyncMessage.h:8
Definition AutoPlaceItem.h:5
Definition AutoPlaceResult.h:5
Definition CraftableCountingData.h:5
Definition CraftingContainerManagerController.h:48
Definition CreateContainerItemScope.h:18
Definition ItemStackRequestScope.h:14
Definition ItemStateData.h:5
Definition ItemTransferAmount.h:5
Definition RecipeSearchResult.h:5
Definition SelectedSlotInfo.h:10
Definition ShapedRecipeTriggeredEvent.h:10
Definition SlotData.h:5
Definition Alias.h:14