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
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
136public:
137 // virtual functions
138 // NOLINTBEGIN
139#ifdef LL_PLAT_S
140 virtual ~CraftingContainerManagerController() /*override*/ = default;
141#else // LL_PLAT_C
142 virtual ~CraftingContainerManagerController() /*override*/;
143#endif
144
145 virtual bool isOutputSlot(::std::string const& collectionName) const /*override*/;
146
147 virtual void handleTakeAmount(::SlotData const& dstSlot, int amount, ::SlotData const& srcSlot) /*override*/;
148
149 virtual void handleTakeAll(::SlotData const& dstSlot, ::SlotData const& srcSlot) /*override*/;
150
151 virtual void handlePlaceAll(::SelectedSlotInfo const& selected, ::SlotData const& dstSlot) /*override*/;
152
153 virtual void handleTakeHalf(::SlotData const& dstSlot, ::SlotData const& srcSlot) /*override*/;
154
155 virtual void handlePlaceOne(::SlotData const& srcSlot, ::SlotData const& dstSlot) /*override*/;
156
157 virtual int handleAutoPlace(
158 ::SlotData const& srcSlot,
159 int amount,
160 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
161 ::std::vector<::AutoPlaceResult>& destinations
162 ) /*override*/;
163
164 virtual int handleAutoPlaceStack(
165 ::SlotData const& srcSlot,
166 ::ItemTakeType type,
167 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
168 ::std::vector<::AutoPlaceResult>& destinations
169 ) /*override*/;
170
171 virtual void handleSplitSingle(::SlotData const& srcSlot, ::SlotData const& dstSlot) /*override*/;
172
173 virtual void handleSplitMultiple(
174 ::SelectedSlotInfo const& selected,
175 ::ItemInstance const& itemTemplate,
176 ::SlotData const& dstSlot
177 ) /*override*/;
178
179 virtual void
180 handleAddToStack(::SlotData const& dstSlot, ::SlotData const& srcSlot, ::ItemTakeType type) /*override*/;
181
182 virtual bool handleDrop(::SlotData const& srcSlot, ::ItemTransferAmount const transferAmount) /*override*/;
183
184 virtual void closeContainers() /*override*/;
185
186 virtual ::ItemStackBase const& getTakeableItemStackBase(::SlotData const& slot) const /*override*/;
187 // NOLINTEND
188
189public:
190 // member functions
191 // NOLINTBEGIN
192 MCNAPI_C ::std::vector<::ItemInstance> _craftItem(::ItemStackRequestScope const& requestScope, uchar craftCount);
193
194 MCNAPI_C void _filterRecipes();
195
196 MCNAPI_C ::std::vector<::RecipeSearchResult>
197 _getRecipesForItem(::ItemInstance const& recipeItem, ::std::vector<::std::string> const& tags, bool);
198
199 MCNAPI_C void _handleItemCraftedEvents(
200 ::ItemInstance const& resultItem,
201 ::std::vector<short> const& ingredientIds,
202 ::ShapedRecipeTriggeredEvent const& shapedRecipeTriggeredEvent
203 );
204
205 MCNAPI_C bool _handleTransferCraft(::SlotData const& srcSlot, ::SlotData const& dstSlot);
206
207 MCNAPI_C void _handleTransferCraftExtraResults(::std::vector<::ItemInstance>& allResults);
208
209 MCNAPI_C bool
210 _inventoryContainsItemForRecipeInputSlot(::std::string const& containerName, int collectionIndex) const;
211
212 MCNAPI_C ::CreateContainerItemScope _makeCreateItemScopeCrafting(
213 ::SlotData const& srcSlot,
214 ::ItemTransferAmount const& takeAmount,
215 ::std::vector<::ItemInstance>& allResults
216 );
217
218 MCNAPI_C ::CreateContainerItemScope
219 _makeCreateItemScopeCreative(::SlotData const& srcSlot, ::ItemTransferAmount const& takeAmount);
220
221 MCNAPI_C void _setupCallbacks();
222
223 MCNAPI_C void _updateCraftingResultItem();
224
225 MCNAPI_C bool
226 autoCraftItem(::SlotData const& recipeSlot, ::ItemCraftType craftAmount, ::std::vector<::AutoPlaceItem> const&);
227
228 MCNAPI_C void clearAllRecipes();
229
230 MCNAPI_C void evacuateCraftingContainerToInventory(
231 ::ContainerController* container,
232 ::std::vector<::AutoPlaceItem> const& autoPlace
233 );
234
235 MCNAPI_C int getBackgroundStyle(::std::string const& containerName, int collectionIndex) const;
236
237 MCNAPI_C ::CraftableCountingData getCraftableCount(::ItemInstance const& item);
238
239 MCNAPI_C ::std::string const& getExpandoItemGroupName(::std::string const& collectionName, int collectionIndex);
240
241 MCNAPI_C ::ItemInstance const& getGhostItem(::std::string const& collectionName, int collectionIndex);
242
243 MCNAPI_C int getIndexForCreativeItem(::std::string const& collectionName, ::ItemStackBase const& item) const;
244
245 MCNAPI_C ::ItemInstance const& getRecipeItem(::std::string const& collectionName, int collectionIndex) const;
246
247 MCNAPI_C ::std::string const& getSearchString() const;
248
249 MCNAPI_C void handleRecipeSelect(
250 ::std::string const& collectionName,
251 int collectionIndex,
252 bool displayOnly,
253 ::std::vector<::AutoPlaceItem> const& autoPlace
254 );
255
256 MCNAPI_C bool isCreativeContainer(::std::string const& containerName) const;
257
258 MCNAPI_C bool isExpandableItemFiltered(::std::string const& collectionName, int collectionIndex) const;
259
260 MCNAPI_C bool isTakeableContainer(::std::string const& containerName) const;
261
262 MCNAPI_C bool setLastCraftedItem(::ItemInstance const& item);
263
264 MCNAPI_C void setOnItemExpandedCallback(::std::function<void(::std::string const&, int, int)> callback);
265
266 MCNAPI_C void setSearchString(::std::string const& searchString);
267
268 MCNAPI_C void switchExpandoItem(::std::string const& collectionName, int collectionIndex);
269 // NOLINTEND
270
271public:
272 // constructor thunks
273 // NOLINTBEGIN
274 MCNAPI_C void* $ctor(::std::weak_ptr<::CraftingContainerManagerModel> containerManagerModel);
275 // NOLINTEND
276
277public:
278 // destructor thunk
279 // NOLINTBEGIN
280 MCNAPI void $dtor();
281 // NOLINTEND
282
283public:
284 // virtual function thunks
285 // NOLINTBEGIN
286#ifdef LL_PLAT_C
287 MCNAPI bool $isOutputSlot(::std::string const& collectionName) const;
288
289 MCNAPI void $handleTakeAmount(::SlotData const& dstSlot, int amount, ::SlotData const& srcSlot);
290
291 MCNAPI void $handleTakeAll(::SlotData const& dstSlot, ::SlotData const& srcSlot);
292
293 MCNAPI void $handlePlaceAll(::SelectedSlotInfo const& selected, ::SlotData const& dstSlot);
294
295 MCNAPI void $handleTakeHalf(::SlotData const& dstSlot, ::SlotData const& srcSlot);
296
297 MCNAPI void $handlePlaceOne(::SlotData const& srcSlot, ::SlotData const& dstSlot);
298
299 MCNAPI int $handleAutoPlace(
300 ::SlotData const& srcSlot,
301 int amount,
302 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
303 ::std::vector<::AutoPlaceResult>& destinations
304 );
305
306 MCNAPI int $handleAutoPlaceStack(
307 ::SlotData const& srcSlot,
308 ::ItemTakeType type,
309 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
310 ::std::vector<::AutoPlaceResult>& destinations
311 );
312
313 MCNAPI void $handleSplitSingle(::SlotData const& srcSlot, ::SlotData const& dstSlot);
314
315 MCNAPI void $handleSplitMultiple(
316 ::SelectedSlotInfo const& selected,
317 ::ItemInstance const& itemTemplate,
318 ::SlotData const& dstSlot
319 );
320
321 MCNAPI void $handleAddToStack(::SlotData const& dstSlot, ::SlotData const& srcSlot, ::ItemTakeType type);
322
323 MCNAPI bool $handleDrop(::SlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
324
325 MCNAPI void $closeContainers();
326
327 MCNAPI ::ItemStackBase const& $getTakeableItemStackBase(::SlotData const& slot) const;
328#endif
329
330
331 // NOLINTEND
332
333public:
334 // vftables
335 // NOLINTBEGIN
336 MCNAPI static void** $vftable();
337 // NOLINTEND
338};
Definition Actor.h:105
Definition BlockPos.h:19
Definition BlockSourceListener.h:18
Definition BlockSource.h:68
Definition Block.h:43
Definition ContainerController.h:20
Definition ContainerManagerController.h:47
Definition CraftingContainerManagerController.h:40
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:35
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:5
Definition ShapedRecipeTriggeredEvent.h:10
Definition SlotData.h:5
Definition Alias.h:14