LeviLamina
Loading...
Searching...
No Matches
BlockDefinitionGroup.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/common/WeakPtr.h"
5
6// auto generated inclusion list
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/MinEngineVersion.h"
14#include "mc/util/json_util/JsonSchemaObjectNode.h"
15#include "mc/world/level/block/definition/BlockDescription.h"
16#include "mc/world/level/block/traits/BlockTraitFactory.h"
17
18// auto generated forward declare list
19// clang-format off
20class DefinitionEvent;
21class Experiments;
23class Level;
25class PackLoadContext;
29struct BlockDefinition;
31namespace JsonUtil { class EmptyClass; }
32namespace cereal { struct ReflectionCtx; }
33// clang-format on
34
35class BlockDefinitionGroup {
36public:
37 // BlockDefinitionGroup inner types declare
38 // clang-format off
39 struct BlockResource;
40 // clang-format on
41
42 // BlockDefinitionGroup inner types define
44 public:
45 // member variables
46 // NOLINTBEGIN
47 ::ll::TypedStorage<8, 24, ::SemVersion> mFormatVersion;
48 ::ll::TypedStorage<8, 32, ::MinEngineVersion> mMinEngineVersion;
49 ::ll::TypedStorage<8, 24, ::SemVersion> mOriginalJsonVersion;
50 ::ll::TypedStorage<8, 240, ::BlockDescription> mDescription;
51 ::ll::TypedStorage<8, 32, ::std::string> mResourcePackLocation;
52 ::ll::TypedStorage<8, 32, ::std::string> mResourceFileLocation;
53 ::ll::TypedStorage<8, 16, ::Json::Value> mRoot;
54 // NOLINTEND
55 };
56
57public:
58 // member variables
59 // NOLINTBEGIN
60 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::DefinitionEvent>> mEventHandlers;
61 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::unique_ptr<::BlockDefinition>>>
62 mBlockDefinitions;
63 ::ll::TypedStorage<
64 8,
65 16,
66 ::std::shared_ptr<::JsonUtil::JsonSchemaObjectNode<::JsonUtil::EmptyClass, ::BlockDescription>>>
67 mDescriptionSchema;
68 ::ll::TypedStorage<8, 128, ::BlockTraitFactory> mTraitFactory;
69 ::ll::TypedStorage<4, 4, int> mLastBlockId;
70 ::ll::TypedStorage<8, 24, ::std::vector<::std::string>> mBlockResourceGroupNames;
71 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::cereal::ReflectionCtx const>> mCtx;
72 ::ll::TypedStorage<8, 8, ::IPuvLoadEventing&> mEventing;
73 // NOLINTEND
74
75public:
76 LLNDAPI ::BlockType* registerDataDrivenBlock(::BlockDescription const& desc);
77
78 LLAPI void initBlockTypeFromDefinition(::BlockType& blockType, ::BlockDefinition const& definition);
79
80 LLAPI void initializeBlocks(::Level& level);
81
82public:
83 // prevent constructor by default
84 BlockDefinitionGroup& operator=(BlockDefinitionGroup const&);
85 BlockDefinitionGroup(BlockDefinitionGroup const&);
86 BlockDefinitionGroup();
87
88public:
89 // member functions
90 // NOLINTBEGIN
91 MCAPI BlockDefinitionGroup(::cereal::ReflectionCtx const& ctx, ::IPuvLoadEventing& eventing);
92
93 MCAPI void _buildBlockDescriptionSchema(
95 );
96
97 MCAPI bool _parseComponents(
98 ::Json::Value const& blockRoot,
99 ::BlockComponentGroupDescription& componentGroupDescription,
100 ::std::string const& blockIdentifier,
101 ::SemVersion const& originalJsonVersion,
102 ::PackLoadContext& packLoadContext,
103 bool isVanillaBlock
104 );
105
106 MCAPI void digestServerBlockProperties(::std::vector<::ServerBlockProperty> const& blocks);
107
108 MCAPI ::std::unique_ptr<::BlockDefinition>
109 generateBlockDefinition(::BlockDefinitionGroup::BlockResource const& resource, ::PackLoadContext& packLoadContext);
110
111 MCAPI ::std::vector<::ServerBlockProperty> generateServerBlockProperties() const;
112
113 MCAPI ::std::vector<::BlockDefinition const*> getBlockDefinitions() const;
114
115 MCAPI void initializeBlockFromDefinition(::BlockDefinition const& definition, ::Level& level);
116
117 MCAPI ::std::unique_ptr<::BlockDefinition> loadResource(
118 ::std::string upgradedJsonData,
120 ::std::string const& resourcePacklocation,
121 ::PackLoadContext& packLoadContext
122 );
123
124 MCAPI void loadResources(
125 ::ResourcePackManager const& resourcePackManager,
126 ::Experiments const& experiments,
128 );
129
130 MCAPI void registerBlockFromDefinition(::BlockDefinition const& definition, bool assertIfAlreadyExists);
131
132 MCAPI ::BlockDefinition const* tryGetBlockDefinition(::std::string const& name) const;
133
134 MCAPI ~BlockDefinitionGroup();
135 // NOLINTEND
136
137public:
138 // static functions
139 // NOLINTBEGIN
140 MCAPI static ::SharedTypes::v1_21_110::ItemCategory::CreativeItemCategory
141 _stringToCreativeItemCategory(::std::string const& category, ::std::string const& blockIdentifier);
142
143 MCAPI static 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 ::PackLoadContext const& packLoadContext
150 );
151 // NOLINTEND
152
153public:
154 // constructor thunks
155 // NOLINTBEGIN
156 MCAPI void* $ctor(::cereal::ReflectionCtx const& ctx, ::IPuvLoadEventing& eventing);
157 // NOLINTEND
158
159public:
160 // destructor thunk
161 // NOLINTBEGIN
162 MCAPI void $dtor();
163 // NOLINTEND
164};
Definition NonOwnerPointer.h:9
Definition BlockType.h:79
Definition PathBuffer.h:8
Definition DefinitionEvent.h:18
Definition Experiments.h:14
Definition IPuvLoadEventing.h:10
Definition EmptyClass.h:7
Definition JsonSchemaObjectNode.h:8
Definition Value.h:16
Definition Level.h:254
Definition LinkedAssetValidator.h:8
Definition PackLoadContext.h:20
Definition PackLoadRequirement.h:12
Definition ResourcePackManager.h:36
Definition SemVersion.h:15
Definition BlockComponentGroupDescription.h:13
Definition BlockDefinitionGroup.h:43
Definition BlockDefinition.h:20
Definition BlockDescription.h:15
Definition ServerBlockProperty.h:8
Definition ReflectionCtx.h:11
Definition ctx.h:5