LeviLamina
Loading...
Searching...
No Matches
BlockDefinitionGroup.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/deps/core/debug/log/LogArea.h"
8#include "mc/deps/core/file/PathBuffer.h"
9#include "mc/deps/core/utility/json_utils/JsonSchemaObjectNode.h"
10#include "mc/resources/JsonBetaState.h"
11#include "mc/world/item/CreativeItemCategory.h"
12
13// auto generated forward declare list
14// clang-format off
15class Block;
16class BlockLegacy;
17class CompoundTag;
18class Experiments;
20class Level;
23class SemVersion;
25struct BlockDefinition;
26struct BlockDescription;
28namespace Json { class Value; }
29namespace JsonUtil { class EmptyClass; }
30namespace cereal { struct ReflectionCtx; }
31// clang-format on
32
34public:
35 // BlockDefinitionGroup inner types declare
36 // clang-format off
37 struct BlockResource;
38 // clang-format on
39
40 // BlockDefinitionGroup inner types define
42 public:
43 // member variables
44 // NOLINTBEGIN
53 // NOLINTEND
54
55 public:
56 // prevent constructor by default
57 BlockResource& operator=(BlockResource const&);
60
61 public:
62 // member functions
63 // NOLINTBEGIN
64 MCAPI ~BlockResource();
65 // NOLINTEND
66
67 public:
68 // destructor thunk
69 // NOLINTBEGIN
70 MCAPI void $dtor();
71 // NOLINTEND
72 };
73
74public:
75 // member variables
76 // NOLINTBEGIN
84 // NOLINTEND
85
86public:
87 // prevent constructor by default
91
92public:
93 // member functions
94 // NOLINTBEGIN
96
97 MCAPI void _applyBlockStates(::BlockLegacy* block, ::BlockDefinition const& definition);
98
99 MCAPI void _buildBlockDescriptionSchema(
101 );
102
103 MCAPI void _buildBlockMenuCategorySchema(
105 );
106
107 MCAPI bool _checkInvalidPermutationComponents(::BlockComponentGroupDescription const& componentGroupDescription);
108
109 MCAPI bool _loadBlockDescription(
110 ::Json::Value const& root,
111 ::BlockDescription& desc,
112 ::JsonBetaState& canUseBeta,
113 ::IPackLoadContext const& packLoadContext,
114 ::SemVersion const& jsonVersion
115 );
116
117 MCAPI bool _loadComponents(
118 ::Json::Value const& root,
119 ::BlockDefinition& definition,
120 ::IPackLoadContext& packLoadContext,
121 ::JsonBetaState canUseBeta
122 );
123
124 MCAPI void
125 _loadComponentsForLegacyCompabitility(::SemVersion const& originalJsonVersion, ::BlockDefinition& definition);
126
127 MCAPI bool _loadDefinitionFormatVersion(::Json::Value const& root, ::SemVersion& version);
128
129 MCAPI bool
130 _loadEvents(::Json::Value const& root, ::BlockDefinition& definition, ::IPackLoadContext& packLoadContext);
131
132 MCAPI bool _parseComponents(
133 ::Json::Value const& blockRoot,
134 ::BlockComponentGroupDescription& componentGroupDescription,
135 ::std::string const& blockIdentifier,
136 ::SemVersion const& originalJsonVersion,
137 ::IPackLoadContext& packLoadContext,
138 ::JsonBetaState canUseBeta
139 );
140
141 MCAPI ::CreativeItemCategory _stringToCreativeItemCategory(::std::string const& str);
142
143 MCAPI bool _validatePrereleaseRequirements(
144 ::LogArea logArea,
145 ::std::string const& jsonType,
146 ::std::string const& jsonIdentifier,
147 ::std::optional<::SemVersion> const& releaseVersion,
148 ::std::vector<::PackLoadRequirement> const& requirements,
149 ::IPackLoadContext const& packLoadContext,
150 ::JsonBetaState canUseBeta
151 ) const;
152
153 MCAPI void buildBlockSchema();
154
155 MCAPI ::std::unique_ptr<::BlockDefinition>
156 generateBlockDefinition(::BlockDefinitionGroup::BlockResource const& resource, ::IPackLoadContext& packLoadContext);
157
158 MCAPI ::std::vector<::std::pair<::std::string, ::CompoundTag>> generateServerBlockProperties() const;
159
160 MCAPI ::std::vector<::BlockDefinition const*> getBlockDefinitions() const;
161
162 MCAPI void initBlockFromDefinition(::Block& block, ::BlockPermutationDescription const& definition);
163
164 MCAPI void initBlockLegacyFromDefinition(::BlockLegacy& blockLegacy, ::BlockDefinition const& definition);
165
166 MCAPI void initializeBlockFromDefinition(::BlockDefinition const& definition, ::Level& level);
167
168 MCAPI ::std::unique_ptr<::BlockDefinition> loadResource(
169 ::std::string upgradedJsonData,
171 ::std::string const& resourcePacklocation,
172 ::IPackLoadContext& packLoadContext
173 );
174
175 MCAPI void loadResources(::ResourcePackManager const& resourcePackManager, ::Experiments const& experiments);
176
177 MCAPI void registerBlockFromDefinition(::BlockDefinition const& definition, bool assertIfAlreadyExists);
178
179 MCAPI ::WeakPtr<::BlockLegacy> registerDataDrivenBlock(::BlockDescription const& desc);
180
181 MCAPI ~BlockDefinitionGroup();
182 // NOLINTEND
183
184public:
185 // constructor thunks
186 // NOLINTBEGIN
187 MCAPI void* $ctor(::cereal::ReflectionCtx const& ctx);
188 // NOLINTEND
189
190public:
191 // destructor thunk
192 // NOLINTBEGIN
193 MCAPI void $dtor();
194 // NOLINTEND
195};
Definition BlockDefinitionGroup.h:33
Definition BlockLegacy.h:88
Definition Block.h:36
Definition CompoundTag.h:13
Definition PathBuffer.h:8
Definition Experiments.h:14
Definition IPackLoadContext.h:17
Definition JsonSchemaObjectNode.h:8
Definition Value.h:16
Definition Level.h:234
Definition PackLoadRequirement.h:13
Definition ResourcePackManager.h:24
Definition SemVersion.h:15
Definition BlockComponentGroupDescription.h:11
Definition BlockDefinitionGroup.h:41
Definition BlockDefinition.h:13
Definition BlockDescription.h:5
Definition BlockPermutationDescription.h:5
Definition ReflectionCtx.h:11
Definition ctx.h:5
Definition Alias.h:14