LeviLamina
Loading...
Searching...
No Matches
Recipe.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/deps/core/string/HashedString.h"
5#include "mc/platform/UUID.h"
6#include "mc/world/item/crafting/RecipeIngredient.h"
7#include "mc/world/item/crafting/RecipeUnlockingRequirement.h"
8
9// auto generated inclusion list
10#include "mc/deps/core/sem_ver/SemVersion.h"
11#include "mc/deps/core/string/HashedString.h"
12#include "mc/platform/UUID.h"
13#include "mc/world/inventory/network/TypedServerNetId.h"
14#include "mc/world/item/crafting/RecipeUnlockingRequirement.h"
15
16// auto generated forward declare list
17// clang-format off
18class BlockPalette;
19class CompoundTag;
20class ContainerModel;
22class CraftingContext;
23class ItemDescriptor;
24class ItemInstance;
25class ItemStack;
29struct RecipeNetIdTag;
30// clang-format on
31
32class Recipe {
33public:
34 // Recipe inner types declare
35 // clang-format off
36 class Results;
38 // clang-format on
39
40 // Recipe inner types define
41 class Results {
42 public:
43 // member variables
44 // NOLINTBEGIN
45 ::ll::TypedStorage<1, 1, bool> mResultsAreLoaded;
46 ::ll::TypedStorage<8, 24, ::std::vector<::ItemInstance>> mResults;
47 ::ll::TypedStorage<8, 24, ::std::vector<::NetworkItemInstanceDescriptor>> mUnloadedResults;
48 // NOLINTEND
49
50 public:
51 // prevent constructor by default
52 Results();
53
54 public:
55 // member functions
56 // NOLINTBEGIN
57 MCAPI explicit Results(::std::vector<::ItemInstance> const& results);
58
59#ifdef LL_PLAT_C
60 MCAPI explicit Results(::std::vector<::NetworkItemInstanceDescriptor> const& results);
61
62 MCFOLD ::std::vector<::ItemInstance> const& getItems() const;
63
64 MCAPI void load(::BlockPalette const& blockPalette) const;
65#endif
66
67 MCAPI ~Results();
68 // NOLINTEND
69
70 public:
71 // constructor thunks
72 // NOLINTBEGIN
73 MCAPI void* $ctor(::std::vector<::ItemInstance> const& results);
74
75#ifdef LL_PLAT_C
76 MCAPI void* $ctor(::std::vector<::NetworkItemInstanceDescriptor> const& results);
77#endif
78 // NOLINTEND
79
80 public:
81 // destructor thunk
82 // NOLINTBEGIN
83 MCAPI void $dtor();
84 // NOLINTEND
85 };
86
88 public:
89 // member variables
90 // NOLINTBEGIN
91 ::ll::TypedStorage<8, 32, ::std::string> recipeId;
92 ::ll::TypedStorage<8, 24, ::std::vector<::RecipeIngredient>> ingredients;
93 ::ll::TypedStorage<8, 56, ::Recipe::Results> results;
94 ::ll::TypedStorage<8, 48, ::HashedString> tag;
95 ::ll::TypedStorage<4, 4, int> priority;
96 ::ll::TypedStorage<8, 8, ::mce::UUID const*> uuid;
97 ::ll::TypedStorage<8, 32, ::RecipeUnlockingRequirement> unlockingRequirement;
98 ::ll::TypedStorage<8, 24, ::SemVersion> formatVersion;
99 // NOLINTEND
100
101 public:
102 // member functions
103 // NOLINTBEGIN
104 MCAPI ~ConstructionContext();
105 // NOLINTEND
106
107 public:
108 // destructor thunk
109 // NOLINTBEGIN
110 MCAPI void $dtor();
111 // NOLINTEND
112 };
113
114 using Ingredients = ::std::vector<::RecipeIngredient>;
115
116 using ResultList = ::std::vector<::ItemInstance>;
117
118 using UnloadedItemInstanceResultList = ::std::vector<::NetworkItemInstanceDescriptor>;
119
120public:
121 // member variables
122 // NOLINTBEGIN
123 ::ll::TypedStorage<8, 32, ::std::string> mRecipeId;
124 ::ll::TypedStorage<8, 16, ::mce::UUID> mMyId;
125 ::ll::TypedStorage<4, 4, int> mWidth;
126 ::ll::TypedStorage<4, 4, int> mHeight;
127 ::ll::TypedStorage<4, 4, int> mPriority;
128 ::ll::TypedStorage<4, 4, ::RecipeNetId> mRecipeNetId;
129 ::ll::TypedStorage<8, 24, ::std::vector<::RecipeIngredient>> mMyIngredients;
130 ::ll::TypedStorage<8, 56, ::Recipe::Results> mResults;
131 ::ll::TypedStorage<8, 32, ::RecipeUnlockingRequirement> mUnlockingRequirement;
132 ::ll::TypedStorage<8, 24, ::SemVersion> mRecipeDataVersion;
133 ::ll::TypedStorage<8, 48, ::HashedString> mTag;
134 // NOLINTEND
135
136#ifdef LL_PLAT_S
137public:
138 // prevent constructor by default
139 Recipe();
140
141#else // LL_PLAT_C
142public:
143 // prevent constructor by default
144 Recipe& operator=(Recipe const&);
145 Recipe(Recipe const&);
146 Recipe();
147
148#endif
149public:
150 // virtual functions
151 // NOLINTBEGIN
152 virtual ~Recipe();
153
154 virtual ::std::vector<::ItemInstance> const&
155 assemble(::CraftingContainer& craftSlots, ::CraftingContext& craftingContext) const = 0;
156
157 virtual int getCraftingSize() const = 0;
158
159 virtual ::RecipeIngredient const& getIngredient(int x, int y) const = 0;
160
161 virtual bool isShapeless() const = 0;
162
163 virtual bool matches(::CraftingContainer const& craftSlots, ::CraftingContext const& craftingContext) const = 0;
164
165 virtual int size() const = 0;
166
167 virtual ::mce::UUID const& getId() const;
168
169 virtual ::std::vector<::ItemInstance> const& getResultItems() const;
170
171 virtual bool isMultiRecipe() const;
172
173 virtual bool hasDataDrivenResult() const;
174
175 virtual bool itemValidForRecipe(::ItemDescriptor const& recipeItem, ::ItemStack const& item) const;
176
177 virtual bool itemsMatch(::ItemDescriptor const& lhs, ::ItemDescriptor const& rhs) const;
178
179 virtual bool
180 itemsMatch(::ItemDescriptor const& lhs, ::ItemDescriptor const& rhs, ::CompoundTag const* rhsTag) const;
181
182 virtual uint64 getIngredientsHash() const;
183 // NOLINTEND
184
185public:
186 // member functions
187 // NOLINTBEGIN
188 MCAPI explicit Recipe(::Recipe::ConstructionContext&& context);
189
190#ifdef LL_PLAT_C
191 MCAPI Recipe(::Recipe&& recipe);
192
193 MCAPI ::IngredientSearchResults
194 checkContainerItemsForUsability(::std::vector<::ContainerModel*> const& containers) const;
195#endif
196
197 MCAPI int countQuantityOfIngredient(::ItemInstance const& ingredient) const;
198
199 MCAPI void generateUUID();
200
201 MCAPI ::Recipe::ConstructionContext getConstructionContext() const;
202
203 MCFOLD int getHeight() const;
204
205 MCFOLD ::std::vector<::RecipeIngredient> const& getIngredients() const;
206
207 MCFOLD ::RecipeNetId const& getNetId() const;
208
209 MCFOLD int getPriority() const;
210
211 MCFOLD ::std::string const& getRecipeId() const;
212
213 MCFOLD ::HashedString const& getTag() const;
214
215 MCFOLD ::RecipeUnlockingRequirement const& getUnlockingRequirement() const;
216
217 MCFOLD int getWidth() const;
218
219#ifdef LL_PLAT_C
220 MCAPI void loadResultList(::BlockPalette const& palette) const;
221#endif
222
223 MCAPI void setId(::mce::UUID const& uuid);
224
225 MCAPI void setNetId(::RecipeNetId const& recipeNetId);
226 // NOLINTEND
227
228public:
229 // static functions
230 // NOLINTBEGIN
231 MCAPI static bool isAnyAuxValue(::ItemDescriptor const& ii);
232 // NOLINTEND
233
234public:
235 // constructor thunks
236 // NOLINTBEGIN
237 MCAPI void* $ctor(::Recipe::ConstructionContext&& context);
238
239#ifdef LL_PLAT_C
240 MCAPI void* $ctor(::Recipe&& recipe);
241#endif
242 // NOLINTEND
243
244public:
245 // destructor thunk
246 // NOLINTBEGIN
247 MCFOLD void $dtor();
248 // NOLINTEND
249
250public:
251 // virtual function thunks
252 // NOLINTBEGIN
253 MCFOLD ::mce::UUID const& $getId() const;
254
255 MCFOLD ::std::vector<::ItemInstance> const& $getResultItems() const;
256
257 MCFOLD bool $isMultiRecipe() const;
258
259 MCFOLD bool $hasDataDrivenResult() const;
260
261 MCAPI bool $itemValidForRecipe(::ItemDescriptor const& recipeItem, ::ItemStack const& item) const;
262
263 MCAPI bool $itemsMatch(::ItemDescriptor const& lhs, ::ItemDescriptor const& rhs) const;
264
265 MCAPI bool $itemsMatch(::ItemDescriptor const& lhs, ::ItemDescriptor const& rhs, ::CompoundTag const* rhsTag) const;
266
267 MCAPI uint64 $getIngredientsHash() const;
268
269
270 // NOLINTEND
271
272public:
273 // vftables
274 // NOLINTBEGIN
275 MCAPI static void** $vftable();
276 // NOLINTEND
277};
Definition BlockPalette.h:21
Definition CompoundTag.h:23
Definition ContainerModel.h:28
Definition CraftingContainer.h:14
Definition CraftingContext.h:20
Definition ItemDescriptor.h:25
Definition ItemInstance.h:15
Definition ItemStack.h:35
Definition NetworkItemInstanceDescriptor.h:18
Definition RecipeIngredient.h:16
Definition Recipe.h:41
Definition UUID.h:7
Definition IngredientSearchResults.h:10
Definition RecipeNetIdTag.h:5
Definition Recipe.h:87
Definition context.h:5