LeviLamina
Loading...
Searching...
No Matches
PointedDripstoneBlock.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/comprehensive/ParticleType.h"
7#include "mc/world/level/block/DripstoneThickness.h"
8#include "mc/world/level/block/FallingBlock.h"
9#include "mc/world/level/material/MaterialType.h"
10
11// auto generated forward declare list
12// clang-format off
13class AABB;
14class Actor;
15class Block;
16class BlockPos;
17class BlockSource;
18class BlockType;
19class Experiments;
20class Vec3;
22namespace BlockEvents { class BlockEntityFallOnEvent; }
23namespace BlockEvents { class BlockQueuedTickEvent; }
24namespace BlockEvents { class BlockRandomTickEvent; }
25namespace mce { class Color; }
26// clang-format on
27
29public:
30 // virtual functions
31 // NOLINTBEGIN
32 virtual void _addHardCodedBlockComponents(::Experiments const&) /*override*/;
33
34 virtual ::BlockType& init() /*override*/;
35
36 virtual int getVariant(::Block const& block) const /*override*/;
37
38 virtual bool canSurvive(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
39
40 virtual bool mayPlace(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
41
42 virtual void animateTickBedrockLegacy(::BlockAnimateTickData const& tickData) const /*override*/;
43
44 virtual void neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const
45 /*override*/;
46
47 virtual ::Block const&
48 getPlacementBlock(::Actor const& by, ::BlockPos const& pos, uchar face, ::Vec3 const& clickPos, int itemValue) const
49 /*override*/;
50
51 virtual void onProjectileHit(::BlockSource& region, ::BlockPos const& pos, ::Actor const& projectile) const
52 /*override*/;
53
54 virtual bool falling() const /*override*/;
55
56 virtual void onLand(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
57
58 virtual ::mce::Color getDustColor(::Block const&) const /*override*/;
59
60 virtual ::std::string getDustParticleName(::Block const&) const /*override*/;
61
62 virtual ::AABB const& getVisualShape(::Block const& block, ::AABB& bufferAABB) const /*override*/;
63
64 virtual void
65 startFalling(::BlockSource& region, ::BlockPos const& pos, ::Block const& oldBlock, bool creative) const
66 /*override*/;
67
68 virtual ~PointedDripstoneBlock() /*override*/ = default;
69 // NOLINTEND
70
71public:
72 // member functions
73 // NOLINTBEGIN
74 MCAPI void _queueColumnForFall(::BlockSource& region, ::BlockPos const& pos) const;
75
76 MCAPI void _updateBlockThickness(::BlockSource& region, ::BlockPos const& pos) const;
77
78 MCAPI void onFallOn(::BlockEvents::BlockEntityFallOnEvent& eventData) const;
79
80 MCAPI void randomTick(::BlockEvents::BlockRandomTickEvent& eventData) const;
81
82 MCAPI void tick(::BlockEvents::BlockQueuedTickEvent& eventData) const;
83 // NOLINTEND
84
85public:
86 // static functions
87 // NOLINTBEGIN
88 MCAPI static ::DripstoneThickness _calculateDripstoneThickness(
89 ::BlockSource& region,
90 ::BlockPos const& pos,
91 uchar tipDirection,
92 bool mergeOpposingTips
93 );
94
95 MCAPI static bool _canDrip(::BlockSource& region, ::BlockPos const& pos);
96
97 MCAPI static bool _canTipGrow(::BlockSource& region, ::BlockPos const& tipPos);
98
99 MCAPI static void _createMergedTips(::BlockSource& region, ::Block const& tipBlock, ::BlockPos const& tipPos);
100
101 MCAPI static ::std::optional<::BlockPos>
102 _findRootBlock(::BlockSource& region, ::BlockPos const& pos, int maxSearchLength);
103
104 MCAPI static ::std::optional<::BlockPos> _getBlockAboveStalactiteRoot(::BlockSource& region, ::BlockPos const& pos);
105
106 MCAPI static void _grow(::BlockSource& region, ::BlockPos const& growFromPos, uchar growToDirection);
107
108 MCAPI static bool _isValidPointedDripstonePlacement(::BlockSource& region, ::BlockPos const& pos, bool isHanging);
109
110 MCAPI static bool _mayPlaceHanging(::BlockSource& region, ::BlockPos const& pos);
111
112 MCAPI static bool _mayPlaceStanding(::BlockSource& region, ::BlockPos const& pos);
113
114 MCAPI static void addDripParticle(::BlockSource& region, ::BlockPos const& pos, ::ParticleType particleType);
115
116 MCAPI static bool canGrow(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& stalactiteTipPos);
117
118 MCAPI static void fillCauldron(::BlockSource& region, ::BlockPos const& pos);
119
120 MCAPI static ::std::optional<::MaterialType>
121 getCauldronFillLiquidType(::BlockSource& region, ::BlockPos const& pos);
122
123 MCAPI static void growStalactite(::BlockSource& region, ::BlockPos const& pos);
124
125 MCAPI static void growStalagmite(::BlockSource& region, ::BlockPos const& pos);
126 // NOLINTEND
127
128public:
129 // virtual function thunks
130 // NOLINTBEGIN
131 MCAPI void $_addHardCodedBlockComponents(::Experiments const&);
132
133 MCFOLD ::BlockType& $init();
134
135 MCAPI int $getVariant(::Block const& block) const;
136
137 MCAPI bool $canSurvive(::BlockSource& region, ::BlockPos const& pos) const;
138
139 MCAPI bool $mayPlace(::BlockSource& region, ::BlockPos const& pos) const;
140
141 MCAPI void $animateTickBedrockLegacy(::BlockAnimateTickData const& tickData) const;
142
143 MCAPI void $neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const;
144
145 MCAPI ::Block const& $getPlacementBlock(
146 ::Actor const& by,
147 ::BlockPos const& pos,
148 uchar face,
149 ::Vec3 const& clickPos,
150 int itemValue
151 ) const;
152
153 MCAPI void $onProjectileHit(::BlockSource& region, ::BlockPos const& pos, ::Actor const& projectile) const;
154
155 MCFOLD bool $falling() const;
156
157 MCAPI void $onLand(::BlockSource& region, ::BlockPos const& pos) const;
158
159 MCFOLD ::mce::Color $getDustColor(::Block const&) const;
160
161 MCFOLD ::std::string $getDustParticleName(::Block const&) const;
162
163 MCAPI ::AABB const& $getVisualShape(::Block const& block, ::AABB& bufferAABB) const;
164
165 MCAPI void
166 $startFalling(::BlockSource& region, ::BlockPos const& pos, ::Block const& oldBlock, bool creative) const;
167
168
169 // NOLINTEND
170
171public:
172 // vftables
173 // NOLINTBEGIN
174 MCAPI static void** $vftable();
175 // NOLINTEND
176};
Definition AABB.h:18
Definition Actor.h:106
Definition BlockEntityFallOnEvent.h:17
Definition BlockQueuedTickEvent.h:16
Definition BlockRandomTickEvent.h:16
Definition BlockPos.h:19
Definition BlockSource.h:71
Definition BlockType.h:84
Definition Block.h:43
Definition Experiments.h:14
Definition FallingBlock.h:20
Definition PointedDripstoneBlock.h:28
Definition Vec3.h:10
Definition Color.h:13
Definition BlockAnimateTickData.h:14