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/core/utility/optional_ref.h"
8#include "mc/world/level/block/DripstoneThickness.h"
9#include "mc/world/level/block/FallingBlock.h"
10#include "mc/world/level/material/MaterialType.h"
11
12// auto generated forward declare list
13// clang-format off
14class AABB;
15class Actor;
16class Block;
17class BlockLegacy;
18class BlockPos;
19class BlockSource;
20class Experiments;
23class Random;
24class Vec3;
26namespace BlockEvents { class BlockEntityFallOnEvent; }
27namespace BlockEvents { class BlockQueuedTickEvent; }
28namespace mce { class Color; }
29// clang-format on
30
32public:
33 // virtual functions
34 // NOLINTBEGIN
35 // vIndex: 131
36 virtual void _addHardCodedBlockComponents(::Experiments const&) /*override*/;
37
38 // vIndex: 125
39 virtual ::BlockLegacy& init() /*override*/;
40
41 // vIndex: 118
42 virtual int getVariant(::Block const& block) const /*override*/;
43
44 // vIndex: 142
45 virtual bool canSurvive(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
46
47 // vIndex: 79
48 virtual bool mayPlace(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
49
50 // vIndex: 123
51 virtual void animateTickBedrockLegacy(::BlockAnimateTickData const& tickData) const /*override*/;
52
53 // vIndex: 87
54 virtual void neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const
55 /*override*/;
56
57 // vIndex: 137
58 virtual void randomTick(::BlockSource& region, ::BlockPos const& pos, ::Random& random) const /*override*/;
59
60 // vIndex: 15
61 virtual ::Vec3 randomlyModifyPosition(::BlockPos const& pos) const /*override*/;
62
63 // vIndex: 92
64 virtual ::Block const&
65 getPlacementBlock(::Actor const& by, ::BlockPos const& pos, uchar face, ::Vec3 const& clickPos, int itemValue) const
66 /*override*/;
67
68 // vIndex: 17
69 virtual void onProjectileHit(::BlockSource& region, ::BlockPos const& pos, ::Actor const& projectile) const
70 /*override*/;
71
72 // vIndex: 152
73 virtual bool falling() const /*override*/;
74
75 // vIndex: 153
76 virtual void onLand(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
77
78 // vIndex: 150
79 virtual ::mce::Color getDustColor(::Block const&) const /*override*/;
80
81 // vIndex: 151
82 virtual ::std::string getDustParticleName(::Block const&) const /*override*/;
83
84 // vIndex: 11
85 virtual ::AABB const& getVisualShape(::Block const& block, ::AABB& bufferAABB) const /*override*/;
86
87 // vIndex: 5
88 virtual ::AABB
89 getCollisionShape(::Block const& block, ::IConstBlockSource const&, ::BlockPos const& pos, ::optional_ref<::GetCollisionShapeInterface const>)
90 const /*override*/;
91
92 // vIndex: 9
93 virtual ::AABB const&
94 getOutline(::Block const& block, ::IConstBlockSource const&, ::BlockPos const& pos, ::AABB& bufferValue) const
95 /*override*/;
96
97 // vIndex: 155
98 virtual void
99 startFalling(::BlockSource& region, ::BlockPos const& pos, ::Block const& oldBlock, bool creative) const
100 /*override*/;
101
102 // vIndex: 0
103 virtual ~PointedDripstoneBlock() /*override*/ = default;
104 // NOLINTEND
105
106public:
107 // member functions
108 // NOLINTBEGIN
109 MCAPI void _queueColumnForFall(::BlockSource& region, ::BlockPos const& pos) const;
110
111 MCAPI void _updateBlockThickness(::BlockSource& region, ::BlockPos const& pos) const;
112
113 MCAPI void onFallOn(::BlockEvents::BlockEntityFallOnEvent& eventData) const;
114
115 MCAPI void tick(::BlockEvents::BlockQueuedTickEvent& eventData) const;
116 // NOLINTEND
117
118public:
119 // static functions
120 // NOLINTBEGIN
121 MCAPI static ::DripstoneThickness _calculateDripstoneThickness(
122 ::BlockSource& region,
123 ::BlockPos const& pos,
124 uchar tipDirection,
125 bool mergeOpposingTips
126 );
127
128 MCAPI static bool _canDrip(::BlockSource& region, ::BlockPos const& pos);
129
130 MCAPI static bool _canTipGrow(::BlockSource& region, ::BlockPos const& tipPos);
131
132 MCAPI static void _createMergedTips(::BlockSource& region, ::Block const& tipBlock, ::BlockPos const& tipPos);
133
134 MCAPI static ::std::optional<::BlockPos> _findBlockVertically(
135 ::BlockSource& region,
136 ::BlockPos const& pos,
137 uchar searchDirection,
138 ::std::function<bool(::BlockSource&, ::BlockPos const&)> pathPredicate,
139 ::std::function<bool(::BlockSource&, ::BlockPos const&)> targetPredicate,
140 int maxSearchLength
141 );
142
143 MCAPI static ::std::optional<::BlockPos>
144 _findRootBlock(::BlockSource& region, ::BlockPos const& pos, int maxSearchLength);
145
146 MCAPI static ::std::optional<::BlockPos> _getBlockAboveStalactiteRoot(::BlockSource& region, ::BlockPos const& pos);
147
148 MCAPI static void _grow(::BlockSource& region, ::BlockPos const& growFromPos, uchar growToDirection);
149
150 MCAPI static void _growStalagmiteBelow(::BlockSource& region, ::BlockPos const& growIntoPos);
151
152 MCAPI static bool _isStalactiteBase(::BlockSource& region, ::BlockPos const& pos);
153
154 MCAPI static bool _isValidPointedDripstonePlacement(::BlockSource& region, ::BlockPos const& pos, bool isHanging);
155
156 MCAPI static bool _mayPlaceHanging(::BlockSource& region, ::BlockPos const& pos);
157
158 MCAPI static bool _mayPlaceStanding(::BlockSource& region, ::BlockPos const& pos);
159
160 MCAPI static void addDripParticle(::BlockSource& region, ::BlockPos const& pos, ::ParticleType particleType);
161
162 MCAPI static bool canGrow(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& stalactiteTipPos);
163
164 MCAPI static void fillCauldron(::BlockSource& region, ::BlockPos const& pos);
165
166 MCAPI static ::std::optional<::MaterialType>
167 getCauldronFillLiquidType(::BlockSource& region, ::BlockPos const& pos);
168
169 MCAPI static void growStalactite(::BlockSource& region, ::BlockPos const& pos);
170
171 MCAPI static void growStalagmite(::BlockSource& region, ::BlockPos const& pos);
172
173 MCAPI static ::std::optional<::ParticleType>
174 shouldDrip(::BlockSource& region, ::BlockPos const& pos, float randomValue);
175 // NOLINTEND
176
177public:
178 // destructor thunk
179 // NOLINTBEGIN
180
181 // NOLINTEND
182
183public:
184 // virtual function thunks
185 // NOLINTBEGIN
186 MCAPI void $_addHardCodedBlockComponents(::Experiments const&);
187
188 MCFOLD ::BlockLegacy& $init();
189
190 MCAPI int $getVariant(::Block const& block) const;
191
192 MCAPI bool $canSurvive(::BlockSource& region, ::BlockPos const& pos) const;
193
194 MCAPI bool $mayPlace(::BlockSource& region, ::BlockPos const& pos) const;
195
196 MCAPI void $animateTickBedrockLegacy(::BlockAnimateTickData const& tickData) const;
197
198 MCAPI void $neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const;
199
200 MCAPI void $randomTick(::BlockSource& region, ::BlockPos const& pos, ::Random& random) const;
201
202 MCAPI ::Vec3 $randomlyModifyPosition(::BlockPos const& pos) const;
203
204 MCAPI ::Block const&
205 $getPlacementBlock(::Actor const& by, ::BlockPos const& pos, uchar face, ::Vec3 const& clickPos, int itemValue)
206 const;
207
208 MCAPI void $onProjectileHit(::BlockSource& region, ::BlockPos const& pos, ::Actor const& projectile) const;
209
210 MCFOLD bool $falling() const;
211
212 MCAPI void $onLand(::BlockSource& region, ::BlockPos const& pos) const;
213
214 MCFOLD ::mce::Color $getDustColor(::Block const&) const;
215
216 MCFOLD ::std::string $getDustParticleName(::Block const&) const;
217
218 MCAPI ::AABB const& $getVisualShape(::Block const& block, ::AABB& bufferAABB) const;
219
220 MCAPI ::AABB
221 $getCollisionShape(::Block const& block, ::IConstBlockSource const&, ::BlockPos const& pos, ::optional_ref<::GetCollisionShapeInterface const>)
222 const;
223
224 MCAPI ::AABB const&
225 $getOutline(::Block const& block, ::IConstBlockSource const&, ::BlockPos const& pos, ::AABB& bufferValue) const;
226
227 MCAPI void
228 $startFalling(::BlockSource& region, ::BlockPos const& pos, ::Block const& oldBlock, bool creative) const;
229 // NOLINTEND
230
231public:
232 // vftables
233 // NOLINTBEGIN
234 MCAPI static void** $vftable();
235 // NOLINTEND
236};
Definition AABB.h:16
Definition Actor.h:104
Definition BlockEntityFallOnEvent.h:15
Definition BlockQueuedTickEvent.h:15
Definition BlockLegacy.h:88
Definition BlockPos.h:18
Definition BlockSource.h:67
Definition Block.h:36
Definition Experiments.h:14
Definition FallingBlock.h:20
Definition GetCollisionShapeInterface.h:13
Definition IConstBlockSource.h:24
Definition PointedDripstoneBlock.h:31
Definition Random.h:16
Definition Vec3.h:10
Definition optional_ref.h:10
Definition BlockAnimateTickData.h:5