LeviLamina
Loading...
Searching...
No Matches
Block.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/world/level/block/BlockType.h"
5
6// auto generated inclusion list
7#include "mc/deps/core/utility/optional_ref.h"
8#include "mc/deps/nbt/CompoundTag.h"
9#include "mc/deps/shared_types/item/CreativeItemCategory.h"
10#include "mc/platform/brstd/function_ref.h"
11#include "mc/world/Direction.h"
12#include "mc/world/item/FertilizerType.h"
13#include "mc/world/level/ShapeType.h"
14#include "mc/world/level/block/BlockClientPredictionOverrides.h"
15#include "mc/world/level/block/BlockOcclusionType.h"
16#include "mc/world/level/block/BlockProperty.h"
17#include "mc/world/level/block/BlockRenderLayer.h"
18#include "mc/world/level/block/BlockSupportType.h"
19#include "mc/world/level/block/BlockType.h"
20#include "mc/world/level/block/CachedComponentData.h"
21#include "mc/world/level/block/TintMethod.h"
22#include "mc/world/level/block/actor/BlockActorType.h"
23#include "mc/world/level/block/components/BlockComponentDirectData.h"
24#include "mc/world/level/block/components/BlockComponentStorage.h"
25#include "mc/world/level/block/components/ConnectionID.h"
26
27// auto generated forward declare list
28// clang-format off
29class AABB;
30class Actor;
31class BaseGameVersion;
33class BlockPos;
34class BlockSource;
35class BlockState;
36class BlockType;
37class EntityContext;
39class HashedString;
40class HitResult;
42class IRandom;
43class ItemActor;
44class ItemInstance;
45class ItemStack;
46class ItemStackBase;
47class Material;
48class MobSpawnerData;
50class Player;
51class Random;
52class SpawnConditions;
53class Vec3;
57struct Brightness;
58struct CopperBehavior;
60namespace BlockEvents { class BlockEventManager; }
61namespace VoxelShapes { class VoxelShape; }
62namespace br::spawn { struct EntityType; }
63namespace mce { class Color; }
66struct ClientBlockData;
67// clang-format on
68
69class Block {
70public:
71 using BlockStateValueType = std::variant<int, float, bool, std::string>;
72 using BlockStatesType = std::vector<std::pair<std::string, BlockStateValueType>>;
73
74 LLNDAPI static optional_ref<Block const> tryGetFromRegistry(uint runtimeID);
75 LLNDAPI static optional_ref<Block const> tryGetFromRegistry(uint legacyBlockID, ushort legacyData);
76 LLNDAPI static optional_ref<Block const> tryGetFromRegistry(HashedString const& name);
77 LLNDAPI static optional_ref<Block const> tryGetFromRegistry(HashedString const& name, ushort legacyData);
78 LLNDAPI static optional_ref<Block const>
79 tryGetFromRegistry(HashedString const& name, BlockStatesType const& states);
80 LLNDAPI static optional_ref<Block const> tryGetFromRegistry(CompoundTag const& nbt);
81
82 LLNDAPI bool isAir() const;
83
84 [[nodiscard]] BlockType const& getBlockType() const { return *mBlockType; }
85
86 [[nodiscard]] std::string const& getTypeName() const { return getBlockType().getTypeName(); }
87
88 [[nodiscard]] unsigned short getBlockItemId() const { return getBlockType().mID->mValue; }
89
90 [[nodiscard]] ushort getData() const { return mData; }
91
92 template <typename T>
93 std::optional<T> getState(uint64 id) const {
94 return mBlockType->getState<T>(id, mData);
95 }
96
97 template <typename T>
98 std::optional<T> getState(BlockState const& state) const {
99 return mBlockType->getState<T>(state, mData);
100 }
101
102 template <typename T>
103 optional_ref<Block const> setState(uint64 id, T value) const {
104 return mBlockType->trySetState(id, value, mData);
105 }
106
107 template <typename T>
108 optional_ref<Block const> setState(BlockState const& state, T value) const {
109 return mBlockType->trySetState(state, value, mData);
110 }
111
112 bool operator==(Block const& other) const { return mSerializationIdHash == other.mSerializationIdHash; }
113
114public:
115 // member variables
116 // NOLINTBEGIN
117 ::ll::TypedStorage<8, 96, ::BlockComponentStorage> mComponents;
118 ::ll::TypedStorage<8, 8, ::gsl::not_null<::BlockType*>> mBlockType;
119 ::ll::TypedStorage<4, 8, ::CachedComponentData> mCachedComponentData;
120 ::ll::TypedStorage<8, 96, ::BlockComponentDirectData> mDirectData;
121 ::ll::TypedStorage<8, 24, ::std::vector<::HashedString>> mTags;
122 ::ll::TypedStorage<8, 24, ::CompoundTag> mSerializationId;
123 ::ll::TypedStorage<8, 8, uint64> mSerializationIdHash;
124 ::ll::TypedStorage<4, 4, uint> mSerializationIdHashForNetwork;
125 ::ll::TypedStorage<4, 4, uint> mNetworkId;
126 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IClientBlockData>> mClientData;
127 ::ll::TypedStorage<2, 2, ushort const> mData;
128 ::ll::TypedStorage<1, 1, bool> mHasRuntimeId;
129 // NOLINTEND
130
131public:
132 // prevent constructor by default
133 Block();
134
135public:
136 // virtual functions
137 // NOLINTBEGIN
138 virtual ~Block();
139 // NOLINTEND
140
141public:
142 // member functions
143 // NOLINTBEGIN
144 MCAPI Block(ushort data, ::gsl::not_null<::BlockType*> oldBlock);
145
146 MCAPI Block(ushort data, ::gsl::not_null<::BlockType*> oldBlock, ::CompoundTag serId, uint const& runId);
147
148 MCAPI ::BlockOcclusionType _getBlockOcclusionType() const;
149
150 MCAPI bool _isSolid() const;
151
152#ifdef LL_PLAT_C
153 MCAPI void _playAmbientSounds(::BlockAnimateTickData const& tickData) const;
154#endif
155
156 MCAPI void _queueForTickBasedOnComponentConfiguration(
157 ::BlockSource& region,
158 ::BlockPos const& pos,
159 ::Random& random,
160 bool placingBlock
161 ) const;
162
163 MCAPI void _removeFromTickingQueues(::BlockSource& region, ::BlockPos const& pos) const;
164
165 MCAPI bool accumulatesSnow(bool fromFallingSnow) const;
166
167 MCAPI void addAABBs(
168 ::BlockSource const& region,
169 ::BlockPos const& pos,
170 ::AABB const* intersectTestBox,
171 ::std::vector<::AABB>& inoutBoxes
172 ) const;
173
174 MCAPI bool addCollisionShapes(
175 ::IConstBlockSource const& region,
176 ::BlockPos const& pos,
177 ::AABB const* intersectTestBox,
178 ::std::vector<::AABB>& inoutBoxes,
180 ) const;
181
182 MCAPI ::Block& addComponent(::BlockComponentDescription const& blockComponentDescription);
183
184 MCAPI ::Block& addTag(::HashedString const& tag);
185
186 MCAPI bool allowStateMismatchOnPlacement(::Block const& other) const;
187
188#ifdef LL_PLAT_C
189 MCAPI void animateTick(::BlockAnimateTickData const& tickData) const;
190
191 MCAPI void animateTickBedrockLegacy(::BlockAnimateTickData const& tickData) const;
192#endif
193
194 MCAPI ::ItemInstance asItemInstance(::BlockSource& region, ::BlockPos const& pos) const;
195
196 MCAPI ::ItemInstance asItemInstance(::BlockSource& region, ::BlockPos const& position, bool withData) const;
197
198 MCAPI bool attack(::Player* player, ::BlockPos const& pos) const;
199
200 MCAPI bool breaksFallingBlocks(::BaseGameVersion version) const;
201
202 MCAPI ::std::string buildDescriptionId() const;
203
204 MCAPI ::std::string buildDescriptionName() const;
205
206 MCAPI void buildSerializationId(uint latestUpdaterVersion);
207
208 MCAPI void cacheComponentData();
209
210#ifdef LL_PLAT_C
211 MCAPI int calcVariant(::BlockSource& region, ::BlockPos const& pos, ::mce::Color const& baseColor) const;
212#endif
213
214 MCAPI bool canBeBrokenFromFalling() const;
215
216 MCAPI bool canBeBuiltOver(::BlockSource& region, ::BlockPos const& pos) const;
217
218 MCAPI bool canBeBuiltOver(::BlockSource& region, ::BlockPos const& pos, ::BlockType const& newBlock) const;
219
220 MCAPI bool canBeFertilized(::BlockSource& region, ::BlockPos const& pos, ::Block const& aboveBlock) const;
221
222 MCAPI bool canBeOriginalSurface(bool aboveSeaLevel) const;
223
224 MCAPI bool canConnect(::Block const& connectionBlock, uchar toOther) const;
225
226 MCAPI bool canFillAtPos(::BlockSource& region, ::BlockPos const& pos) const;
227
228 MCAPI bool canHaveExtraData() const;
229
230 MCAPI bool canHurtAndBreakItem() const;
231
232 MCAPI bool canInstatick() const;
233
234 MCAPI bool canProvideFullSupport(uchar face) const;
235
236 MCAPI bool canProvideMultifaceSupport(uchar face) const;
237
238 MCAPI bool canProvideSupport(uchar face, ::BlockSupportType type) const;
239
240 MCAPI bool canReactToNeighborsDuringInstatick() const;
241
242#ifdef LL_PLAT_C
243 MCAPI bool canRedstoneWirePassThrough() const;
244
245 MCAPI bool canRenderSelectionOverlay(::BlockRenderLayer heldItemRenderLayer) const;
246#endif
247
248 MCAPI bool canSlide(::BlockSource& region, ::BlockPos const& pos) const;
249
250 MCAPI bool canSurvive(::BlockSource& region, ::BlockPos const& pos) const;
251
252 MCAPI bool causesFreezeEffect() const;
253
254 MCAPI bool checkIsPathable(::Actor& entity, ::BlockPos const& lastPathPos, ::BlockPos const& pathPos) const;
255
256 MCAPI ::HitResult clip(::BlockPos const& pos, ::Vec3 const& A, ::Vec3 const& B, ::AABB const& aabb) const;
257
258 MCAPI ::HitResult clip(
259 ::BlockSource const& region,
260 ::BlockPos const& pos,
261 ::Vec3 const& A,
262 ::Vec3 const& B,
263 ::ShapeType shapeType,
265 ) const;
266
267 MCAPI uint computeRawSerializationIdHashForNetwork() const;
268
269 MCAPI ::Block const& connectionUpdate(
270 ::BlockSource& region,
271 ::BlockPos const& pos,
272 ::NeighborBlockDirections neighborBlockDirections
273 ) const;
274
275 MCAPI ::Block const& copyState(::Block const& fromBlock, ::BlockState const& state) const;
276
277 MCAPI ::Block const& copyStates(::Block const& fromBlock) const;
278
279 MCAPI bool dealsContactDamage(::Actor const& actor, bool isPathFinding) const;
280
281 MCAPI void destroy(::BlockSource& region, ::BlockPos const& pos, ::Actor* entitySource) const;
282
283 MCAPI void entityInside(::BlockSource& region, ::BlockPos const& pos, ::Actor& entity) const;
284
285 MCAPI void executeItemEvent(
286 ::ItemStackBase& item,
287 ::std::string const& eventName,
288 ::BlockSource& region,
289 ::BlockPos const& pos,
290 ::Actor* actor
291 ) const;
292
293 MCAPI void finalizeBlockComponentStorage();
294
295 MCAPI void forEachState(::brstd::function_ref<bool(::BlockState const&, int)> callback) const;
296
297 MCAPI bool getAllowsRunes() const;
298
299 MCAPI ::BlockActorType getBlockEntityType() const;
300
301 MCAPI float getBounciness(::IConstBlockSource const& region, ::BlockPos const& pos) const;
302
303 MCAPI int getBurnOdds() const;
304
305 MCAPI bool getClientPredictionOverride(::BlockClientPredictionOverrides type) const;
306
307 MCAPI bool getCollisionShape(
308 ::AABB& outAABB,
309 ::IConstBlockSource const& region,
310 ::BlockPos const& pos,
312 ) const;
313
314 MCAPI bool
315 getCollisionShapeForCamera(::AABB& outAABB, ::IConstBlockSource const& region, ::BlockPos const& pos) const;
316
317 MCAPI int getComparatorSignal(::BlockSource& region, ::BlockPos const& pos, uchar dir) const;
318
319 MCAPI ::BlockType::HorizontalDirectionBits
320 getConnectedDirections(::BlockPos const& pos, ::BlockSource& region) const;
321
322 MCAPI ::std::optional<::ConnectionID> getConnectionID() const;
323
324#ifdef LL_PLAT_C
325 MCAPI ::std::string getCraftingLabelText() const;
326
327 MCAPI ::SharedTypes::CreativeItemCategory getCreativeCategory() const;
328
329 MCAPI ::HashedString const& getCullingLayer() const;
330#endif
331
332 MCAPI void getDebugText(::std::vector<::std::string>& outputInfo, ::BlockPos const& debugPos) const;
333
334 MCAPI ::std::string getDescriptionId() const;
335
336 MCAPI float getDestroySpeed() const;
337
338 MCAPI float getDestroySpeed(::ItemStackBase const& item) const;
339
340 MCAPI int getDirectSignal(::BlockSource& region, ::BlockPos const& pos, int dir) const;
341
342 MCAPI ::std::string getDisplayName() const;
343
344#ifdef LL_PLAT_C
345 MCAPI ::Brightness getEmissiveBrightness() const;
346#endif
347
348 MCAPI ::BlockEvents::BlockEventManager const& getEventManager() const;
349
350 MCAPI int getExperienceDrop(::Random& random) const;
351
352 MCAPI float getExplosionResistance() const;
353
354#ifdef LL_PLAT_C
355 MCAPI int getExtraRenderLayers() const;
356#endif
357
358 MCAPI int getFlameOdds() const;
359
360 MCAPI float getFriction() const;
361
362 MCAPI bool getIgnoresDestroyPermissions(::Actor& entity, ::BlockPos const& pos) const;
363
364 MCAPI ::Brightness getLight() const;
365
366 MCAPI ::Brightness getLightEmission() const;
367
368#ifdef LL_PLAT_C
369 MCAPI bool getLiquidClipVolume(::BlockSource& region, ::BlockPos const& pos, ::AABB& includeBox) const;
370#endif
371
372 MCAPI ::mce::Color getMapColor(::BlockSource& region, ::BlockPos const& pos) const;
373
374#ifdef LL_PLAT_C
375 MCAPI uchar getMappedFace(uchar face) const;
376#endif
377
378 MCAPI ::Material const& getMaterial() const;
379
380 MCAPI ::MobSpawnerData const* getMobToSpawn(::SpawnConditions const& conditions, ::BlockSource& region) const;
381
382#ifdef LL_PLAT_C
383 MCAPI ::VoxelShapes::VoxelShape const* getOcclusionFaceShape(uchar face) const;
384
385 MCAPI ::VoxelShapes::VoxelShape const* getOcclusionShape() const;
386
387 MCFOLD ::BlockOcclusionType getOcclusionType() const;
388#endif
389
390 MCAPI ::AABB const& getOutline(::IConstBlockSource const& region, ::BlockPos const& pos, ::AABB& bufferValue) const;
391
392 MCAPI ::Block const& getPlacementBlock(
393 ::Actor const& by,
394 ::BlockPos const& pos,
395 uchar face,
396 ::Vec3 const& clickPos,
397 int itemValue
398 ) const;
399
400 MCAPI ::Vec3 getRandomOffset(::BlockPos const& pos) const;
401
402 MCFOLD uint const& getRuntimeId() const;
403
404 MCAPI bool getSecondPart(::BlockSource const& region, ::BlockPos const& pos, ::BlockPos& out) const;
405
406 MCFOLD ::CompoundTag const& getSerializationId() const;
407
408#ifdef LL_PLAT_C
409 MCAPI float getShadeBrightness() const;
410#endif
411
412 MCAPI float getThickness() const;
413
414#ifdef LL_PLAT_C
415 MCAPI ::TintMethod getTintMethod() const;
416#endif
417
418 MCAPI float getTranslucency() const;
419
420#ifdef LL_PLAT_C
421 MCAPI ::AABB const& getUIShape(::AABB& bufferAABB) const;
422#endif
423
424 MCAPI int getVariant() const;
425
426 MCAPI ::AABB const& getVisualShape(::AABB& bufferAABB) const;
427
428 MCAPI ::AABB const&
429 getVisualShapeInWorld(::IConstBlockSource const& region, ::BlockPos const& pos, ::AABB& bufferAABB) const;
430
431 MCAPI bool hasBlockEntity() const;
432
433 MCAPI bool hasComparatorSignal() const;
434
435 MCAPI bool hasProperty(::BlockProperty type) const;
436
437#ifdef LL_PLAT_C
438 MCAPI bool const hasRuntimeId() const;
439#endif
440
441 MCAPI bool hasTag(uint64 const& hash) const;
442
443 MCAPI bool hasTag(::HashedString const& tagName) const;
444
445#ifdef LL_PLAT_C
446 MCAPI bool ignoreBlockForInsideCubeRenderer() const;
447#endif
448
449 MCAPI bool ignoreEntitiesOnPistonMove() const;
450
451 MCAPI bool isAttachedTo(::BlockSource& region, ::BlockPos const& pos, ::BlockPos& outAttachedTo) const;
452
453 MCAPI bool isButtonBlock() const;
454
455 MCAPI bool isContainerBlock() const;
456
457#ifdef LL_PLAT_C
458 MCAPI bool isCraftingBlock() const;
459#endif
460
461 MCAPI bool isCropBlock() const;
462
463 MCAPI bool isDoorBlock() const;
464
465 MCAPI bool isEmpty() const;
466
467 MCAPI bool isFallingBlock() const;
468
469 MCAPI bool isFenceBlock() const;
470
471 MCAPI bool isFenceGateBlock() const;
472
473 MCAPI bool isFilteredOut(::BlockRenderLayer heldItemRenderLayer) const;
474
475 MCAPI bool isFullBlockGeometry() const;
476
477 MCAPI bool isInteractiveBlock() const;
478
479 MCAPI bool isLavaBlocking() const;
480
481 MCAPI bool isLavaFlammable() const;
482
483 MCAPI bool isLeverBlock() const;
484
485 MCAPI bool isMotionBlockingBlock() const;
486
487 MCAPI bool isMultifaceBlock() const;
488
489 MCAPI bool isOpaqueFullBlock() const;
490
491 MCAPI bool isPartialBlock(::BlockSource const& region, ::BlockPos const& pos) const;
492
493 MCAPI bool isPreservingMediumWhenPlaced(::Block const& medium) const;
494
495 MCAPI bool isRailBlock() const;
496
497#ifdef LL_PLAT_C
498 MCAPI bool isSeasonTinted(::BlockSource& region, ::BlockPos const& pos) const;
499#endif
500
501 MCAPI bool isSignalSource() const;
502
503 MCAPI bool isSlabBlock() const;
504
505 MCFOLD bool isSolid() const;
506
507 MCAPI bool isSolidBlockingBlock() const;
508
509 MCAPI bool isSolidBlockingBlockAndNotSignalSource() const;
510
511 MCAPI bool isStairBlock() const;
512
513 MCAPI bool isStemBlock() const;
514
515#ifdef LL_PLAT_C
516 MCAPI bool isThinFenceBlock() const;
517#endif
518
519 MCAPI bool isTopPartialBlock(::BlockSource const& region, ::BlockPos const& pos) const;
520
521 MCAPI bool isUnbreakable() const;
522
523 MCAPI bool isValidSpawn(::BlockSource& region, ::BlockPos pos, ::br::spawn::EntityType const& entityType) const;
524
525 MCAPI bool isWallBlock() const;
526
527 MCAPI ::Block const& keepStates(::std::vector<::BlockState const*> const& statesToKeep) const;
528
529 MCAPI bool mayConsumeFertilizer(::BlockSource& region) const;
530
531 MCAPI bool mayPick() const;
532
533 MCAPI bool mayPick(::BlockSource const& region, bool liquid) const;
534
535 MCAPI bool mayPlace(::BlockSource& region, ::BlockPos const& pos) const;
536
537 MCAPI bool mayPlace(::BlockSource& region, ::BlockPos const& pos, uchar face) const;
538
539 MCAPI bool mayPlaceOn(::BlockSource& region, ::BlockPos const& pos) const;
540
541 MCAPI void movedByPiston(::BlockSource& region, ::BlockPos const& pos) const;
542
543 MCAPI void neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const;
544
545 MCAPI void onActorEvent(::BlockPos const& pos, ::std::string const& eventName, ::Actor& sourceEntity) const;
546
547 MCAPI void onActorInternalEvent(::BlockPos const& pos, ::std::string const& eventName, ::Actor& sourceEntity) const;
548
549 MCAPI void onExploded(::BlockSource& region, ::BlockPos const& pos, ::Actor* entitySource) const;
550
551 MCAPI void onFallOn(::BlockSource& region, ::BlockPos const& pos, ::Actor& entity, float fallDistance) const;
552
553 MCAPI bool
554 onFertilized(::BlockSource& region, ::BlockPos const& pos, ::Actor* entity, ::FertilizerType fType) const;
555
556 MCAPI void onHitByActivatingAttack(::BlockSource& region, ::BlockPos const& pos, ::Actor* sourceActor) const;
557
558 MCAPI void onLightningHit(::BlockSource& region, ::BlockPos const& pos) const;
559
560 MCAPI void onPlace(
561 ::BlockSource& region,
562 ::BlockPos const& pos,
563 ::Block const& previousBlock,
564 ::BlockChangeContext const& changeSourceContext
565 ) const;
566
567 MCAPI void onProjectileHit(::BlockSource& region, ::BlockPos const& pos, ::Actor const& projectile) const;
568
569 MCAPI void onRedstoneUpdate(
570 ::BlockSource& region,
571 ::BlockPos const& pos,
572 short strength,
573 short oldStrength,
574 bool isFirstTime
575 ) const;
576
577 MCAPI void onRemove(::BlockSource& region, ::BlockPos const& pos) const;
578
579 MCAPI void onStandOn(::EntityContext& entity, ::BlockPos const& pos) const;
580
581 MCAPI void onStateChange(
582 ::BlockSource& region,
583 ::BlockPos const& pos,
584 ::Block const& previousBlock,
585 ::BlockChangeContext const& changeSourceContext
586 ) const;
587
588 MCAPI void onStepOff(::Actor& entity, ::BlockPos const& pos) const;
589
590 MCAPI void onStepOn(::Actor& entity, ::BlockPos const& pos) const;
591
592 MCAPI void playerDestroy(::Player& player, ::BlockPos const& pos) const;
593
594 MCAPI ::Block const* playerWillDestroy(::Player& player, ::BlockPos const& pos) const;
595
596 MCAPI ::ItemActor*
597 popResource(::BlockSource& region, ::BlockPos const& pos, ::ItemInstance const& itemInstance) const;
598
599 MCAPI bool pushesOutItems() const;
600
601 MCAPI bool pushesUpFallingBlocks() const;
602
603 MCAPI void queuedTick(::BlockSource& region, ::BlockPos const& pos, ::Random& random) const;
604
605 MCAPI void randomTick(::BlockSource& region, ::BlockPos const& pos, ::Random& random) const;
606
607 MCAPI ::Vec3 randomlyModifyPosition(::BlockPos const& pos) const;
608
609 MCAPI bool requiresCorrectToolForDrops() const;
610
611 MCAPI void setRuntimeId(uint const& runtimeId) const;
612
613 MCAPI void setupRedstoneComponent(::BlockSource& region, ::BlockPos const& pos) const;
614
615#ifdef LL_PLAT_C
616 MCAPI bool shouldConnectToRedstone(::BlockSource& region, ::BlockPos const& pos, ::Direction::Type direction) const;
617#endif
618
619 MCAPI bool shouldRandomTick() const;
620
621 MCAPI bool shouldRandomTickExtraLayer() const;
622
623 MCAPI bool shouldStopFalling(::Actor& entity) const;
624
625 MCAPI bool shouldTickOnSetBlock() const;
626
627 MCAPI void spawnResources(
628 ::BlockSource& region,
629 ::BlockPos const& pos,
630 ::IRandom& random,
631 ::ResourceDropsContext const& resourceDropsContext
632 ) const;
633
634 MCAPI int telemetryVariant(::BlockSource& region, ::BlockPos const& pos) const;
635
636 MCAPI ::std::string toDebugString() const;
637
638 MCAPI void transformOnFall(::BlockSource& region, ::BlockPos const& pos, ::Actor* entity, float fallDistance) const;
639
640 MCAPI void triggerEvent(::BlockSource& region, ::BlockPos const& pos, int b0, int b1) const;
641
642 MCAPI ::CopperBehavior const* tryGetCopperBehavior() const;
643
644 MCAPI ::Block const* tryGetInfested() const;
645
646 MCAPI ::Block const* tryGetUninfested() const;
647
648 MCAPI bool tryToPlace(::BlockSource& region, ::BlockPos const& pos, ::ActorBlockSyncMessage const* syncMsg) const;
649
650 MCAPI bool tryToTill(::BlockSource& region, ::BlockPos const& pos, ::Actor& entity, ::ItemStack& item) const;
651
652 MCAPI bool updateTallestCollisionShape(
653 ::BlockSource const& region,
654 ::BlockPos const& pos,
655 ::AABB const& intersectTestBox,
657 ::AABB& result,
658 ::Vec3 const& posToMinimizeDistanceToIfMatchingHeight,
659 float& currentDistanceSqr
660 ) const;
661
662 MCAPI bool use(::Player& player, ::BlockPos const& pos, uchar face, ::std::optional<::Vec3> hit) const;
663
664#ifdef LL_PLAT_C
665 MCAPI void visitClientData(::brstd::function_ref<void(::ClientBlockData const&)> visitor) const;
666#endif
667 // NOLINTEND
668
669public:
670 // static functions
671 // NOLINTBEGIN
672#ifdef LL_PLAT_C
673 MCAPI static void DEPRECATEDcallOnGraphicsModeChanged(::BlockGraphicsModeChangeContext const& context);
674#endif
675 // NOLINTEND
676
677public:
678 // static variables
679 // NOLINTBEGIN
680 MCAPI static ::std::string const& BLOCK_DESCRIPTION_PREFIX();
681 // NOLINTEND
682
683public:
684 // constructor thunks
685 // NOLINTBEGIN
686 MCAPI void* $ctor(ushort data, ::gsl::not_null<::BlockType*> oldBlock);
687
688 MCAPI void* $ctor(ushort data, ::gsl::not_null<::BlockType*> oldBlock, ::CompoundTag serId, uint const& runId);
689 // NOLINTEND
690
691public:
692 // destructor thunk
693 // NOLINTBEGIN
694 MCAPI void $dtor();
695 // NOLINTEND
696
697public:
698 // vftables
699 // NOLINTBEGIN
700 MCAPI static void** $vftable();
701 // NOLINTEND
702};
Definition AABB.h:18
Definition Actor.h:125
Definition BaseGameVersion.h:13
Definition BlockChangeContext.h:16
Definition BlockEventManager.h:15
Definition BlockPos.h:21
Definition BlockSource.h:73
Definition BlockState.h:14
Definition BlockType.h:84
Definition CompoundTag.h:23
Definition EntityContext.h:17
Definition GetCollisionShapeInterface.h:13
Definition HashedString.h:5
Definition HitResult.h:19
Definition IClientBlockData.h:5
Definition IConstBlockSource.h:24
Definition IRandom.h:10
Definition ItemActor.h:31
Definition ItemInstance.h:15
Definition ItemStackBase.h:52
Definition ItemStack.h:35
Definition Material.h:8
Definition MobSpawnerData.h:17
Definition NeighborBlockDirections.h:14
Definition Player.h:137
Definition Random.h:10
Definition SpawnConditions.h:13
Definition Vec3.h:10
Definition VoxelShape.h:19
Definition function_ref.h:60
Definition Color.h:13
Definition optional_ref.h:10
Definition ActorBlockSyncMessage.h:8
Definition BlockAnimateTickData.h:14
Definition BlockComponentDescription.h:20
Definition BlockGraphicsModeChangeContext.h:5
Definition Brightness.h:8
Definition ClientBlockData.h:5
Definition CopperBehavior.h:14
Definition ResourceDropsContext.h:19
Definition EntityType.h:17
Definition context.h:5