3#include "mc/_HeaderOutputPredefine.h"
4#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/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"
35class BlockDefinitionGroup {
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;
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>>>
66 ::std::shared_ptr<::JsonUtil::JsonSchemaObjectNode<::JsonUtil::EmptyClass, ::BlockDescription>>>
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;
80 LLAPI
void initializeBlocks(
::Level& level);
84 BlockDefinitionGroup& operator=(BlockDefinitionGroup
const&);
85 BlockDefinitionGroup(BlockDefinitionGroup
const&);
86 BlockDefinitionGroup();
100 ::std::string
const& blockIdentifier,
106 MCAPI
void digestServerBlockProperties(::std::vector<::ServerBlockProperty>
const& blocks);
108 MCNAPI ::std::unique_ptr<::BlockDefinition>
117 MCAPI ::std::unique_ptr<::BlockDefinition> loadResource(
118 ::std::string upgradedJsonData,
120 ::std::string
const& resourcePacklocation,
124 MCAPI
void loadResources(
130 MCAPI
void registerBlockFromDefinition(
::BlockDefinition const& definition,
bool assertIfAlreadyExists);
132 MCAPI ::BlockDefinition
const* tryGetBlockDefinition(::std::string
const& name)
const;
140 MCNAPI static ::SharedTypes::v1_21_110::ItemCategory::CreativeItemCategory
145 ::std::string
const& jsonType,
146 ::std::string
const& jsonIdentifier,
147 ::std::optional<::SemVersion>
const& releaseVersion,
148 ::std::vector<::PackLoadRequirement>
const& requirements,
Definition NonOwnerPointer.h:9
MCAPI ::std::unique_ptr<::BlockDefinition > generateBlockDefinition(::BlockDefinitionGroup::BlockResource const &resource, ::PackLoadContext &packLoadContext)
MCAPI ~BlockDefinitionGroup()
MCAPI bool _parseComponents(::Json::Value const &blockRoot, ::BlockComponentGroupDescription &componentGroupDescription, ::std::string const &blockIdentifier, ::SemVersion const &originalJsonVersion, ::PackLoadContext &packLoadContext, bool isVanillaBlock)
MCAPI ::std::vector<::BlockDefinition const * > getBlockDefinitions() const
static MCAPI ::SharedTypes::v1_21_110::ItemCategory::CreativeItemCategory _stringToCreativeItemCategory(::std::string const &category, ::std::string const &blockIdentifier)
MCAPI void * $ctor(::cereal::ReflectionCtx const &ctx, ::IPuvLoadEventing &eventing)
MCAPI ::std::vector<::ServerBlockProperty > generateServerBlockProperties() const
MCAPI void _buildBlockDescriptionSchema(::std::shared_ptr<::JsonUtil::JsonSchemaObjectNode<::JsonUtil::EmptyClass, ::BlockDescription > > &description)
static MCAPI bool _validatePrereleaseRequirements(::LogArea logArea, ::std::string const &jsonType, ::std::string const &jsonIdentifier, ::std::optional<::SemVersion > const &releaseVersion, ::std::vector<::PackLoadRequirement > const &requirements, ::PackLoadContext const &packLoadContext)
MCAPI BlockDefinitionGroup(::cereal::ReflectionCtx const &ctx, ::IPuvLoadEventing &eventing)
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 LinkedAssetValidator.h:9
Definition PackLoadContext.h:20
Definition PackLoadRequirement.h:12
Definition ResourcePackManager.h:29
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