91 std::optional<T> getState(uint64
id, ushort data)
const {
92 auto it = mStates->find(
id);
94 if (it == mStates->end()) {
96 for (
const auto& collection : *mAlteredStateCollections) {
97 if (collection && collection->mBlockState->get().mID ==
id) {
98 auto result = collection->getState(*
this, data);
109 return it->second.get<T>(data);
112 template <
typename T>
113 std::optional<T> getState(
BlockState const& stateType, ushort data)
const {
114 return getState<T>(stateType.mID, data);
117 template <
typename T>
118 requires(std::is_integral_v<T> || std::is_enum_v<T>)
120 auto it = mStates->find(
id);
122 if (it != mStates->end()) {
123 auto& stateInstance = it->second;
125 if (
static_cast<uchar
>(val) < stateInstance.mVariationCount) {
126 ushort maskedData = (data & ~stateInstance.mMask)
127 | (
static_cast<ushort
>(val) << (stateInstance.mEndBit - stateInstance.mNumBits + 1));
129 if (maskedData < mBlockPermutations->size()) {
130 return *mBlockPermutations->at(maskedData);
136 for (
auto& collection : *mAlteredStateCollections) {
137 if (collection && collection->mBlockState->get().mID ==
id) {
138 auto result = collection->setState(*
this, data, val);
145 return mReturnDefaultBlockOnUnidentifiedBlockState ? mDefaultState :
nullptr;
148 template <
typename T>
150 return trySetState(stateType.mID, val, data);
168 ::ll::TypedStorage<8, 48, ::HashedString> mRawName;
169 ::ll::TypedStorage<8, 32, ::std::string> mNamespaceName;
170 ::ll::TypedStorage<8, 48, ::HashedString> mFullName;
171 ::ll::TypedStorage<8, 48, ::HashedString> mPreFlatteningName;
198 ::ll::TypedStorage<1, 1, bool> mNorth;
199 ::ll::TypedStorage<1, 1, bool> mEast;
200 ::ll::TypedStorage<1, 1, bool> mSouth;
201 ::ll::TypedStorage<1, 1, bool> mWest;
209 ::ll::TypedStorage<8, 8, ::std::reference_wrapper<::BlockState const>> mBlockState;
216 virtual ::std::optional<int> getState(
::BlockLegacy const&,
int)
const = 0;
219 virtual ::Block
const* setState(
::BlockLegacy const&,
int,
int)
const = 0;
228 MCAPI
static bool _checkVersioningRequirements(
::SemVersion const& removedSupportVersion);
256 ::ll::TypedStorage<4, 4, int> mData;
257 ::ll::TypedStorage<8, 8, ::std::reference_wrapper<::BlockLegacy>> mBlockLegacy;
264 ::ll::TypedStorage<8, 24, ::std::vector<::BlockLegacy::RemovedStateCollection::SplitBlock>> mSplitBlocks;
271 virtual ::std::optional<int> getState(
::BlockLegacy const& blockLegacy,
int)
const ;
274 virtual ::Block
const* setState(
::BlockLegacy const& blockLegacy,
int blockData,
int stateData)
const
286 ::std::vector<::BlockLegacy::RemovedStateCollection::SplitBlock>&& splitBlocks,
299 MCAPI ::std::optional<int> $getState(
::BlockLegacy const& blockLegacy,
int)
const;
301 MCAPI ::Block
const* $setState(
::BlockLegacy const& blockLegacy,
int blockData,
int stateData)
const;
307 MCAPI
static void** $vftable();
314 using GetterType = ::std::function<::std::optional<int>(
::BlockLegacy const&,
int)>;
321 ::ll::TypedStorage<8, 64, ::std::function<::std::optional<int>(
::BlockLegacy const&,
int)>> mGetter;
322 ::ll::TypedStorage<8, 64, ::std::function<
::Block const*(
::BlockLegacy const&, int, int)>> mSetter;
329 virtual ::std::optional<int> getState(
::BlockLegacy const& blockLegacy,
int blockData)
const ;
332 virtual ::Block
const* setState(
::BlockLegacy const& blockLegacy,
int blockData,
int stateData)
const
344 ::std::function<::std::optional<int>(
::BlockLegacy const&,
int)> getter,
355 ::std::function<::std::optional<int>(
::BlockLegacy const&,
int)> getter,
365 ::std::function<::std::optional<int>(
::BlockLegacy const&,
int)> getter,
379 MCAPI ::std::optional<int> $getState(
::BlockLegacy const& blockLegacy,
int blockData)
const;
381 MCAPI ::Block
const* $setState(
::BlockLegacy const& blockLegacy,
int blockData,
int stateData)
const;
387 MCAPI
static void** $vftable();
392 LLNDAPI std::string
const& getTypeName()
const;
400 ::ll::TypedStorage<8, 32, ::std::string> mDescriptionId;
401 ::ll::TypedStorage<8, 104, ::BlockComponentStorage> mComponents;
402 ::ll::TypedStorage<8, 176, ::BlockLegacy::NameInfo> mNameInfo;
403 ::ll::TypedStorage<8, 8, ::BlockProperty> mProperties;
404 ::ll::TypedStorage<1, 1, bool> mFancy;
405 ::ll::TypedStorage<1, 1, ::BlockRenderLayer> mRenderLayer;
406 ::ll::TypedStorage<1, 1, bool> mRenderLayerCanRenderAsOpaque;
407 ::ll::TypedStorage<4, 4, ::BlockActorType> mBlockEntityType;
408 ::ll::TypedStorage<1, 1, bool> mAnimatedTexture;
409 ::ll::TypedStorage<4, 4, float> mThickness;
410 ::ll::TypedStorage<1, 1, bool> mCanSlide;
411 ::ll::TypedStorage<1, 1, bool> mCanReactToNeighborsDuringInstatick;
412 ::ll::TypedStorage<1, 1, bool> mIsInteraction;
413 ::ll::TypedStorage<4, 4, float> mGravity;
414 ::ll::TypedStorage<8, 8, ::Material const&> mMaterial;
415 ::ll::TypedStorage<1, 1, bool> mFalling;
416 ::ll::TypedStorage<4, 4, float> mParticleQuantityScalar;
417 ::ll::TypedStorage<4, 4, ::CreativeItemCategory> mCreativeCategory;
418 ::ll::TypedStorage<8, 32, ::std::string> mCreativeGroup;
419 ::ll::TypedStorage<1, 1, bool> mIsHiddenInCommands;
420 ::ll::TypedStorage<1, 1, bool> mAllowsRunes;
421 ::ll::TypedStorage<1, 1, bool> mCanBeBrokenFromFalling;
422 ::ll::TypedStorage<1, 1, bool> mCanBeOriginalSurface;
423 ::ll::TypedStorage<1, 1, bool> mSolid;
424 ::ll::TypedStorage<1, 1, bool> mPushesOutItems;
425 ::ll::TypedStorage<1, 1, bool> mIgnoreBlockForInsideCubeRenderer;
426 ::ll::TypedStorage<1, 1, bool> mIsTrapdoor;
427 ::ll::TypedStorage<1, 1, bool> mIsDoor;
428 ::ll::TypedStorage<1, 1, bool> mIsOpaqueFullBlock;
429 ::ll::TypedStorage<4, 4, float> mTranslucency;
430 ::ll::TypedStorage<1, 1, bool> mShouldRandomTick;
431 ::ll::TypedStorage<1, 1, bool> mShouldRandomTickExtraLayer;
432 ::ll::TypedStorage<1, 1, bool> mIsMobPiece;
433 ::ll::TypedStorage<1, 1, bool> mCanBeExtraBlock;
434 ::ll::TypedStorage<1, 1, bool> mCanPropagateBrightness;
435 ::ll::TypedStorage<1, 1, ::Brightness> mLightBlock;
436 ::ll::TypedStorage<1, 1, ::Brightness> mLightEmission;
437 ::ll::TypedStorage<4, 4, ::FlameOdds> mFlameOdds;
438 ::ll::TypedStorage<4, 4, ::BurnOdds> mBurnOdds;
439 ::ll::TypedStorage<1, 1, ::LavaFlammable> mLavaFlammable;
440 ::ll::TypedStorage<4, 16, ::mce::Color> mMapColor;
441 ::ll::TypedStorage<4, 4, float> mFriction;
442 ::ll::TypedStorage<4, 4, ::NoteBlockInstrument> mNoteBlockInstrument;
443 ::ll::TypedStorage<1, 1, ::TintMethod> mTintMethod;
444 ::ll::TypedStorage<1, 1, bool> mReturnDefaultBlockOnUnidentifiedBlockState;
445 ::ll::TypedStorage<2, 2, ::NewBlockID> mID;
446 ::ll::TypedStorage<8, 32, ::BaseGameVersion> mMinRequiredBaseGameVersion;
447 ::ll::TypedStorage<1, 1, bool> mIsVanilla;
448 ::ll::TypedStorage<8, 24, ::std::vector<::HashedString>> mTags;
449 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::DefinitionEvent>> mEventHandlers;
450 ::ll::TypedStorage<1, 1, bool> mDataDrivenVanillaBlocksAndItemsEnabled;
451 ::ll::TypedStorage<4, 24, ::AABB> mVisualShape;
452 ::ll::TypedStorage<4, 4, uint> mBitsUsed;
453 ::ll::TypedStorage<4, 4, uint> mTotalBitsUsed;
454 ::ll::TypedStorage<8, 16, ::std::map<uint64, ::BlockStateInstance>> mStates;
455 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, uint64>> mStateNameMap;
456 ::ll::TypedStorage<8, 8, uint64> mCreativeEnumState;
457 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::Block>>> mBlockPermutations;
458 ::ll::TypedStorage<8, 8, ::Block const*> mDefaultState;
459 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::BlockTrait::IGetPlacementBlockCallback>>>
460 mGetPlacementBlockCallbacks;
461 ::ll::TypedStorage<8, 72, ::Core::Cache<ushort, ::Block const*, ::Block const*>> mLegacyDataLookupTable;
462 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BlockStateGroup>> mBlockStateGroup;
463 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IResourceDropsStrategy>> mResourceDropsStrategy;
464 ::ll::TypedStorage<4, 8, ::IntRange> mExperienceDropRange;
465 ::ll::TypedStorage<1, 1, bool> mRequiresCorrectToolForDrops;
466 ::ll::TypedStorage<8, 104, ::NetEaseBlockComponentStorage> mNetEaseComponentStorage;
467 ::ll::TypedStorage<8, 24, ::std::vector<::std::shared_ptr<::BlockLegacy::AlteredStateCollection>>>
468 mAlteredStateCollections;
469 ::ll::TypedStorage<1, 1, ::Bedrock::EnumSet<::BlockClientPredictionOverrides, 7>> mClientPredictionOverrides;
470 ::ll::TypedStorage<8, 32, ::BlockEvents::BlockEventManager> mEventManager;
480 virtual ::std::shared_ptr<::BlockActor> newBlockEntity(
::BlockPos const& pos,
::Block const& block)
const;
483 virtual ::Block
const* getNextBlockPermutation(
::Block const& currentBlock)
const;
500 virtual bool getCollisionShapeForCamera(
508 virtual bool addCollisionShapes(
512 ::AABB const* intersectTestBox,
513 ::std::vector<::AABB>& inoutBoxes,
518 virtual void addAABBs(
522 ::AABB const* intersectTestBox,
523 ::std::vector<::AABB>& inoutBoxes
527 virtual ::AABB
const&
531 virtual ::AABB
const&
536 virtual ::AABB
const& getVisualShape(
::Block const&,
::AABB&)
const;
539 virtual ::AABB
const& getUIShape(
::Block const& block,
::AABB& bufferAABB)
const;
549 virtual ::Vec3 randomlyModifyPosition(
::BlockPos const& pos,
int& seed)
const;
552 virtual ::Vec3 randomlyModifyPosition(
::BlockPos const& pos)
const;
561 virtual bool liquidCanFlowIntoFromDirection(
562 uchar flowIntoFacing,
568 virtual bool hasVariableLighting()
const;
571 virtual bool isStrippable(
::Block const& srcBlock)
const;
574 virtual ::Block
const& getStrippedBlock(
::Block const& srcBlock)
const;
577 virtual bool canProvideSupport(
::Block const&, uchar, ::BlockSupportType)
const;
580 virtual bool canProvideMultifaceSupport(
::Block const& block, uchar face)
const;
583 virtual bool canConnect(
::Block const&, uchar toOther,
::Block const& thisBlock)
const;
586 virtual bool isMovingBlock()
const;
589 virtual ::CopperBehavior
const* tryGetCopperBehavior()
const;
592 virtual bool isStemBlock()
const;
595 virtual bool isContainerBlock()
const;
598 virtual bool isCraftingBlock()
const;
601 virtual bool isLavaBlocking()
const;
604 virtual bool isFenceBlock()
const;
607 virtual bool isFenceGateBlock()
const;
610 virtual bool isThinFenceBlock()
const;
613 virtual bool isWallBlock()
const;
616 virtual bool isStairBlock()
const;
619 virtual bool isSlabBlock()
const;
622 virtual bool isDoorBlock()
const;
625 virtual bool isRailBlock()
const;
628 virtual bool isButtonBlock()
const;
631 virtual bool isLeverBlock()
const;
634 virtual bool isCandleCakeBlock()
const;
637 virtual bool isMultifaceBlock()
const;
640 virtual bool isSignalSource()
const;
643 virtual bool isConsumerComponent()
const;
646 virtual bool canBeOriginalSurface()
const;
649 virtual bool isSilentWhenJumpingOff()
const;
652 virtual bool isValidAuxValue(
int value)
const;
658 virtual ::Block
const& sanitizeFillBlock(
::Block const& block)
const;
667 virtual ::std::optional<::HashedString> getRequiredMedium()
const;
675 handlePrecipitation(
::BlockSource& region,
::BlockPos const& pos,
float downfallAmount,
float temperature)
const;
678 virtual bool canBeUsedInCommands(
::BaseGameVersion const& baseGameVersion)
const;
694 virtual void onRedstoneUpdate(
::BlockSource& region,
::BlockPos const& pos,
int strength,
bool isFirstTime)
const;
718 virtual bool isBounceBlock()
const;
721 virtual bool isPreservingMediumWhenPlaced(
::BlockLegacy const* medium)
const;
724 virtual bool isFilteredOut(::BlockRenderLayer)
const;
727 virtual bool canRenderSelectionOverlay(::BlockRenderLayer)
const;
730 virtual bool ignoreEntitiesOnPistonMove(
::Block const& block)
const;
737 virtual bool mayConsumeFertilizer(
::BlockSource& region)
const;
743 virtual bool mayPick()
const;
758 virtual bool tryToPlace(
776 virtual bool getIgnoresDestroyPermissions(
::Actor& entity,
::BlockPos const& pos)
const;
795 virtual ::Block
const&
821 virtual void executeEvent(
825 ::std::string
const& eventName,
833 virtual bool shouldStopFalling(
::Actor& entity)
const;
836 virtual bool pushesUpFallingBlocks()
const;
839 virtual bool canHaveExtraData()
const;
842 virtual bool hasComparatorSignal()
const;
852 virtual bool canInstatick()
const;
861 virtual bool causesFreezeEffect()
const;
864 virtual ::std::string buildDescriptionId(
::Block const&)
const;
867 virtual bool isAuxValueRelevantForPicking()
const;
876 virtual float getShadeBrightness(
::Block const& block)
const;
882 virtual int getVariant(
::Block const& block)
const;
885 virtual bool canSpawnOn(
::Actor*)
const;
888 virtual ::Block
const& getRenderBlock()
const;
891 virtual uchar getMappedFace(uchar face,
::Block const& block)
const;
894 virtual ::Flip getFaceFlip(uchar face,
::Block const& block)
const;
903 virtual ::BlockLegacy& init();
906 virtual ::Brightness getLightEmission(
::Block const&)
const;
909 virtual ::Block
const* tryLegacyUpgrade(ushort)
const;
912 virtual bool dealsContactDamage(
::Actor const& actor,
::Block const& block,
bool isPathFinding)
const;
915 virtual ::Block
const* tryGetInfested(
::Block const&)
const;
918 virtual ::Block
const* tryGetUninfested(
::Block const&)
const;
921 virtual void _addHardCodedBlockComponents(
::Experiments const&);
933 virtual bool shouldTickOnSetBlock()
const;
942 virtual bool isInteractiveBlock()
const;
945 virtual bool use(
::Player& player,
::BlockPos const& pos, uchar face, ::std::optional<::Vec3>)
const;
951 virtual bool allowStateMismatchOnPlacement(
::Block const& clientTarget,
::Block const& serverTarget)
const;
960 virtual int getExtraRenderLayers()
const;
963 virtual ::Brightness getLight(
::Block const&)
const;
966 virtual ::Brightness getEmissiveBrightness(
::Block const&)
const;
983 MCAPI
void _executeEvent(
984 ::std::string
const& name,
985 ::std::vector<::std::pair<::std::string const, ::std::string const>>& eventStack,
989 MCAPI
void _forceExecuteTrigger(
991 ::std::vector<::std::pair<::std::string const, ::std::string const>>& eventStack,
995 MCAPI ::BlockLegacy& addBlockProperties(::BlockProperty addedProperties);
999 MCAPI ::BlockLegacy& addState(
::BlockState const& state);
1001 MCAPI ::BlockLegacy& addState(
::BlockState const& state, uint64 variationCount);
1007 MCAPI
bool anyOf(::gsl::span<::std::reference_wrapper<::HashedString const>
const>
const& blockTypeIdList)
const;
1009 MCAPI ::std::string buildDescriptionName(
::Block const& block)
const;
1011 MCAPI
void createBlockPermutations(uint latestUpdaterVersion);
1013 MCAPI ::WeakPtr<::BlockLegacy> createWeakPtr()
const;
1015 MCAPI
void executeEvent(::std::string
const& name,
::RenderParams& params)
const;
1019 MCAPI
void finalizeBlockComponentStorage();
1023 MCAPI
void forEachBlockPermutation(::std::function<
bool(
::Block const&)> callback)
const;
1025 MCAPI
bool forEachBlockPermutationMutable(::std::function<
bool(
::Block&)> callback);
1027 MCAPI
void forEachBlockStateInstance(::std::function<
bool(
::BlockStateInstance const&)> callback)
const;
1029 MCAPI
short getBlockItemId()
const;
1031 MCAPI ::BlockState
const* getBlockState(
::HashedString const& name)
const;
1033 MCAPI ::std::vector<::CommandName> getCommandNames()
const;
1035 MCAPI
void getDebugText(::std::vector<::std::string>& outputInfo,
::BlockPos const& debugPos)
const;
1037 MCAPI ::ResourceDrops
1041 MCAPI
bool hasState(
::BlockState const& stateType)
const;
1051 MCAPI ::BlockLegacy& overrideBlockProperties(::BlockProperty newProperties);
1053 MCAPI ::BlockLegacy& setAllowsRunes(
bool interference);
1055 MCAPI ::BlockLegacy& setCanBeExtraBlock(
bool state);
1057 MCAPI ::BlockLegacy& setCanBeOriginalSurface(
bool canBeOriginalSurface);
1059 MCAPI ::BlockLegacy& setCategory(::CreativeItemCategory creativeCategory);
1061 MCAPI ::BlockLegacy& setCreativeGroup(::std::string
const& value);
1063 MCAPI ::BlockLegacy& setExperienceDrop(
::IntRange dropRange);
1065 MCAPI ::BlockLegacy& setFlammable(::FlameOdds flameOdds, ::BurnOdds burnOdds, ::LavaFlammable lavaFlammable);
1067 MCAPI ::BlockLegacy& setFriction(
float f);
1069 MCAPI ::BlockLegacy& setInstrument(::NoteBlockInstrument instrument);
1071 MCAPI ::BlockLegacy& setIsHiddenInCommands(
bool isHiddenInCommands);
1073 MCAPI ::BlockLegacy&
1077 MCAPI ::BlockLegacy& setLightBlock(
::Brightness brightness);
1079 MCAPI ::BlockLegacy& setLightEmission(
::Brightness brightness);
1081 MCAPI ::BlockLegacy& setMapColor(
::mce::Color const& color);
1083 MCAPI ::BlockLegacy& setMinRequiredBaseGameVersion(
::BaseGameVersion const& baseGameVersion);
1085 MCAPI ::BlockLegacy& setNameId(::std::string
const&
id);
1087 MCAPI
void setRandomTicking(
bool tick)
const;
1089 MCAPI ::BlockLegacy& setRequiresCorrectToolForDrops();
1091 MCAPI ::BlockLegacy& setTintMethod(::TintMethod tintMethod);
1093 MCAPI ::BlockLegacy& setTranslucency(
float translucency);
1095 MCAPI
bool shouldTriggerOnStandOn(
::Actor& entity,
::BlockPos const& pos)
const;
1097 MCAPI
void spawnResources(
1105 MCAPI ::Block
const* tryGetStateFromLegacyData(ushort data)
const;
1107 MCAPI
bool updateTallestCollisionShape(
1111 ::AABB const& intersectTestBox,
1114 ::Vec3 const& posToMinimizeDistanceToIfMatchingHeight,
1115 float& currentDistanceSqr
1124 MCAPI static ::BlockLegacy::NameInfo extractBlockNameInfo(::std::string
const& name);
1126 MCAPI static ::BlockLegacy::HorizontalDirectionBits
1129 MCAPI
static uchar getPlacementFacingAll(
::Actor const& entity,
::BlockPos const& pos,
float yRotOffsetDegree);
1133 MCAPI static ::ItemActor*
1140 MCAPI static ::std::string
const& BLOCK_DESCRIPTION_PREFIX();
1142 MCAPI
static float const& SIZE_OFFSET();
1148 MCAPI
void* $ctor(::std::string
const& nameId,
int id,
::Material const& material);
1160 MCAPI ::std::shared_ptr<::BlockActor> $newBlockEntity(
::BlockPos const& pos,
::Block const& block)
const;
1162 MCAPI ::Block
const* $getNextBlockPermutation(
::Block const& currentBlock)
const;
1171 MCAPI
bool $getCollisionShapeForCamera(
1178 MCAPI
bool $addCollisionShapes(
1182 ::AABB const* intersectTestBox,
1183 ::std::vector<::AABB>& inoutBoxes,
1187 MCAPI
void $addAABBs(
1191 ::AABB const* intersectTestBox,
1192 ::std::vector<::AABB>& inoutBoxes
1198 MCFOLD ::AABB
const&
1202 MCAPI ::AABB
const& $getVisualShape(
::Block const&,
::AABB&)
const;
1204 MCAPI ::AABB
const& $getUIShape(
::Block const& block,
::AABB& bufferAABB)
const;
1211 MCAPI ::Vec3 $randomlyModifyPosition(
::BlockPos const& pos,
int& seed)
const;
1213 MCFOLD ::Vec3 $randomlyModifyPosition(
::BlockPos const& pos)
const;
1219 MCFOLD
bool $liquidCanFlowIntoFromDirection(
1220 uchar flowIntoFacing,
1225 MCFOLD
bool $hasVariableLighting()
const;
1227 MCFOLD
bool $isStrippable(
::Block const& srcBlock)
const;
1229 MCFOLD ::Block
const& $getStrippedBlock(
::Block const& srcBlock)
const;
1231 MCAPI
bool $canProvideMultifaceSupport(
::Block const& block, uchar face)
const;
1233 MCAPI
bool $canConnect(
::Block const&, uchar toOther,
::Block const& thisBlock)
const;
1235 MCFOLD
bool $isMovingBlock()
const;
1237 MCFOLD ::CopperBehavior
const* $tryGetCopperBehavior()
const;
1239 MCFOLD
bool $isStemBlock()
const;
1241 MCFOLD
bool $isContainerBlock()
const;
1243 MCFOLD
bool $isCraftingBlock()
const;
1245 MCAPI
bool $isLavaBlocking()
const;
1247 MCFOLD
bool $isFenceBlock()
const;
1249 MCFOLD
bool $isFenceGateBlock()
const;
1251 MCFOLD
bool $isThinFenceBlock()
const;
1253 MCFOLD
bool $isWallBlock()
const;
1255 MCFOLD
bool $isStairBlock()
const;
1257 MCFOLD
bool $isSlabBlock()
const;
1259 MCFOLD
bool $isDoorBlock()
const;
1261 MCFOLD
bool $isRailBlock()
const;
1263 MCFOLD
bool $isButtonBlock()
const;
1265 MCFOLD
bool $isLeverBlock()
const;
1267 MCFOLD
bool $isCandleCakeBlock()
const;
1269 MCFOLD
bool $isMultifaceBlock()
const;
1271 MCFOLD
bool $isSignalSource()
const;
1273 MCFOLD
bool $isConsumerComponent()
const;
1275 MCAPI
bool $canBeOriginalSurface()
const;
1277 MCFOLD
bool $isSilentWhenJumpingOff()
const;
1279 MCFOLD
bool $isValidAuxValue(
int value)
const;
1283 MCFOLD ::Block
const& $sanitizeFillBlock(
::Block const& block)
const;
1289 MCAPI ::std::optional<::HashedString> $getRequiredMedium()
const;
1295 $handlePrecipitation(
::BlockSource& region,
::BlockPos const& pos,
float downfallAmount,
float temperature)
const;
1297 MCAPI
bool $canBeUsedInCommands(
::BaseGameVersion const& baseGameVersion)
const;
1308 MCFOLD
void $onRedstoneUpdate(
::BlockSource& region,
::BlockPos const& pos,
int strength,
bool isFirstTime)
const;
1324 MCFOLD
bool $isBounceBlock()
const;
1326 MCFOLD
bool $isPreservingMediumWhenPlaced(
::BlockLegacy const* medium)
const;
1328 MCFOLD
bool $isFilteredOut(::BlockRenderLayer)
const;
1330 MCFOLD
bool $canRenderSelectionOverlay(::BlockRenderLayer)
const;
1332 MCFOLD
bool $ignoreEntitiesOnPistonMove(
::Block const& block)
const;
1337 MCFOLD
bool $mayConsumeFertilizer(
::BlockSource& region)
const;
1341 MCFOLD
bool $mayPick()
const;
1351 MCFOLD
bool $tryToPlace(
1365 MCFOLD
bool $getIgnoresDestroyPermissions(
::Actor& entity,
::BlockPos const& pos)
const;
1378 MCAPI ::Block
const&
1379 $getPlacementBlock(
::Actor const& by,
::BlockPos const& pos, uchar face,
::Vec3 const& clickPos,
int itemValue)
1396 MCAPI
void $executeEvent(
1400 ::std::string
const& eventName,
1406 MCAPI
bool $shouldStopFalling(
::Actor& entity)
const;
1408 MCFOLD
bool $pushesUpFallingBlocks()
const;
1410 MCFOLD
bool $canHaveExtraData()
const;
1412 MCFOLD
bool $hasComparatorSignal()
const;
1419 MCFOLD
bool $canInstatick()
const;
1425 MCFOLD
bool $causesFreezeEffect()
const;
1427 MCFOLD ::std::string $buildDescriptionId(
::Block const&)
const;
1429 MCFOLD
bool $isAuxValueRelevantForPicking()
const;
1435 MCAPI
float $getShadeBrightness(
::Block const& block)
const;
1439 MCAPI
int $getVariant(
::Block const& block)
const;
1441 MCFOLD
bool $canSpawnOn(
::Actor*)
const;
1443 MCFOLD ::Block
const& $getRenderBlock()
const;
1445 MCFOLD uchar $getMappedFace(uchar face,
::Block const& block)
const;
1447 MCFOLD ::Flip $getFaceFlip(uchar face,
::Block const& block)
const;
1453 MCFOLD ::BlockLegacy& $init();
1455 MCAPI ::Brightness $getLightEmission(
::Block const&)
const;
1457 MCFOLD ::Block
const* $tryLegacyUpgrade(ushort)
const;
1459 MCFOLD
bool $dealsContactDamage(
::Actor const& actor,
::Block const& block,
bool isPathFinding)
const;
1461 MCFOLD ::Block
const* $tryGetInfested(
::Block const&)
const;
1463 MCFOLD ::Block
const* $tryGetUninfested(
::Block const&)
const;
1465 MCFOLD
void $_addHardCodedBlockComponents(
::Experiments const&);
1473 MCFOLD
bool $shouldTickOnSetBlock()
const;
1479 MCFOLD
bool $isInteractiveBlock()
const;
1481 MCAPI
bool $use(
::Player& player,
::BlockPos const& pos, uchar face, ::std::optional<::Vec3>)
const;
1485 MCFOLD
bool $allowStateMismatchOnPlacement(
::Block const& clientTarget,
::Block const& serverTarget)
const;
1491 MCFOLD
int $getExtraRenderLayers()
const;
1493 MCAPI ::Brightness $getLight(
::Block const&)
const;
1495 MCFOLD ::Brightness $getEmissiveBrightness(
::Block const&)
const;
1507 MCAPI
static void** $vftable();