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