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