21class BlockDescriptor {
34 enum class CompareType :
int {
45 ::ll::TypedStorage<8, 8, ::BlockDescriptor&> mBlockDescriptor;
50 ResolveHelper& operator=(ResolveHelper
const&);
51 ResolveHelper(ResolveHelper
const&);
57 MCAPI
void resolve(
bool logInvalidBlocks);
65 ::ll::TypedStorage<8, 8, ::gsl::not_null<::BlockState const*>> mBlockState;
66 ::ll::TypedStorage<4, 4, int> mValue;
74 ::ll::TypedStorage<8, 48, ::HashedString> mName;
75 ::ll::TypedStorage<8, 40, ::SharedTypes::Legacy::BlockDescriptor::Compound> mState;
89 MCAPI State(
::HashedString name, ::std::string
const& stringState);
101 MCAPI
void* $ctor(
::HashedString name, ::std::string
const& stringState);
116 ::ll::TypedStorage<8, 8, ::BlockDescriptor::ResolveHelper> mResolveHelper;
117 ::ll::TypedStorage<8, 48, ::HashedString> mBlockName;
118 ::ll::TypedStorage<1, 1, bool> mIsComplexAlias;
119 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::ExpressionNode>> mTags;
120 ::ll::TypedStorage<8, 24, ::std::vector<::BlockDescriptor::State>> mRawStates;
121 ::ll::TypedStorage<8, 24, ::std::vector<::BlockDescriptor::ResolvedState>> mResolvedStates;
122 ::ll::TypedStorage<4, 4, ::BlockDescriptor::CompareType> mCompareType;
123 ::ll::TypedStorage<1, 1, bool> mContentLogOnError;
124 ::ll::TypedStorage<8, 8, ::Block const*> mBlock;
125 ::ll::TypedStorage<1, 1, bool> mValid;
126 ::ll::TypedStorage<1, 1, bool> mIsDeferred;
127 ::ll::TypedStorage<8, 24, ::SpinLockImpl> mLock;
133 MCAPI BlockDescriptor();
139 MCAPI BlockDescriptor(::BlockDescriptor&& rhs);
141 MCAPI BlockDescriptor(::BlockDescriptor
const& rhs);
143 MCAPI BlockDescriptor(::std::string
const& name, ::std::vector<::BlockDescriptor::State>&& states);
145 MCAPI
bool _anyTagsMatch(
::Block const& block)
const;
147 MCAPI
bool _statesMatch(
::Block const& block)
const;
149 MCAPI ::Block
const& getBlockOrUnknownBlock()
const;
151 MCAPI ::BlockDescriptor::CompareType
const& getCompareType()
const;
153 MCAPI ::std::string
const& getFullName()
const;
155 MCFOLD ::std::vector<::BlockDescriptor::State>
const& getStates()
const;
157 MCAPI ::std::string getTagExpression()
const;
159 MCAPI
bool isValid()
const;
161 MCAPI
bool matches(
::Block const& block)
const;
163 MCAPI
bool matches(::BlockDescriptor
const& otherDescriptor)
const;
165 MCAPI
void operator=(::BlockDescriptor&& rhs);
167 MCAPI
void operator=(::BlockDescriptor
const& rhs);
169 MCAPI
bool operator==(::BlockDescriptor
const& rhs)
const;
171 MCFOLD
void setContentLogOnError(
bool value)
const;
173 MCAPI ::std::unique_ptr<::CompoundTag> toCompoundTag()
const;
175 MCAPI ::Block
const* tryGetBlock()
const;
177 MCAPI ::Block
const* tryGetBlockNoLogging()
const;
179 MCAPI ~BlockDescriptor();
185 MCAPI
static bool anyMatch(::std::vector<::BlockDescriptor>
const& blockDescriptors,
::Block const& block);
188 anyMatch(::std::vector<::BlockDescriptor>
const& blockDescriptors, ::BlockDescriptor
const& otherBlockDescriptor);
192 MCAPI static ::BlockDescriptor fromCompoundTag(
::CompoundTag const& tag);
194 MCAPI static ::BlockDescriptor fromTagExpression(::std::string
const& tagExpression, ::MolangVersion molangVersion);
196 MCAPI static ::SharedTypes::Legacy::BlockDescriptor toSharedTypes(::BlockDescriptor
const& instance);
202 MCAPI static ::std::add_lvalue_reference_t<char const[]> JSON_NAME_FIELD();
204 MCAPI static ::std::add_lvalue_reference_t<char const[]> JSON_STATES_FIELD();
206 MCAPI static ::std::add_lvalue_reference_t<char const[]> JSON_TAGS_FIELD();
218 MCAPI
void* $ctor(::BlockDescriptor&& rhs);
220 MCAPI
void* $ctor(::BlockDescriptor
const& rhs);
222 MCAPI
void* $ctor(::std::string
const& name, ::std::vector<::BlockDescriptor::State>&& states);