LeviLamina
Loading...
Searching...
No Matches
Block.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/world/level/block/BlockLegacy.h"
5
6// auto generated inclusion list
7#include "mc/deps/core/utility/optional_ref.h"
8#include "mc/world/level/ShapeType.h"
9
10// auto generated forward declare list
11// clang-format off
12class AABB;
13class Actor;
14class BaseGameVersion;
16class BlockLegacy;
17class BlockPos;
18class BlockSource;
19class BlockState;
20class CompoundTag;
22class HashedString;
23class HitResult;
25class ItemActor;
26class ItemInstance;
27class ItemStackBase;
28class Player;
29class Random;
30class Vec3;
33namespace mce { class Color; }
34// clang-format on
35
36class Block {
37public:
38 using BlockStateValueType = std::variant<int, float, bool, std::string>;
39 using BlockStatesType = std::vector<std::pair<std::string, BlockStateValueType>>;
40
41 LLNDAPI static optional_ref<Block const> tryGetFromRegistry(uint runtimeID);
42 LLNDAPI static optional_ref<Block const> tryGetFromRegistry(std::string_view name);
43 LLNDAPI static optional_ref<Block const> tryGetFromRegistry(std::string_view name, ushort legacyData);
44 LLNDAPI static optional_ref<Block const> tryGetFromRegistry(uint legacyBlockID, ushort legacyData);
45 LLNDAPI static optional_ref<Block const> tryGetFromRegistry(std::string_view name, BlockStatesType const& states);
46 LLNDAPI static optional_ref<Block const> tryGetFromRegistry(CompoundTag const& nbt);
47
48 [[nodiscard]] inline std::string const& getTypeName() const { return getLegacyBlock().getTypeName(); }
49
50 [[nodiscard]] inline short getBlockItemId() const { return getLegacyBlock().getBlockItemId(); }
51
52 [[nodiscard]] inline ushort getData() const { return mData; }
53
54 template <typename T>
55 std::optional<T> getState(uint64 id) const {
56 return mLegacyBlock->getState<T>(id, mData);
57 }
58
59 template <typename T>
60 std::optional<T> getState(BlockState const& state) const {
61 return mLegacyBlock->getState<T>(state, mData);
62 }
63
64 template <typename T>
65 optional_ref<Block const> setState(uint64 id, T value) const {
66 return mLegacyBlock->trySetState(id, value, mData);
67 }
68
69 template <typename T>
70 optional_ref<Block const> setState(BlockState const& state, T value) const {
71 return mLegacyBlock->trySetState(state, value, mData);
72 }
73
74public:
75 // member variables
76 // NOLINTBEGIN
77 ::ll::TypedStorage<8, 104, ::BlockComponentStorage> mComponents;
78 ::ll::TypedStorage<2, 2, ushort const> mData;
79 ::ll::TypedStorage<8, 8, ::gsl::not_null<::BlockLegacy*>> mLegacyBlock;
80 ::ll::TypedStorage<4, 8, ::CachedComponentData> mCachedComponentData;
81 ::ll::TypedStorage<8, 104, ::BlockComponentDirectData> mDirectData;
82 ::ll::TypedStorage<8, 24, ::std::vector<::HashedString>> mTags;
83 ::ll::TypedStorage<8, 24, ::CompoundTag> mSerializationId;
84 ::ll::TypedStorage<8, 8, uint64> mSerializationIdHash;
85 ::ll::TypedStorage<4, 4, uint> mSerializationIdHashForNetwork;
86 ::ll::TypedStorage<4, 4, uint> mNetworkId;
87 ::ll::TypedStorage<1, 1, bool> mHasRuntimeId;
88 // NOLINTEND
89
90public:
91 // virtual functions
92 // NOLINTBEGIN
93 // vIndex: 0
94 virtual ~Block() = default;
95 // NOLINTEND
96
97public:
98 // member functions
99 // NOLINTBEGIN
100 MCAPI Block(ushort data, ::gsl::not_null<::BlockLegacy*> oldBlock);
101
102 MCAPI Block(ushort data, ::gsl::not_null<::BlockLegacy*> oldBlock, ::CompoundTag serId, uint const& runId);
103
104 MCAPI void _queueForTickBasedOnComponentConfiguration(
105 ::BlockSource& region,
106 ::BlockPos const& pos,
107 ::Random& random,
108 bool placingBlock
109 ) const;
110
111 MCAPI void _removeFromTickingQueues(::BlockSource& region, ::BlockPos const& pos) const;
112
113 MCAPI ::ItemInstance asItemInstance(::BlockSource& region, ::BlockPos const& position, bool withData) const;
114
115 MCAPI bool breaksFallingBlocks(::BaseGameVersion version) const;
116
117 MCAPI ::std::string buildDescriptionName() const;
118
119 MCAPI void buildSerializationId(uint latestUpdaterVersion);
120
121 MCAPI ::std::string buildSerializationIdString() const;
122
123 MCAPI bool canProvideFullSupport(uchar face) const;
124
125 MCAPI bool canSurvive(::BlockSource& region, ::BlockPos const& pos) const;
126
127 MCAPI ::HitResult clip(::BlockPos const& pos, ::Vec3 const& A, ::Vec3 const& B, ::AABB const& aabb) const;
128
129 MCAPI ::HitResult clip(
130 ::BlockSource const& region,
131 ::BlockPos const& pos,
132 ::Vec3 const& A,
133 ::Vec3 const& B,
134 ::ShapeType shapeType,
136 ) const;
137
138 MCAPI uint computeRawSerializationIdHashForNetwork() const;
139
140 MCAPI ::Block const& copyState(::Block const& fromBlock, ::BlockState const& state) const;
141
142 MCAPI void executeItemEvent(
143 ::ItemStackBase& item,
144 ::std::string const& eventName,
145 ::BlockSource& region,
146 ::BlockPos const& pos,
147 ::Actor* actor
148 ) const;
149
150 MCAPI bool getCollisionShape(
151 ::AABB& outAABB,
152 ::IConstBlockSource const& region,
153 ::BlockPos const& pos,
155 ) const;
156
157 MCAPI ::std::string getDescriptionId() const;
158
159 MCAPI ::BlockLegacy const& getLegacyBlock() const;
160
161 MCAPI ::mce::Color getMapColor(::BlockSource& region, ::BlockPos const& pos) const;
162
163 MCAPI ::Block const& getStateFromLegacyData(ushort data) const;
164
165 MCAPI bool hasState(::BlockState const& stateType) const;
166
167 MCAPI bool hasTag(::HashedString const& tagName) const;
168
169 MCAPI bool isAir() const;
170
171 MCAPI bool isButtonBlock() const;
172
173 MCAPI bool isCropBlock() const;
174
175 MCAPI bool isDoorBlock() const;
176
177 MCFOLD bool isMotionBlockingBlock() const;
178
179 MCAPI bool isPartialBlock(::BlockSource const& region, ::BlockPos const& pos) const;
180
181 MCAPI bool isPreservingMediumWhenPlaced(::Block const& medium) const;
182
183 MCAPI bool isSlabBlock() const;
184
185 MCAPI bool isSolidBlockingBlock() const;
186
187 MCAPI bool isSolidBlockingBlockAndNotSignalSource() const;
188
189 MCAPI bool isTopPartialBlock(::BlockSource const& region, ::BlockPos const& pos) const;
190
191 MCAPI bool isValidAuxValue(int value) const;
192
193 MCAPI bool mayPlace(::BlockSource& region, ::BlockPos const& pos, uchar face) const;
194
195 MCAPI void neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const;
196
197 MCAPI void onFallOn(::BlockSource& region, ::BlockPos const& pos, ::Actor& entity, float fallDistance) const;
198
199 MCAPI void onPlace(::BlockSource& region, ::BlockPos const& pos, ::Block const& previousBlock) const;
200
201 MCAPI void onStepOff(::Actor& entity, ::BlockPos const& pos) const;
202
203 MCAPI void onStepOn(::Actor& entity, ::BlockPos const& pos) const;
204
205 MCAPI void playerDestroy(::Player& player, ::BlockPos const& pos) const;
206
207 MCAPI ::ItemActor*
208 popResource(::BlockSource& region, ::BlockPos const& pos, ::ItemInstance const& itemInstance) const;
209
210 MCAPI void queuedTick(::BlockSource& region, ::BlockPos const& pos, ::Random& random) const;
211
212 MCAPI void randomTick(::BlockSource& region, ::BlockPos const& pos, ::Random& random) const;
213
214 MCAPI ::Block const& sanitizeFillBlock() const;
215
216 MCAPI bool shouldRandomTick() const;
217
218 MCAPI ::std::string toDebugString() const;
219
220 MCAPI bool use(::Player& player, ::BlockPos const& pos, uchar face, ::std::optional<::Vec3> hit) const;
221 // NOLINTEND
222
223public:
224 // static variables
225 // NOLINTBEGIN
226 MCAPI static ::std::string const& BLOCK_DESCRIPTION_PREFIX();
227 // NOLINTEND
228
229public:
230 // constructor thunks
231 // NOLINTBEGIN
232 MCAPI void* $ctor(ushort data, ::gsl::not_null<::BlockLegacy*> oldBlock);
233
234 MCAPI void* $ctor(ushort data, ::gsl::not_null<::BlockLegacy*> oldBlock, ::CompoundTag serId, uint const& runId);
235 // NOLINTEND
236
237public:
238 // destructor thunk
239 // NOLINTBEGIN
240
241 // NOLINTEND
242
243public:
244 // vftables
245 // NOLINTBEGIN
246 MCAPI static void** $vftable();
247 // NOLINTEND
248};
Definition AABB.h:16
Definition Actor.h:104
Definition BaseGameVersion.h:13
Definition BlockComponentStorage.h:8
Definition BlockLegacy.h:88
Definition BlockPos.h:18
Definition BlockSource.h:67
Definition BlockState.h:11
Definition Block.h:36
Definition CompoundTag.h:13
Definition GetCollisionShapeInterface.h:13
Definition HashedString.h:5
Definition HitResult.h:19
Definition IConstBlockSource.h:24
Definition ItemActor.h:27
Definition ItemInstance.h:16
Definition ItemStackBase.h:35
Definition Player.h:119
Definition Random.h:16
Definition Vec3.h:10
Definition optional_ref.h:10
Definition BlockComponentDirectData.h:10
Definition CachedComponentData.h:10