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 void load(::BlockPalette const& blockPalette) const;
61#endif
62
63 MCAPI ~Results();
64 // NOLINTEND
65
66 public:
67 // constructor thunks
68 // NOLINTBEGIN
69 MCAPI void* $ctor(::std::vector<::ItemInstance> const& results);
70 // NOLINTEND
71
72 public:
73 // destructor thunk
74 // NOLINTBEGIN
75 MCAPI void $dtor();
76 // NOLINTEND
77 };
78
80 public:
81 // member variables
82 // NOLINTBEGIN
83 ::ll::TypedStorage<8, 32, ::std::string> recipeId;
84 ::ll::TypedStorage<8, 24, ::std::vector<::RecipeIngredient>> ingredients;
85 ::ll::TypedStorage<8, 56, ::Recipe::Results> results;
86 ::ll::TypedStorage<8, 48, ::HashedString> tag;
87 ::ll::TypedStorage<4, 4, int> priority;
88 ::ll::TypedStorage<8, 8, ::mce::UUID const*> uuid;
89 ::ll::TypedStorage<8, 32, ::RecipeUnlockingRequirement> unlockingRequirement;
90 ::ll::TypedStorage<8, 24, ::SemVersion> formatVersion;
91 // NOLINTEND
92
93 public:
94 // member functions
95 // NOLINTBEGIN
97 // NOLINTEND
98
99 public:
100 // destructor thunk
101 // NOLINTBEGIN
102 MCAPI void $dtor();
103 // NOLINTEND
104 };
105
106 using Ingredients = ::std::vector<::RecipeIngredient>;
107
108 using ResultList = ::std::vector<::ItemInstance>;
109
110 using UnloadedItemInstanceResultList = ::std::vector<::NetworkItemInstanceDescriptor>;
111
112public:
113 // member variables
114 // NOLINTBEGIN
115 ::ll::TypedStorage<8, 32, ::std::string> mRecipeId;
116 ::ll::TypedStorage<8, 16, ::mce::UUID> mMyId;
117 ::ll::TypedStorage<4, 4, int> mWidth;
118 ::ll::TypedStorage<4, 4, int> mHeight;
119 ::ll::TypedStorage<4, 4, int> mPriority;
120 ::ll::TypedStorage<4, 4, ::RecipeNetId> mRecipeNetId;
121 ::ll::TypedStorage<8, 24, ::std::vector<::RecipeIngredient>> mMyIngredients;
122 ::ll::TypedStorage<8, 56, ::Recipe::Results> mResults;
123 ::ll::TypedStorage<8, 32, ::RecipeUnlockingRequirement> mUnlockingRequirement;
124 ::ll::TypedStorage<8, 24, ::SemVersion> mRecipeDataVersion;
125 ::ll::TypedStorage<8, 48, ::HashedString> mTag;
126 // NOLINTEND
127
128public:
129 // prevent constructor by default
130 Recipe();
131
132public:
133 // virtual functions
134 // NOLINTBEGIN
135 virtual ~Recipe();
136
137#ifdef LL_PLAT_S
138 virtual ::std::vector<::ItemInstance> const&
139 assemble(::CraftingContainer& craftingContainer, ::CraftingContext& craftingContext) const = 0;
140#else // LL_PLAT_C
141 virtual ::std::vector<::ItemInstance> const&
142 assemble(::CraftingContainer& craftSlots, ::CraftingContext& craftingContext) const = 0;
143#endif
144
145 virtual int getCraftingSize() const = 0;
146
147 virtual ::RecipeIngredient const& getIngredient(int x, int y) const = 0;
148
149 virtual bool isShapeless() const = 0;
150
151 virtual bool matches(::CraftingContainer const& craftSlots, ::CraftingContext const& craftingContext) const = 0;
152
153 virtual int size() const = 0;
154
155 virtual ::mce::UUID const& getId() const;
156
157 virtual ::std::vector<::ItemInstance> const& getResultItems() const;
158
159 virtual bool isMultiRecipe() const;
160
161 virtual bool hasDataDrivenResult() const;
162
163 virtual bool itemValidForRecipe(::ItemDescriptor const& recipeItem, ::ItemStack const& item) const;
164
165 virtual bool itemsMatch(::ItemDescriptor const& lhs, ::ItemDescriptor const& rhs) const;
166
167 virtual bool
168 itemsMatch(::ItemDescriptor const& lhs, ::ItemDescriptor const& rhs, ::CompoundTag const* rhsTag) const;
169
170 virtual uint64 getIngredientsHash() const;
171 // NOLINTEND
172
173public:
174 // member functions
175 // NOLINTBEGIN
176 MCAPI explicit Recipe(::Recipe::ConstructionContext&& context);
177
178#ifdef LL_PLAT_C
179 MCAPI ::IngredientSearchResults
180 checkContainerItemsForUsability(::std::vector<::ContainerModel*> const& containers) const;
181#endif
182
183 MCAPI int countQuantityOfIngredient(::ItemInstance const& ingredient) const;
184 // NOLINTEND
185
186public:
187 // static functions
188 // NOLINTBEGIN
189 MCAPI static bool isAnyAuxValue(::ItemDescriptor const& ii);
190 // NOLINTEND
191
192public:
193 // constructor thunks
194 // NOLINTBEGIN
195 MCAPI void* $ctor(::Recipe::ConstructionContext&& context);
196 // NOLINTEND
197
198public:
199 // destructor thunk
200 // NOLINTBEGIN
201 MCAPI void $dtor();
202 // NOLINTEND
203
204public:
205 // virtual function thunks
206 // NOLINTBEGIN
207 MCFOLD ::mce::UUID const& $getId() const;
208
209 MCFOLD ::std::vector<::ItemInstance> const& $getResultItems() const;
210
211 MCFOLD bool $isMultiRecipe() const;
212
213 MCFOLD bool $hasDataDrivenResult() const;
214
215 MCAPI bool $itemValidForRecipe(::ItemDescriptor const& recipeItem, ::ItemStack const& item) const;
216
217 MCAPI bool $itemsMatch(::ItemDescriptor const& lhs, ::ItemDescriptor const& rhs) const;
218
219 MCAPI bool $itemsMatch(::ItemDescriptor const& lhs, ::ItemDescriptor const& rhs, ::CompoundTag const* rhsTag) const;
220
221 MCAPI uint64 $getIngredientsHash() const;
222
223
224 // NOLINTEND
225
226public:
227 // vftables
228 // NOLINTBEGIN
229 MCAPI static void** $vftable();
230 // NOLINTEND
231};
Definition BlockPalette.h:18
Definition CompoundTag.h:18
Definition ContainerModel.h:24
Definition CraftingContainer.h:14
Definition CraftingContext.h:20
Definition ItemDescriptor.h:25
Definition ItemInstance.h:15
Definition ItemStack.h:26
Definition NetworkItemInstanceDescriptor.h:17
Definition RecipeIngredient.h:8
Definition Recipe.h:41
Definition IngredientSearchResults.h:10
Definition RecipeNetIdTag.h:5
Definition Recipe.h:79
Definition context.h:5