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 ItemRegistryRef;
24class ItemStack;
25class ItemStackBase;
26class Recipe;
27class Recipes;
29struct AutoPlaceItem;
30struct 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
106public:
107 // member variables
108 // NOLINTBEGIN
109 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::CraftingContainerManagerModel>> mCraftingContainerManagerModel;
110 ::ll::TypedStorage<4, 4, int> mGridSize;
111 ::ll::TypedStorage<8, 8, ::Recipes*> mLevelRecipes;
112 ::ll::TypedStorage<8, 24, ::std::vector<::std::reference_wrapper<::Recipe const>>> mRecipes;
113 ::ll::TypedStorage<8, 8, ::Recipe const*> mCraftingRecipe;
114 ::ll::TypedStorage<8, 8, ::Recipe const*> mSelectedRecipe;
115 ::ll::TypedStorage<1, 1, bool> mDisplayingInvalidRecipe;
116 ::ll::TypedStorage<1, 1, bool> mClearInputGridOnChange;
117 ::ll::TypedStorage<8, 40, ::SlotData const> mCreatedItemOutputSlot;
118 ::ll::TypedStorage<8, 24, ::std::vector<::ItemStateData>> mSavedInventoryState;
119 ::ll::TypedStorage<8, 48, ::CraftingSessionInfo> mCraftingInformation;
120 ::ll::TypedStorage<8, 24, ::std::vector<::ItemStack>> mRemainingItems;
121 ::ll::TypedStorage<8, 128, ::ItemInstance> mResultPreviewItem;
122 ::ll::TypedStorage<8, 24, ::std::vector<::ItemInstance>> mAllResults;
123 ::ll::TypedStorage<8, 16, ::std::shared_ptr<bool>> mListenerLifeIndicator;
124 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::CraftingContainerManagerController::BlockChangeListener>>
125 mBlockChangeListener;
126 ::ll::TypedStorage<8, 64, ::std::unordered_map<int, ::CraftableCountingData>> mCraftableCountCache;
127 ::ll::TypedStorage<1, 1, bool> mCraftableCountCacheDirty;
128 ::ll::TypedStorage<1, 1, bool> mCloseCraftingContainer;
129 ::ll::TypedStorage<1, 1, bool> mIsCrafting;
130 // NOLINTEND
131
132#ifdef LL_PLAT_S
133#else // LL_PLAT_C
134public:
135 // prevent constructor by default
136 CraftingContainerManagerController();
137
138#endif
139public:
140 // virtual functions
141 // NOLINTBEGIN
142 virtual ~CraftingContainerManagerController() /*override*/ = default;
143
144 virtual bool isOutputSlot(::std::string const& collectionName) const /*override*/;
145
146 virtual bool handleTakeAmount(::SlotData const& dstSlot, int amount, ::SlotData const& srcSlot) /*override*/;
147
148 virtual bool handleTakeAll(::SlotData const& dstSlot, ::SlotData const& srcSlot) /*override*/;
149
150 virtual bool handlePlaceAll(::SelectedSlotInfo const& selected, ::SlotData const& dstSlot) /*override*/;
151
152 virtual bool handleTakeHalf(::SlotData const& dstSlot, ::SlotData const& srcSlot) /*override*/;
153
154 virtual bool handlePlaceOne(::SlotData const& srcSlot, ::SlotData const& dstSlot) /*override*/;
155
156 virtual int handleAutoPlace(
157 ::SlotData const& srcSlot,
158 int amount,
159 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
160 ::std::vector<::AutoPlaceResult>& destinations
161 ) /*override*/;
162
163 virtual int handleAutoPlaceStack(
164 ::SlotData const& srcSlot,
165 ::ItemTakeType type,
166 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
167 ::std::vector<::AutoPlaceResult>& destinations
168 ) /*override*/;
169
170 virtual void handleSplitSingle(::SlotData const& srcSlot, ::SlotData const& dstSlot) /*override*/;
171
172 virtual void handleSplitMultiple(
173 ::SelectedSlotInfo const& selected,
174 ::ItemInstance const& itemTemplate,
175 ::SlotData const& dstSlot
176 ) /*override*/;
177
178 virtual bool
179 handleAddToStack(::SlotData const& dstSlot, ::SlotData const& srcSlot, ::ItemTakeType type) /*override*/;
180
181 virtual bool handleDrop(::SlotData const& srcSlot, ::ItemTransferAmount const transferAmount) /*override*/;
182
183 virtual void closeContainers() /*override*/;
184
185 virtual ::ItemStackBase const& getTakeableItemStackBase(::SlotData const& slot) const /*override*/;
186 // NOLINTEND
187
188public:
189 // member functions
190 // NOLINTBEGIN
191#ifdef LL_PLAT_C
192 MCNAPI explicit CraftingContainerManagerController(
193 ::std::weak_ptr<::CraftingContainerManagerModel> containerManagerModel
194 );
195
196 MCNAPI void _filterRecipes();
197
198 MCNAPI ::std::vector<::RecipeSearchResult> _getRecipesForItem(
199 ::ItemInstance const& recipeItem,
200 ::std::vector<::std::string> const& tags,
201 ::ItemRegistryRef const itemRegistry,
202 bool
203 );
204
205 MCNAPI void _handleItemCraftedEvents(
206 ::ItemInstance const& resultItem,
207 ::std::vector<short> const& ingredientIds,
208 ::ShapedRecipeTriggeredEvent const& shapedRecipeTriggeredEvent
209 );
210
211 MCNAPI bool _handleTransferCraft(::SlotData const& srcSlot, ::SlotData const& dstSlot);
212
213 MCNAPI void _handleTransferCraftExtraResults(::std::vector<::ItemInstance>& allResults);
214
215 MCNAPI ::CreateContainerItemScope _makeCreateItemScopeCrafting(
216 ::SlotData const& srcSlot,
217 ::ItemTransferAmount const& takeAmount,
218 ::std::vector<::ItemInstance>& allResults
219 );
220
221 MCNAPI ::CreateContainerItemScope
222 _makeCreateItemScopeCreative(::SlotData const& srcSlot, ::ItemTransferAmount const& takeAmount);
223
224 MCNAPI void _updateCraftingResultItem();
225
226 MCNAPI bool
227 autoCraftItem(::SlotData const& recipeSlot, ::ItemCraftType craftAmount, ::std::vector<::AutoPlaceItem> const&);
228
229 MCNAPI void clearAllRecipes();
230
231 MCNAPI void evacuateCraftingContainerToInventory(
232 ::ContainerController* container,
233 ::std::vector<::AutoPlaceItem> const& autoPlace
234 );
235
236 MCNAPI int getBackgroundStyle(::std::string const& containerName, int collectionIndex) const;
237
238 MCNAPI ::CraftableCountingData getCraftableCount(::ItemInstance const& item);
239
240 MCNAPI ::std::string const& getExpandoItemGroupName(::std::string const& collectionName, int collectionIndex);
241
242 MCNAPI int getIndexForCreativeItem(::std::string const& collectionName, ::ItemStackBase const& item) const;
243
244 MCNAPI ::ItemInstance const& getRecipeItem(::std::string const& collectionName, int collectionIndex) const;
245
246 MCNAPI ::std::string const& getSearchString() const;
247
248 MCNAPI void handleRecipeSelect(
249 ::std::string const& collectionName,
250 int collectionIndex,
251 bool displayOnly,
252 ::std::vector<::AutoPlaceItem> const& autoPlace
253 );
254
255 MCNAPI bool isCreativeContainer(::std::string const& containerName) const;
256
257 MCNAPI bool isExpandableItemFiltered(::std::string const& collectionName, int collectionIndex) const;
258
259 MCNAPI bool isTakeableContainer(::std::string const& containerName) const;
260
261 MCNAPI bool setLastCraftedItem(::ItemInstance const& item);
262
263 MCNAPI void setOnItemExpandedCallback(::std::function<void(::std::string const&, int, int)> callback);
264
265 MCNAPI void switchExpandoItem(::std::string const& collectionName, int collectionIndex);
266#endif
267 // NOLINTEND
268
269public:
270 // constructor thunks
271 // NOLINTBEGIN
272#ifdef LL_PLAT_C
273 MCNAPI void* $ctor(::std::weak_ptr<::CraftingContainerManagerModel> containerManagerModel);
274#endif
275 // NOLINTEND
276
277public:
278 // virtual function thunks
279 // NOLINTBEGIN
280#ifdef LL_PLAT_C
281 MCNAPI bool $isOutputSlot(::std::string const& collectionName) const;
282
283 MCNAPI bool $handleTakeAmount(::SlotData const& dstSlot, int amount, ::SlotData const& srcSlot);
284
285 MCNAPI bool $handleTakeAll(::SlotData const& dstSlot, ::SlotData const& srcSlot);
286
287 MCNAPI bool $handlePlaceAll(::SelectedSlotInfo const& selected, ::SlotData const& dstSlot);
288
289 MCNAPI bool $handleTakeHalf(::SlotData const& dstSlot, ::SlotData const& srcSlot);
290
291 MCNAPI bool $handlePlaceOne(::SlotData const& srcSlot, ::SlotData const& dstSlot);
292
293 MCNAPI int $handleAutoPlace(
294 ::SlotData const& srcSlot,
295 int amount,
296 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
297 ::std::vector<::AutoPlaceResult>& destinations
298 );
299
300 MCNAPI int $handleAutoPlaceStack(
301 ::SlotData const& srcSlot,
302 ::ItemTakeType type,
303 ::std::vector<::AutoPlaceItem> const& autoPlaceOrder,
304 ::std::vector<::AutoPlaceResult>& destinations
305 );
306
307 MCNAPI void $handleSplitSingle(::SlotData const& srcSlot, ::SlotData const& dstSlot);
308
309 MCNAPI void $handleSplitMultiple(
310 ::SelectedSlotInfo const& selected,
311 ::ItemInstance const& itemTemplate,
312 ::SlotData const& dstSlot
313 );
314
315 MCNAPI bool $handleAddToStack(::SlotData const& dstSlot, ::SlotData const& srcSlot, ::ItemTakeType type);
316
317 MCNAPI bool $handleDrop(::SlotData const& srcSlot, ::ItemTransferAmount const transferAmount);
318
319 MCNAPI void $closeContainers();
320
321 MCNAPI ::ItemStackBase const& $getTakeableItemStackBase(::SlotData const& slot) const;
322#endif
323
324
325 // NOLINTEND
326};
Definition Actor.h:113
Definition BlockPos.h:17
Definition BlockSourceListener.h:18
Definition BlockSource.h:71
Definition Block.h:41
Definition ContainerController.h:21
Definition CraftingContainerManagerModel.h:25
Definition ItemInstance.h:15
Definition ItemRegistryRef.h:41
Definition ItemStackBase.h:44
Definition ItemStack.h:26
Definition Recipe.h:32
Definition Recipes.h:37
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 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