LeviLamina
Loading...
Searching...
No Matches
CauldronBlock.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/optional_ref.h"
7#include "mc/deps/shared_types/legacy/LevelEvent.h"
8#include "mc/events/MinecraftEventing.h"
9#include "mc/world/level/ShapeType.h"
10#include "mc/world/level/block/ActorBlockBase.h"
11#include "mc/world/level/block/BlockSupportType.h"
12#include "mc/world/level/block/BlockType.h"
13#include "mc/world/level/block/CauldronLiquidType.h"
14#include "mc/world/level/material/MaterialType.h"
15
16// auto generated forward declare list
17// clang-format off
18class AABB;
19class BaseGameVersion;
20class Block;
21class BlockActor;
22class BlockPos;
23class BlockSource;
25class Experiments;
27class HitResult;
29class ItemInstance;
30class ItemStack;
31class Level;
32class Player;
33class Random;
34class Vec3;
36struct Brightness;
37namespace BlockEvents { class BlockPlaceEvent; }
38namespace BlockEvents { class BlockPlayerInteractEvent; }
39namespace BlockEvents { class BlockQueuedTickEvent; }
40// clang-format on
41
42class CauldronBlock : public ::ActorBlock {
43public:
44 // virtual functions
45 // NOLINTBEGIN
46 virtual bool addCollisionShapes(
47 ::Block const& block,
48 ::IConstBlockSource const& region,
49 ::BlockPos const& pos,
50 ::AABB const* intersectTestBox,
51 ::std::vector<::AABB>& inoutBoxes,
53 ) const /*override*/;
54
55 virtual ::HitResult clip(
56 ::Block const& block,
57 ::BlockSource const& region,
58 ::BlockPos const& pos,
59 ::Vec3 const& A,
60 ::Vec3 const& B,
61 ::ShapeType shapeType,
63 ) const /*override*/;
64
65 virtual void addAABBs(
66 ::Block const& block,
67 ::IConstBlockSource const& region,
68 ::BlockPos const& pos,
69 ::AABB const* intersectTestBox,
70 ::std::vector<::AABB>& inoutBoxes
71 ) const /*override*/;
72
73 virtual bool canProvideSupport(::Block const&, uchar face, ::BlockSupportType type) const /*override*/;
74
75 virtual void
76 handlePrecipitation(::BlockSource& region, ::BlockPos const& pos, float downfallAmount, float temperature) const
77 /*override*/;
78
79 virtual ::ItemInstance asItemInstance(::Block const&, ::BlockActor const*) const /*override*/;
80
81 virtual bool hasComparatorSignal() const /*override*/;
82
83 virtual int getComparatorSignal(::BlockSource& region, ::BlockPos const& pos, ::Block const& block, uchar dir) const
84 /*override*/;
85
86 virtual void animateTickBedrockLegacy(::BlockAnimateTickData const& tickData) const /*override*/;
87
88 virtual bool isInteractiveBlock() const /*override*/;
89
90 virtual int getExtraRenderLayers() const /*override*/;
91
92 virtual void neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const
93 /*override*/;
94
95 virtual bool breaksFallingBlocks(::Block const& block, ::BaseGameVersion const version) const /*override*/;
96
97 virtual ::Brightness getLight(::Block const& block) const /*override*/;
98
99 virtual ::Brightness getLightEmission(::Block const& block) const /*override*/;
100
101 virtual void _addHardCodedBlockComponents(::Experiments const&) /*override*/;
102
103 virtual ~CauldronBlock() /*override*/ = default;
104 // NOLINTEND
105
106public:
107 // member functions
108 // NOLINTBEGIN
109 MCAPI void _checkForStalactiteDrip(::BlockSource& region, ::BlockPos const& pos) const;
110
111 MCAPI void _explodeCauldronContents(::BlockSource& region, ::BlockPos const& pos, ushort) const;
112
113 MCAPI void _sendCauldronUsedEventToClient(
114 ::Player const& player,
115 short itemId,
116 ::MinecraftEventing::POIBlockInteractionType interactionType
117 ) const;
118
119 MCAPI void _spawnCauldronEvent(
120 ::BlockSource& region,
121 ::BlockPos const& pos,
122 ::SharedTypes::Legacy::LevelEvent levelEvent
123 ) const;
124
125 MCAPI bool _useDyeableComponent(
126 ::ItemStack& itemInstance,
127 ::Player& player,
128 ::BlockPos const& pos,
129 ::CauldronBlockActor& blockEntity,
130 ::BlockSource& region,
131 int fillLevel,
132 bool isEmpty,
133 bool isWater,
134 bool isCleanWater
135 ) const;
136
137 MCAPI void _useInventory(::Player& player, ::ItemStack& current, ::ItemStack& replaceWith, int useCount) const;
138
139 MCAPI void onPlace(::BlockEvents::BlockPlaceEvent& eventData) const;
140
141 MCAPI void
142 setLiquidLevel(::BlockSource& region, ::BlockPos const& pos, int liquidLevel, ::CauldronLiquidType type) const;
143
144 MCAPI void tick(::BlockEvents::BlockQueuedTickEvent& eventData) const;
145
146 MCAPI void use(::BlockEvents::BlockPlayerInteractEvent& eventData) const;
147 // NOLINTEND
148
149public:
150 // static functions
151 // NOLINTBEGIN
152 MCAPI static bool canReceiveStalactiteDrip(::BlockSource& region, ::BlockPos const& pos, ::MaterialType liquidType);
153
154 MCAPI_C static void spawnBubbleParticles(::Level& level, ::Vec3 const& pos, ::Random&, int, int count);
155
156 MCAPI_C static void spawnLavaParticles(::Level& level, ::Vec3 const& pos, ::Random&, int count);
157
158 MCAPI static void spawnPotionParticles(::Level& level, ::Vec3 const& pos, ::Random&, int color, int count);
159
160 MCAPI_C static void spawnSplashParticles(::Level& level, ::Vec3 const& pos, ::Random&, int color, int count);
161 // NOLINTEND
162
163public:
164 // static variables
165 // NOLINTBEGIN
166 MCAPI static ::BaseGameVersion const& CAULDRON_DOESNT_BREAK_FALLING_BLOCK_VERSION();
167 // NOLINTEND
168
169public:
170 // virtual function thunks
171 // NOLINTBEGIN
172 MCFOLD bool $addCollisionShapes(
173 ::Block const& block,
174 ::IConstBlockSource const& region,
175 ::BlockPos const& pos,
176 ::AABB const* intersectTestBox,
177 ::std::vector<::AABB>& inoutBoxes,
179 ) const;
180
181 MCFOLD ::HitResult $clip(
182 ::Block const& block,
183 ::BlockSource const& region,
184 ::BlockPos const& pos,
185 ::Vec3 const& A,
186 ::Vec3 const& B,
187 ::ShapeType shapeType,
189 ) const;
190
191 MCAPI void $addAABBs(
192 ::Block const& block,
193 ::IConstBlockSource const& region,
194 ::BlockPos const& pos,
195 ::AABB const* intersectTestBox,
196 ::std::vector<::AABB>& inoutBoxes
197 ) const;
198
199 MCAPI bool $canProvideSupport(::Block const&, uchar face, ::BlockSupportType type) const;
200
201 MCAPI void
202 $handlePrecipitation(::BlockSource& region, ::BlockPos const& pos, float downfallAmount, float temperature) const;
203
204 MCAPI ::ItemInstance $asItemInstance(::Block const&, ::BlockActor const*) const;
205
206 MCFOLD bool $hasComparatorSignal() const;
207
208 MCAPI int $getComparatorSignal(::BlockSource& region, ::BlockPos const& pos, ::Block const& block, uchar dir) const;
209
210 MCAPI void $animateTickBedrockLegacy(::BlockAnimateTickData const& tickData) const;
211
212 MCFOLD bool $isInteractiveBlock() const;
213
214 MCFOLD int $getExtraRenderLayers() const;
215
216 MCAPI void $neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const;
217
218 MCAPI bool $breaksFallingBlocks(::Block const& block, ::BaseGameVersion const version) const;
219
220 MCAPI ::Brightness $getLight(::Block const& block) const;
221
222 MCAPI ::Brightness $getLightEmission(::Block const& block) const;
223
224 MCAPI void $_addHardCodedBlockComponents(::Experiments const&);
225
226
227 // NOLINTEND
228
229public:
230 // vftables
231 // NOLINTBEGIN
232 MCAPI static void** $vftable();
233 // NOLINTEND
234};
Definition AABB.h:18
Definition BaseGameVersion.h:8
Definition BlockActor.h:32
Definition BlockPlaceEvent.h:16
Definition BlockPlayerInteractEvent.h:17
Definition BlockQueuedTickEvent.h:16
Definition BlockPos.h:19
Definition BlockSource.h:68
Definition Block.h:43
Definition CauldronBlockActor.h:24
Definition CauldronBlock.h:42
Definition Experiments.h:14
Definition GetCollisionShapeInterface.h:13
Definition HitResult.h:17
Definition IConstBlockSource.h:25
Definition ItemInstance.h:15
Definition ItemStack.h:26
Definition Level.h:249
Definition Player.h:125
Definition Random.h:10
Definition Vec3.h:10
Definition optional_ref.h:10
Definition BlockAnimateTickData.h:14
Definition Brightness.h:8