LeviLamina
Loading...
Searching...
No Matches
BlockMultiBlockComponent.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/shared_types/v1_26_20/block/MultiBlockPart.h"
7#include "mc/platform/brstd/bitset.h"
8#include "mc/platform/brstd/function_ref.h"
9#include "mc/world/level/block/components/IBlockComponent.h"
10#include "mc/world/level/block/traits/block_trait/MultiBlockPlacementDirectionBehavior.h"
11
12// auto generated forward declare list
13// clang-format off
14class AABB;
15class Block;
17class BlockPos;
18class BlockSource;
19class CircuitSystem;
20struct BlockPart;
21namespace BlockEvents { class BlockBreakEvent; }
22// clang-format on
23
25public:
26 // member variables
27 // NOLINTBEGIN
28 ::ll::TypedStorage<1, 1, uchar> mDirection;
29 ::ll::TypedStorage<1, 1, uchar> mPartCount;
30 ::ll::TypedStorage<1, 1, ::brstd::bitset<4, uchar>> mSnowLoggableParts;
31 ::ll::TypedStorage<1, 1, ::BlockTrait::MultiBlockPlacementDirectionBehavior> mPlacementBehavior;
32 // NOLINTEND
33
34public:
35 // member functions
36 // NOLINTBEGIN
37 MCAPI bool _forEachPart(::Block const& part, ::brstd::function_ref<bool(::BlockPart const&, uchar)> callback) const;
38
39 MCAPI uchar _getDirectionOverride(::Block const& part) const;
40
41 MCAPI bool canSurvive(::BlockSource const& region, ::Block const& block, ::BlockPos const& pos) const;
42
43 MCAPI bool forEachPartInWorldSpace(
44 ::Block const& part,
45 ::BlockPos const& partPos,
46 ::brstd::function_ref<bool(::BlockPart const&)> callback
47 ) const;
48
49 MCAPI ::BlockPos getDistanceToMultiBlockEnd(::Block const& part) const;
50
51#ifdef LL_PLAT_C
52 MCAPI ::BlockPos getDistanceToMultiBlockStart(::Block const& part) const;
53
54 MCAPI ::AABB getOutlineShape(::Block const& part, ::BlockPos const& partWorldPos) const;
55#endif
56
57 MCAPI bool isMultiBlockStart(::Block const& part) const;
58
59 MCAPI bool isSnowLoggable(::Block const& part) const;
60
61 MCAPI void onEvent(::BlockEvents::BlockBreakEvent& event) const;
62 // NOLINTEND
63
64public:
65 // static functions
66 // NOLINTBEGIN
67 MCAPI static ::SharedTypes::v1_26_20::MultiBlockPart getMultiBlockPartId(::Block const& part);
68
69 MCAPI static ::BlockPos
70 getSnowLoggablePosition(::Block const& part, ::BlockSource const& region, ::BlockPos const& snowLayerPosition);
71
72 MCAPI static void onPlace(
73 ::BlockSource& region,
74 ::Block const& placementBlock,
75 ::Block const& oldBlock,
76 ::BlockPos const& pos,
77 ::BlockChangeContext const& changeSourceContext
78 );
79
80 MCAPI static void setSnowLoggablePart(::Block& part);
81
82 MCAPI static void
83 setupRedstoneConsumerComponent(::Block const& block, ::BlockPos const& pos, ::CircuitSystem& circuitSystem);
84 // NOLINTEND
85};
Definition AABB.h:18
Definition BlockChangeContext.h:10
Definition BlockBreakEvent.h:17
Definition BlockMultiBlockComponent.h:24
Definition BlockPos.h:17
Definition BlockSource.h:71
Definition Block.h:41
Definition CircuitSystem.h:15
Definition function_ref.h:60
Definition BlockPart.h:14
Definition IBlockComponent.h:5