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> _findBlockVertically(
102 ::BlockSource& region,
103 ::BlockPos const& pos,
104 uchar searchDirection,
105 ::std::function<bool(::BlockSource&, ::BlockPos const&)> pathPredicate,
106 ::std::function<bool(::BlockSource&, ::BlockPos const&)> targetPredicate,
107 int maxSearchLength
108 );
109
110 MCAPI static ::std::optional<::BlockPos>
111 _findRootBlock(::BlockSource& region, ::BlockPos const& pos, int maxSearchLength);
112
113 MCAPI static ::std::optional<::BlockPos> _getBlockAboveStalactiteRoot(::BlockSource& region, ::BlockPos const& pos);
114
115 MCAPI static void _grow(::BlockSource& region, ::BlockPos const& growFromPos, uchar growToDirection);
116
117 MCAPI static bool _isValidPointedDripstonePlacement(::BlockSource& region, ::BlockPos const& pos, bool isHanging);
118
119 MCAPI static bool _mayPlaceHanging(::BlockSource& region, ::BlockPos const& pos);
120
121 MCAPI static bool _mayPlaceStanding(::BlockSource& region, ::BlockPos const& pos);
122
123 MCAPI static void addDripParticle(::BlockSource& region, ::BlockPos const& pos, ::ParticleType particleType);
124
125 MCAPI static bool canGrow(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& stalactiteTipPos);
126
127 MCAPI static void fillCauldron(::BlockSource& region, ::BlockPos const& pos);
128
129 MCAPI static ::std::optional<::MaterialType>
130 getCauldronFillLiquidType(::BlockSource& region, ::BlockPos const& pos);
131
132 MCAPI static void growStalactite(::BlockSource& region, ::BlockPos const& pos);
133
134 MCAPI static void growStalagmite(::BlockSource& region, ::BlockPos const& pos);
135 // NOLINTEND
136
137public:
138 // static variables
139 // NOLINTBEGIN
140 MCAPI static float const& MAX_HORIZONTAL_OFFSET();
141 // NOLINTEND
142
143public:
144 // virtual function thunks
145 // NOLINTBEGIN
146 MCAPI void $_addHardCodedBlockComponents(::Experiments const&);
147
148 MCFOLD ::BlockType& $init();
149
150 MCAPI int $getVariant(::Block const& block) const;
151
152 MCAPI bool $canSurvive(::BlockSource& region, ::BlockPos const& pos) const;
153
154 MCAPI bool $mayPlace(::BlockSource& region, ::BlockPos const& pos) const;
155
156 MCAPI void $animateTickBedrockLegacy(::BlockAnimateTickData const& tickData) const;
157
158 MCAPI void $neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const;
159
160 MCAPI ::Block const& $getPlacementBlock(
161 ::Actor const& by,
162 ::BlockPos const& pos,
163 uchar face,
164 ::Vec3 const& clickPos,
165 int itemValue
166 ) const;
167
168 MCAPI void $onProjectileHit(::BlockSource& region, ::BlockPos const& pos, ::Actor const& projectile) const;
169
170 MCFOLD bool $falling() const;
171
172 MCAPI void $onLand(::BlockSource& region, ::BlockPos const& pos) const;
173
174 MCFOLD ::mce::Color $getDustColor(::Block const&) const;
175
176 MCFOLD ::std::string $getDustParticleName(::Block const&) const;
177
178 MCAPI ::AABB const& $getVisualShape(::Block const& block, ::AABB& bufferAABB) const;
179
180 MCAPI void
181 $startFalling(::BlockSource& region, ::BlockPos const& pos, ::Block const& oldBlock, bool creative) const;
182
183
184 // NOLINTEND
185
186public:
187 // vftables
188 // NOLINTBEGIN
189 MCAPI static void** $vftable();
190 // NOLINTEND
191};
Definition AABB.h:18
Definition Actor.h:105
Definition BlockEntityFallOnEvent.h:16
Definition BlockQueuedTickEvent.h:16
Definition BlockRandomTickEvent.h:16
Definition BlockPos.h:19
Definition BlockSource.h:68
Definition BlockType.h:84
static MCAPI void ** $vftable()
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