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/sem_ver/SemVersion.h"
10#include "mc/deps/core/utility/NonOwnerPointer.h"
11#include "mc/deps/json/Value.h"
12#include "mc/deps/shared_types/v1_21_110/item/ItemCategory.h"
13#include "mc/resources/JsonBetaState.h"
14#include "mc/resources/MinEngineVersion.h"
15#include "mc/util/json_util/JsonSchemaObjectNode.h"
16#include "mc/world/level/block/definition/BlockDescription.h"
17#include "mc/world/level/block/traits/BlockTraitFactory.h"
18
19// auto generated forward declare list
20// clang-format off
21class Block;
22class BlockType;
23class CompoundTag;
24class DefinitionEvent;
25class Experiments;
27class Level;
29class PackLoadContext;
33struct BlockDefinition;
35namespace JsonUtil { class EmptyClass; }
36namespace cereal { struct ReflectionCtx; }
37// clang-format on
38
39class BlockDefinitionGroup {
40public:
41 // BlockDefinitionGroup inner types declare
42 // clang-format off
43 struct BlockResource;
44 // clang-format on
45
46 // BlockDefinitionGroup inner types define
48 public:
49 // member variables
50 // NOLINTBEGIN
51 ::ll::TypedStorage<8, 24, ::SemVersion> mFormatVersion;
52 ::ll::TypedStorage<8, 32, ::MinEngineVersion> mMinEngineVersion;
53 ::ll::TypedStorage<8, 24, ::SemVersion> mOriginalJsonVersion;
54 ::ll::TypedStorage<8, 192, ::BlockDescription> mDescription;
55 ::ll::TypedStorage<1, 1, ::JsonBetaState> mIsBeta;
56 ::ll::TypedStorage<8, 32, ::std::string> mResourcePackLocation;
57 ::ll::TypedStorage<8, 32, ::std::string> mResourceFileLocation;
58 ::ll::TypedStorage<8, 16, ::Json::Value> mRoot;
59 // NOLINTEND
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
77 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::DefinitionEvent>> mEventHandlers;
78 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::unique_ptr<::BlockDefinition>>>
79 mBlockDefinitions;
80 ::ll::TypedStorage<
81 8,
82 16,
83 ::std::shared_ptr<::JsonUtil::JsonSchemaObjectNode<::JsonUtil::EmptyClass, ::BlockDescription>>>
84 mDescriptionSchema;
85 ::ll::TypedStorage<8, 128, ::BlockTraitFactory> mTraitFactory;
86 ::ll::TypedStorage<4, 4, int> mLastBlockId;
87 ::ll::TypedStorage<8, 24, ::std::vector<::std::string>> mBlockResourceGroupNames;
88 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::cereal::ReflectionCtx const>> mCtx;
89 ::ll::TypedStorage<8, 8, ::IMinecraftEventing&> mEventing;
90 // NOLINTEND
91
92public:
93 // prevent constructor by default
94 BlockDefinitionGroup& operator=(BlockDefinitionGroup const&);
95 BlockDefinitionGroup(BlockDefinitionGroup const&);
96 BlockDefinitionGroup();
97
98public:
99 // member functions
100 // NOLINTBEGIN
101 MCAPI BlockDefinitionGroup(::cereal::ReflectionCtx const& ctx, ::IMinecraftEventing& eventing);
102
103 MCAPI void _applyBlockStates(::BlockType* block, ::BlockDefinition const& definition);
104
105 MCAPI void _buildBlockDescriptionSchema(
107 );
108
109 MCAPI void _buildBlockMenuCategorySchema(
111 );
112
113 MCAPI bool _checkInvalidPermutationComponents(::BlockComponentGroupDescription const& componentGroupDescription);
114
115 MCAPI bool _loadBlockDescription(
116 ::Json::Value const& root,
117 ::BlockDescription& desc,
118 ::JsonBetaState& canUseBeta,
119 ::PackLoadContext const& packLoadContext,
120 ::SemVersion const& jsonVersion
121 );
122
123 MCAPI bool _loadComponents(
124 ::Json::Value const& root,
125 ::BlockDefinition& definition,
126 ::PackLoadContext& packLoadContext,
127 ::JsonBetaState canUseBeta
128 );
129
130 MCAPI void
131 _loadComponentsForLegacyCompabitility(::SemVersion const& originalJsonVersion, ::BlockDefinition& definition);
132
133 MCAPI bool
134 _loadEvents(::Json::Value const& root, ::BlockDefinition& definition, ::PackLoadContext& packLoadContext);
135
136 MCAPI bool _parseComponents(
137 ::Json::Value const& blockRoot,
138 ::BlockComponentGroupDescription& componentGroupDescription,
139 ::std::string const& blockIdentifier,
140 ::SemVersion const& originalJsonVersion,
141 ::PackLoadContext& packLoadContext,
142 ::JsonBetaState canUseBeta,
143 bool isVanillaBlock
144 );
145
146 MCAPI ::SharedTypes::v1_21_110::ItemCategory::CreativeItemCategory
147 _stringToCreativeItemCategory(::std::string const& category, ::std::string const& blockIdentifier);
148
149 MCAPI void
150 _upgradeComponentsForLegacyCompatibility(::SemVersion const& originalJsonVersion, ::BlockDefinition& definition);
151
152 MCAPI bool _validateAndAssignBlockId(::BlockDescription& desc, bool isFromBaseGamePack);
153
154 MCAPI bool _validatePrereleaseRequirements(
155 ::LogArea logArea,
156 ::std::string const& jsonType,
157 ::std::string const& jsonIdentifier,
158 ::std::optional<::SemVersion> const& releaseVersion,
159 ::std::vector<::PackLoadRequirement> const& requirements,
160 ::PackLoadContext const& packLoadContext,
161 ::JsonBetaState canUseBeta
162 ) const;
163
164 MCAPI void buildBlockSchema();
165
166 MCAPI void digestServerBlockProperties(::std::vector<::std::pair<::std::string, ::CompoundTag>> const& blocks);
167
168 MCAPI ::std::unique_ptr<::BlockDefinition>
169 generateBlockDefinition(::BlockDefinitionGroup::BlockResource const& resource, ::PackLoadContext& packLoadContext);
170
171 MCAPI ::std::vector<::std::pair<::std::string, ::CompoundTag>> generateServerBlockProperties() const;
172
173 MCAPI ::std::vector<::BlockDefinition const*> getBlockDefinitions() const;
174
175 MCAPI void initBlockFromDefinition(::Block& block, ::BlockPermutationDescription const& definition);
176
177 MCAPI void initBlockTypeFromDefinition(::BlockType& blockType, ::BlockDefinition const& definition);
178
179 MCAPI void initializeBlockFromDefinition(::BlockDefinition const& definition, ::Level& level);
180
181 MCAPI ::std::unique_ptr<::BlockDefinition> loadResource(
182 ::std::string upgradedJsonData,
184 ::std::string const& resourcePacklocation,
185 ::PackLoadContext& packLoadContext
186 );
187
188 MCAPI void loadResources(
189 ::ResourcePackManager const& resourcePackManager,
190 ::Experiments const& experiments,
192 );
193
194 MCAPI void registerBlockDefinition(::std::unique_ptr<::BlockDefinition> blockDef);
195
196 MCAPI void registerBlockFromDefinition(::BlockDefinition const& definition, bool assertIfAlreadyExists);
197
198 MCAPI ::WeakPtr<::BlockType> registerDataDrivenBlock(::BlockDescription const& desc);
199
200 MCAPI ~BlockDefinitionGroup();
201 // NOLINTEND
202
203public:
204 // static functions
205 // NOLINTBEGIN
206 MCAPI static bool
207 _validatedMultiBlockBaseComponentConstraints(::BlockComponentGroupDescription const& descriptionGroup);
208
209 MCAPI static bool
210 _validatedMultiBlockPermComponentConstraints(::BlockComponentGroupDescription const& descriptionGroup);
211 // NOLINTEND
212
213public:
214 // constructor thunks
215 // NOLINTBEGIN
216 MCAPI void* $ctor(::cereal::ReflectionCtx const& ctx, ::IMinecraftEventing& eventing);
217 // NOLINTEND
218
219public:
220 // destructor thunk
221 // NOLINTBEGIN
222 MCAPI void $dtor();
223 // NOLINTEND
224};
Definition NonOwnerPointer.h:9
Definition BlockType.h:84
Definition Block.h:43
Definition CompoundTag.h:23
Definition PathBuffer.h:8
Definition DefinitionEvent.h:18
Definition Experiments.h:14
Definition IMinecraftEventing.h:134
Definition EmptyClass.h:7
Definition JsonSchemaObjectNode.h:8
Definition Value.h:16
Definition Level.h:250
Definition LinkedAssetValidator.h:8
Definition PackLoadContext.h:20
Definition PackLoadRequirement.h:13
Definition ResourcePackManager.h:30
Definition SemVersion.h:15
Definition BlockComponentGroupDescription.h:13
Definition BlockDefinitionGroup.h:47
Definition BlockDefinition.h:21
Definition BlockDescription.h:15
Definition BlockPermutationDescription.h:9
Definition ReflectionCtx.h:11
Definition ctx.h:5