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/deps/shared_types/v1_26_20/block/MaterialType.h"
8#include "mc/world/level/block/FallingBlock.h"
9#include "mc/world/level/block/SpeleothemThickness.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 Vec3;
21namespace BlockEvents { class BlockEntityFallOnEvent; }
22namespace BlockEvents { class BlockQueuedTickEvent; }
23namespace BlockEvents { class BlockRandomTickEvent; }
24namespace mce { class Color; }
25// clang-format on
26
27class PointedDripstoneBlock : public ::FallingBlock {
28public:
29 // prevent constructor by default
30 PointedDripstoneBlock();
31
32public:
33 // virtual functions
34 // NOLINTBEGIN
35 virtual ::BlockType& init() /*override*/;
36
37 virtual int getVariant(::Block const& block) const /*override*/;
38
39 virtual bool canSurvive(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
40
41 virtual bool mayPlace(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
42
43 virtual void animateTickBedrockLegacy(::BlockAnimateTickData const& tickData) const /*override*/;
44
45 virtual void neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const
46 /*override*/;
47
48 virtual ::Block const&
49 getPlacementBlock(::Actor const& by, ::BlockPos const& pos, uchar face, ::Vec3 const& clickPos, int itemValue) const
50 /*override*/;
51
52 virtual void onProjectileHit(::BlockSource& region, ::BlockPos const& pos, ::Actor const& projectile) const
53 /*override*/;
54
55 virtual bool falling() const /*override*/;
56
57 virtual void onLand(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
58
59 virtual ::mce::Color getDustColor(::Block const&) const /*override*/;
60
61 virtual ::std::string getDustParticleName(::Block const&) const /*override*/;
62
63 virtual ::AABB const& getVisualShape(::Block const& block, ::AABB& bufferAABB) const /*override*/;
64
65 virtual void
66 startFalling(::BlockSource& region, ::BlockPos const& pos, ::Block const& oldBlock, bool creative) const
67 /*override*/;
68 // NOLINTEND
69
70public:
71 // member functions
72 // NOLINTBEGIN
73 MCAPI PointedDripstoneBlock(::std::string const& nameId, int id);
74
75 MCAPI void _queueColumnForFall(::BlockSource& region, ::BlockPos const& pos) const;
76
77 MCAPI void _updateBlockThickness(::BlockSource& region, ::BlockPos const& pos) const;
78
79 MCAPI void onFallOn(::BlockEvents::BlockEntityFallOnEvent& eventData) const;
80
81 MCAPI void randomTick(::BlockEvents::BlockRandomTickEvent& eventData) const;
82
83 MCAPI void tick(::BlockEvents::BlockQueuedTickEvent& eventData) const;
84 // NOLINTEND
85
86public:
87 // static functions
88 // NOLINTBEGIN
89 MCAPI static ::SpeleothemThickness _calculateDripstoneThickness(
90 ::BlockSource& region,
91 ::BlockPos const& pos,
92 uchar tipDirection,
93 bool mergeOpposingTips
94 );
95
96 MCAPI static bool _canDrip(::BlockSource& region, ::BlockPos const& pos);
97
98 MCAPI static bool _canFillCauldron(::Block const& block);
99
100 MCAPI static bool _canGrow(::Block const& rootBlock, ::Block const& aboveRootLiquidBlock);
101
102 MCAPI static bool _canTipGrow(::BlockSource& region, ::BlockPos const& tipPos);
103
104 MCAPI static void _createMergedTips(::BlockSource& region, ::Block const& tipBlock, ::BlockPos const& tipPos);
105
106 MCAPI static ::std::optional<::BlockPos> _findFillableCauldronBelowStalactiteTip(
107 ::BlockSource& region,
108 ::BlockPos const& stalactiteTipPos,
109 ::SharedTypes::v1_26_20::MaterialType liquidType
110 );
111
112 MCAPI static ::std::optional<::BlockPos>
113 _findRootBlock(::BlockSource& region, ::BlockPos const& pos, int maxSearchLength);
114
115 MCAPI static ::std::optional<::BlockPos>
116 _findTip(::BlockSource& region, ::BlockPos const& pos, uchar searchDirection, int maxSearchLength, bool);
117
118 MCAPI static void _grow(::BlockSource& region, ::BlockPos const& growFromPos, uchar growToDirection);
119
120 MCAPI static void _growStalagmiteBelow(::BlockSource& region, ::BlockPos const& growIntoPos);
121
122 MCAPI static bool _hasHangingSupport(::BlockSource& region, ::BlockPos const& pos);
123
124 MCAPI static bool _isTip(::Block const& block, bool includeMergedTip);
125
126 MCAPI static bool _isValidPointedDripstonePlacement(::BlockSource& region, ::BlockPos const& pos, bool isHanging);
127
128 MCAPI static void addDripParticle(::BlockSource& region, ::BlockPos const& pos, ::ParticleType particleType);
129
130 MCAPI static void fillCauldron(::BlockSource& region, ::BlockPos const& pos);
131
132 MCAPI static ::std::optional<::BlockPos>
133 findStalactiteTipAboveCauldron(::BlockSource& region, ::BlockPos const& cauldronPos);
134
135 MCAPI static ::std::optional<::SharedTypes::v1_26_20::MaterialType>
136 getCauldronFillLiquidType(::BlockSource& region, ::BlockPos const& pos);
137
138 MCAPI static ::std::optional<::BlockPos>
139 getStalactiteTipBelowFillSource(::BlockSource& region, ::BlockPos const& pos);
140
141 MCAPI static void growStalactite(::BlockSource& region, ::BlockPos const& pos);
142
143 MCAPI static void growStalagmite(::BlockSource& region, ::BlockPos const& pos);
144
145 MCAPI static bool isPointedDripstoneWithDirection(::Block const& block, uchar tipDirection);
146
147 MCAPI static ::std::optional<::ParticleType>
148 shouldDrip(::BlockSource& region, ::BlockPos const& pos, float randomValue);
149 // NOLINTEND
150
151public:
152 // static variables
153 // NOLINTBEGIN
154 MCAPI static float const& MAX_HORIZONTAL_OFFSET();
155 // NOLINTEND
156
157public:
158 // constructor thunks
159 // NOLINTBEGIN
160 MCAPI void* $ctor(::std::string const& nameId, int id);
161 // NOLINTEND
162
163public:
164 // virtual function thunks
165 // NOLINTBEGIN
166 MCAPI ::BlockType& $init();
167
168 MCAPI int $getVariant(::Block const& block) const;
169
170 MCAPI bool $canSurvive(::BlockSource& region, ::BlockPos const& pos) const;
171
172 MCAPI bool $mayPlace(::BlockSource& region, ::BlockPos const& pos) const;
173
174 MCAPI void $animateTickBedrockLegacy(::BlockAnimateTickData const& tickData) const;
175
176 MCAPI void $neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const;
177
178 MCAPI ::Block const& $getPlacementBlock(
179 ::Actor const& by,
180 ::BlockPos const& pos,
181 uchar face,
182 ::Vec3 const& clickPos,
183 int itemValue
184 ) const;
185
186 MCAPI void $onProjectileHit(::BlockSource& region, ::BlockPos const& pos, ::Actor const& projectile) const;
187
188 MCFOLD bool $falling() const;
189
190 MCAPI void $onLand(::BlockSource& region, ::BlockPos const& pos) const;
191
192 MCFOLD ::mce::Color $getDustColor(::Block const&) const;
193
194 MCFOLD ::std::string $getDustParticleName(::Block const&) const;
195
196 MCAPI ::AABB const& $getVisualShape(::Block const& block, ::AABB& bufferAABB) const;
197
198 MCAPI void
199 $startFalling(::BlockSource& region, ::BlockPos const& pos, ::Block const& oldBlock, bool creative) const;
200
201
202 // NOLINTEND
203
204public:
205 // vftables
206 // NOLINTBEGIN
207 MCAPI static void** $vftable();
208 // NOLINTEND
209};
Definition AABB.h:18
Definition Actor.h:125
Definition BlockEntityFallOnEvent.h:20
Definition BlockQueuedTickEvent.h:18
Definition BlockRandomTickEvent.h:17
Definition BlockPos.h:21
Definition BlockSource.h:73
Definition BlockType.h:84
Definition Block.h:69
static MCAPI void ** $vftable()
Definition Vec3.h:10
Definition Color.h:13
Definition BlockAnimateTickData.h:14