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;
28class Level;
33struct BlockDefinition;
35namespace JsonUtil { class EmptyClass; }
36namespace cereal { struct ReflectionCtx; }
37// clang-format on
38
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, 176, ::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
97
98public:
99 // member functions
100 // NOLINTBEGIN
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 ::IPackLoadContext const& packLoadContext,
120 ::SemVersion const& jsonVersion
121 );
122
123 MCAPI bool _loadComponents(
124 ::Json::Value const& root,
125 ::BlockDefinition& definition,
126 ::IPackLoadContext& 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, ::IPackLoadContext& packLoadContext);
135
136 MCAPI bool _parseComponents(
137 ::Json::Value const& blockRoot,
138 ::BlockComponentGroupDescription& componentGroupDescription,
139 ::std::string const& blockIdentifier,
140 ::SemVersion const& originalJsonVersion,
141 ::IPackLoadContext& 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 bool _validatePrereleaseRequirements(
150 ::LogArea logArea,
151 ::std::string const& jsonType,
152 ::std::string const& jsonIdentifier,
153 ::std::optional<::SemVersion> const& releaseVersion,
154 ::std::vector<::PackLoadRequirement> const& requirements,
155 ::IPackLoadContext const& packLoadContext,
156 ::JsonBetaState canUseBeta
157 ) const;
158
159 MCAPI void buildBlockSchema();
160
161 MCAPI void digestServerBlockProperties(::std::vector<::std::pair<::std::string, ::CompoundTag>> const& blocks);
162
163 MCAPI ::std::unique_ptr<::BlockDefinition>
164 generateBlockDefinition(::BlockDefinitionGroup::BlockResource const& resource, ::IPackLoadContext& packLoadContext);
165
166 MCAPI ::std::vector<::std::pair<::std::string, ::CompoundTag>> generateServerBlockProperties() const;
167
168 MCAPI ::std::vector<::BlockDefinition const*> getBlockDefinitions() const;
169
170 MCAPI void initBlockFromDefinition(::Block& block, ::BlockPermutationDescription const& definition);
171
172 MCAPI void initializeBlockFromDefinition(::BlockDefinition const& definition, ::Level& level);
173
174 MCAPI ::std::unique_ptr<::BlockDefinition> loadResource(
175 ::std::string upgradedJsonData,
177 ::std::string const& resourcePacklocation,
178 ::IPackLoadContext& packLoadContext
179 );
180
181 MCAPI void loadResources(
182 ::ResourcePackManager const& resourcePackManager,
183 ::Experiments const& experiments,
185 );
186
187 MCAPI void registerBlockFromDefinition(::BlockDefinition const& definition, bool assertIfAlreadyExists);
188
189 MCAPI ::WeakPtr<::BlockType> registerDataDrivenBlock(::BlockDescription const& desc);
190
191 MCAPI ~BlockDefinitionGroup();
192 // NOLINTEND
193
194public:
195 // constructor thunks
196 // NOLINTBEGIN
197 MCAPI void* $ctor(::cereal::ReflectionCtx const& ctx, ::IMinecraftEventing& eventing);
198 // NOLINTEND
199
200public:
201 // destructor thunk
202 // NOLINTBEGIN
203 MCAPI void $dtor();
204 // NOLINTEND
205};
Definition NonOwnerPointer.h:9
Definition BlockDefinitionGroup.h:39
Definition BlockType.h:84
Definition Block.h:38
Definition CompoundTag.h:13
Definition PathBuffer.h:8
Definition DefinitionEvent.h:17
Definition Experiments.h:14
Definition IMinecraftEventing.h:149
Definition IPackLoadContext.h:20
Definition JsonSchemaObjectNode.h:8
Definition Value.h:16
Definition Level.h:247
Definition LinkedAssetValidator.h:8
Definition PackLoadRequirement.h:13
Definition ResourcePackManager.h:24
Definition SemVersion.h:16
Definition BlockComponentGroupDescription.h:13
Definition BlockDefinitionGroup.h:47
Definition BlockDefinition.h:20
Definition BlockDescription.h:15
Definition BlockPermutationDescription.h:9
Definition ReflectionCtx.h:11
Definition ctx.h:5