LeviLamina
Loading...
Searching...
No Matches
ItemDescriptor.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/common/WeakPtr.h"
7#include "mc/molang/MolangVersion.h"
8#include "mc/platform/brstd/function_ref.h"
9
10// auto generated forward declare list
11// clang-format off
12class BinaryStream;
13class Block;
14class BlockType;
15class CompoundTag;
16class Item;
17class ItemStack;
19struct ItemTag;
20namespace Json { class Value; }
21namespace SharedTypes::Legacy { struct ItemDescriptor; }
22namespace cereal { struct ReflectionCtx; }
23// clang-format on
24
25class ItemDescriptor {
26public:
27 // ItemDescriptor inner types declare
28 // clang-format off
29 struct ItemEntry;
30 struct BaseDescriptor;
31 // clang-format on
32
33 // ItemDescriptor inner types define
34 enum class InternalType : uchar {
35 Invalid = 0,
36 Default = 1,
37 Molang = 2,
38 ItemTag = 3,
39 Deferred = 4,
40 ComplexAlias = 5,
41 };
42
43 struct ItemEntry {
44 public:
45 // member variables
46 // NOLINTBEGIN
47 ::ll::TypedStorage<8, 8, ::Item const*> mItem;
48 ::ll::TypedStorage<2, 2, short> mAuxValue;
49 // NOLINTEND
50 };
51
53 public:
54 // virtual functions
55 // NOLINTBEGIN
56 virtual ::std::unique_ptr<::ItemDescriptor::BaseDescriptor> clone() const = 0;
57
58 virtual bool sameItems(::ItemDescriptor::BaseDescriptor const& otherDescriptor, bool compareAux) const;
59
60 virtual bool sameItem(::ItemDescriptor::ItemEntry const& otherItem, bool compareAux) const = 0;
61
62 virtual ::std::string getFullName() const;
63
64 virtual ::std::string toString() const;
65
66 virtual ::ItemDescriptor::ItemEntry getItem() const;
67
68 virtual bool forEachItemUntil(::brstd::function_ref<bool(::Item const&, short)> func) const;
69
70 virtual ::std::map<::std::string, ::std::string> toMap() const = 0;
71
72 virtual ::std::optional<::CompoundTag> save() const = 0;
73
74 virtual void serialize(::Json::Value& val) const;
75
76 virtual void serialize(::BinaryStream& stream) const = 0;
77
78 virtual ::ItemDescriptor::InternalType getType() const = 0;
79
80 virtual bool isValid() const;
81
82 virtual uint64 getHash() const = 0;
83
84 virtual bool shouldResolve() const;
85
86 virtual ::std::unique_ptr<::ItemDescriptor::BaseDescriptor> resolve() const;
87
88 virtual ~BaseDescriptor() = default;
89 // NOLINTEND
90
91 public:
92 // virtual function thunks
93 // NOLINTBEGIN
94 MCAPI bool $sameItems(::ItemDescriptor::BaseDescriptor const& otherDescriptor, bool compareAux) const;
95
96 MCAPI ::std::string $toString() const;
97
98 MCFOLD ::ItemDescriptor::ItemEntry $getItem() const;
99
100 MCAPI bool $forEachItemUntil(::brstd::function_ref<bool(::Item const&, short)> func) const;
101
102 MCAPI void $serialize(::Json::Value& val) const;
103
104 MCFOLD bool $isValid() const;
105
106 MCFOLD bool $shouldResolve() const;
107
108 MCFOLD ::std::unique_ptr<::ItemDescriptor::BaseDescriptor> $resolve() const;
109
110
111 // NOLINTEND
112 };
113
114public:
115 // member variables
116 // NOLINTBEGIN
117 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ItemDescriptor::BaseDescriptor>> mImpl;
118 // NOLINTEND
119
120public:
121 // virtual functions
122 // NOLINTBEGIN
123 virtual ~ItemDescriptor() = default;
124
125 virtual void serialize(::Json::Value& val) const;
126
127 virtual void serialize(::BinaryStream& stream) const;
128 // NOLINTEND
129
130public:
131 // member functions
132 // NOLINTBEGIN
133 MCAPI ItemDescriptor();
134
135 MCAPI explicit ItemDescriptor(::Block const& block);
136
137 MCAPI explicit ItemDescriptor(::BlockType const& block);
138
139 MCAPI explicit ItemDescriptor(::SharedTypes::Legacy::ItemDescriptor const& desc);
140
141 MCAPI explicit ItemDescriptor(::ItemTag const& itemTag);
142
143 MCAPI ItemDescriptor(::ItemDescriptor&& rhs);
144
145 MCAPI ItemDescriptor(::ItemDescriptor const& rhs);
146
147 MCAPI explicit ItemDescriptor(::ReadOnlyBinaryStream& stream);
148
149 MCAPI ItemDescriptor(::std::string_view fullName, int itemAux);
150
151 MCAPI ItemDescriptor(::Item const& item, int auxValue);
152
153 MCAPI ItemDescriptor(::Json::Value const& val, ::MolangVersion molangVersion);
154
155 MCAPI bool forEachItemUntil(::brstd::function_ref<bool(::Item const&, short)> func) const;
156
157 MCAPI short getAuxValue() const;
158
159 MCAPI ::Block const* getBlock() const;
160
161 MCAPI ::WeakPtr<::BlockType const> const& getBlockType() const;
162
163 MCAPI ::std::string getFullName() const;
164
165 MCAPI uint64 getHash() const;
166
167 MCAPI short getId() const;
168
169 MCAPI int getIdAux() const;
170
171 MCAPI ::Item const* getItem() const;
172
173 MCAPI ::std::string getRawNameId() const;
174
175 MCAPI ::std::string getSerializedNameAndAux(bool removeInvalidAux) const;
176
177 MCAPI bool isDefinedAsItemName() const;
178
179 MCAPI bool isNull() const;
180
181 MCAPI bool isValid(bool shouldResolve) const;
182
183 MCAPI bool operator!=(::ItemDescriptor const& rhs) const;
184
185 MCAPI void operator=(::ItemDescriptor&& rhs);
186
187 MCAPI void operator=(::ItemDescriptor const& rhs);
188
189 MCAPI bool operator==(::ItemDescriptor const& rhs) const;
190
191 MCAPI bool sameItem(::ItemStack const& item, bool compareAux) const;
192
193 MCAPI bool sameItem(::ItemDescriptor const& otherItemDescriptor, bool compareAux) const;
194
195 MCAPI ::std::optional<::CompoundTag> save() const;
196
197 MCAPI ::std::string toString() const;
198 // NOLINTEND
199
200public:
201 // static functions
202 // NOLINTBEGIN
203 MCAPI static void bindType(::cereal::ReflectionCtx& ctx);
204
205 MCAPI static void fromSharedTypes(::ItemDescriptor& instance, ::SharedTypes::Legacy::ItemDescriptor const& desc);
206
207 MCAPI static ::std::optional<::ItemDescriptor> fromTag(::CompoundTag const* tag);
208
209 MCAPI static ::SharedTypes::Legacy::ItemDescriptor toSharedTypes(::ItemDescriptor const& id);
210 // NOLINTEND
211
212public:
213 // constructor thunks
214 // NOLINTBEGIN
215 MCAPI void* $ctor();
216
217 MCAPI void* $ctor(::Block const& block);
218
219 MCAPI void* $ctor(::BlockType const& block);
220
221 MCAPI void* $ctor(::SharedTypes::Legacy::ItemDescriptor const& desc);
222
223 MCAPI void* $ctor(::ItemTag const& itemTag);
224
225 MCAPI void* $ctor(::ItemDescriptor&& rhs);
226
227 MCAPI void* $ctor(::ItemDescriptor const& rhs);
228
229 MCAPI void* $ctor(::ReadOnlyBinaryStream& stream);
230
231 MCAPI void* $ctor(::std::string_view fullName, int itemAux);
232
233 MCAPI void* $ctor(::Item const& item, int auxValue);
234
235 MCAPI void* $ctor(::Json::Value const& val, ::MolangVersion molangVersion);
236 // NOLINTEND
237
238public:
239 // virtual function thunks
240 // NOLINTBEGIN
241 MCAPI void $serialize(::Json::Value& val) const;
242
243 MCAPI void $serialize(::BinaryStream& stream) const;
244
245
246 // NOLINTEND
247
248public:
249 // vftables
250 // NOLINTBEGIN
251 MCAPI static void** $vftable();
252 // NOLINTEND
253};
Definition BinaryStream.h:11
Definition BlockType.h:84
Definition Block.h:69
Definition CompoundTag.h:23
Definition ItemStack.h:35
Definition Item.h:71
Definition Value.h:16
Definition ReadOnlyBinaryStream.h:8
Definition function_ref.h:60
Definition ItemDescriptor.h:52
Definition ItemDescriptor.h:43
Definition ItemTag.h:8
Definition ItemDescriptor.h:15
Definition ReflectionCtx.h:11
Definition ctx.h:5