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;
199 ::ll::TypedStorage<1, 1, bool> mNorth;
200 ::ll::TypedStorage<1, 1, bool> mEast;
201 ::ll::TypedStorage<1, 1, bool> mSouth;
202 ::ll::TypedStorage<1, 1, bool> mWest;
210 ::ll::TypedStorage<8, 8, ::std::reference_wrapper<::BlockState const>> mBlockState;
217 virtual ::std::optional<int> getState(
::BlockLegacy const&,
int)
const = 0;
220 virtual ::Block
const* setState(
::BlockLegacy const&,
int,
int)
const = 0;
251 ::ll::TypedStorage<4, 4, int> mData;
252 ::ll::TypedStorage<8, 8, ::std::reference_wrapper<::BlockLegacy>> mBlockLegacy;
259 ::ll::TypedStorage<8, 24, ::std::vector<::BlockLegacy::RemovedStateCollection::SplitBlock>> mSplitBlocks;
266 virtual ::std::optional<int> getState(
::BlockLegacy const& blockLegacy,
int)
const ;
269 virtual ::Block
const* setState(
::BlockLegacy const& blockLegacy,
int blockData,
int stateData)
const
281 ::std::vector<::BlockLegacy::RemovedStateCollection::SplitBlock>&& splitBlocks,
303 using GetterType = ::std::function<::std::optional<int>(
::BlockLegacy const&,
int)>;
310 ::ll::TypedStorage<8, 64, ::std::function<::std::optional<int>(
::BlockLegacy const&,
int)>> mGetter;
311 ::ll::TypedStorage<8, 64, ::std::function<
::Block const*(
::BlockLegacy const&, int, int)>> mSetter;
322 virtual ::std::optional<int> getState(
::BlockLegacy const& blockLegacy,
int blockData)
const ;
325 virtual ::Block
const* setState(
::BlockLegacy const& blockLegacy,
int blockData,
int stateData)
const
337 ::std::function<::std::optional<int>(
::BlockLegacy const&,
int)> getter,
348 ::std::function<::std::optional<int>(
::BlockLegacy const&,
int)> getter,
358 ::std::function<::std::optional<int>(
::BlockLegacy const&,
int)> getter,
379 LLNDAPI std::string
const& getTypeName()
const;
387 ::ll::TypedStorage<8, 32, ::std::string> mDescriptionId;
388 ::ll::TypedStorage<8, 104, ::BlockComponentStorage> mComponents;
389 ::ll::TypedStorage<8, 176, ::BlockLegacy::NameInfo> mNameInfo;
390 ::ll::TypedStorage<8, 8, ::BlockProperty> mProperties;
391 ::ll::TypedStorage<1, 1, bool> mFancy;
392 ::ll::TypedStorage<1, 1, ::BlockRenderLayer> mRenderLayer;
393 ::ll::TypedStorage<1, 1, bool> mRenderLayerCanRenderAsOpaque;
394 ::ll::TypedStorage<4, 4, ::BlockActorType> mBlockEntityType;
395 ::ll::TypedStorage<4, 4, float> mThickness;
396 ::ll::TypedStorage<1, 1, bool> mCanSlide;
397 ::ll::TypedStorage<1, 1, bool> mCanReactToNeighborsDuringInstatick;
398 ::ll::TypedStorage<1, 1, bool> mIsInteraction;
399 ::ll::TypedStorage<4, 4, float> mGravity;
400 ::ll::TypedStorage<8, 8, ::Material const&> mMaterial;
401 ::ll::TypedStorage<1, 1, bool> mFalling;
402 ::ll::TypedStorage<4, 4, float> mParticleQuantityScalar;
403 ::ll::TypedStorage<4, 4, ::CreativeItemCategory> mCreativeCategory;
404 ::ll::TypedStorage<8, 32, ::std::string> mCreativeGroup;
405 ::ll::TypedStorage<1, 1, bool> mIsHiddenInCommands;
406 ::ll::TypedStorage<1, 1, bool> mAllowsRunes;
407 ::ll::TypedStorage<1, 1, bool> mCanBeBrokenFromFalling;
408 ::ll::TypedStorage<1, 1, bool> mCanBeOriginalSurface;
409 ::ll::TypedStorage<1, 1, bool> mSolid;
410 ::ll::TypedStorage<1, 1, bool> mPushesOutItems;
411 ::ll::TypedStorage<1, 1, bool> mIgnoreBlockForInsideCubeRenderer;
412 ::ll::TypedStorage<1, 1, bool> mIsTrapdoor;
413 ::ll::TypedStorage<1, 1, bool> mIsDoor;
414 ::ll::TypedStorage<1, 1, bool> mIsOpaqueFullBlock;
415 ::ll::TypedStorage<4, 4, float> mTranslucency;
416 ::ll::TypedStorage<1, 1, bool> mShouldRandomTick;
417 ::ll::TypedStorage<1, 1, bool> mShouldRandomTickExtraLayer;
418 ::ll::TypedStorage<1, 1, bool> mIsMobPiece;
419 ::ll::TypedStorage<1, 1, bool> mCanBeExtraBlock;
420 ::ll::TypedStorage<1, 1, bool> mCanPropagateBrightness;
421 ::ll::TypedStorage<1, 1, ::Brightness> mLightBlock;
422 ::ll::TypedStorage<1, 1, ::Brightness> mLightEmission;
423 ::ll::TypedStorage<4, 4, ::FlameOdds> mFlameOdds;
424 ::ll::TypedStorage<4, 4, ::BurnOdds> mBurnOdds;
425 ::ll::TypedStorage<1, 1, ::LavaFlammable> mLavaFlammable;
426 ::ll::TypedStorage<4, 16, ::mce::Color> mMapColor;
427 ::ll::TypedStorage<4, 4, float> mFriction;
428 ::ll::TypedStorage<4, 4, ::NoteBlockInstrument> mNoteBlockInstrument;
429 ::ll::TypedStorage<1, 1, ::TintMethod> mTintMethod;
430 ::ll::TypedStorage<1, 1, bool> mReturnDefaultBlockOnUnidentifiedBlockState;
431 ::ll::TypedStorage<2, 2, ::NewBlockID> mID;
432 ::ll::TypedStorage<8, 32, ::BaseGameVersion> mMinRequiredBaseGameVersion;
433 ::ll::TypedStorage<1, 1, bool> mIsVanilla;
434 ::ll::TypedStorage<8, 24, ::std::vector<::HashedString>> mTags;
435 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::DefinitionEvent>> mEventHandlers;
436 ::ll::TypedStorage<1, 1, bool> mDataDrivenVanillaBlocksAndItemsEnabled;
437 ::ll::TypedStorage<4, 24, ::AABB> mVisualShape;
438 ::ll::TypedStorage<4, 4, uint> mBitsUsed;
439 ::ll::TypedStorage<4, 4, uint> mTotalBitsUsed;
440 ::ll::TypedStorage<8, 16, ::std::map<uint64, ::BlockStateInstance>> mStates;
441 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, uint64>> mStateNameMap;
442 ::ll::TypedStorage<8, 8, uint64> mCreativeEnumState;
443 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::Block>>> mBlockPermutations;
444 ::ll::TypedStorage<8, 8, ::Block const*> mDefaultState;
445 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::BlockTrait::IGetPlacementBlockCallback>>>
446 mGetPlacementBlockCallbacks;
447 ::ll::TypedStorage<8, 72, ::Core::Cache<ushort, ::Block const*, ::Block const*>> mLegacyDataLookupTable;
448 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BlockStateGroup>> mBlockStateGroup;
449 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IResourceDropsStrategy>> mResourceDropsStrategy;
450 ::ll::TypedStorage<4, 8, ::IntRange> mExperienceDropRange;
451 ::ll::TypedStorage<1, 1, bool> mRequiresCorrectToolForDrops;
452 ::ll::TypedStorage<8, 104, ::NetEaseBlockComponentStorage> mNetEaseComponentStorage;
453 ::ll::TypedStorage<8, 24, ::std::vector<::std::shared_ptr<::BlockLegacy::AlteredStateCollection>>>
454 mAlteredStateCollections;
455 ::ll::TypedStorage<1, 1, ::Bedrock::EnumSet<::BlockClientPredictionOverrides, 7>> mClientPredictionOverrides;
456 ::ll::TypedStorage<8, 32, ::BlockEvents::BlockEventManager> mEventManager;
472 virtual ::std::shared_ptr<::BlockActor> newBlockEntity(
::BlockPos const& pos,
::Block const& block)
const;
475 virtual ::Block
const* getNextBlockPermutation(
::Block const& currentBlock)
const;
482 virtual ::HitResult clip(
488 ::ShapeType shapeType,
493 virtual ::AABB getCollisionShape(
501 virtual bool getCollisionShapeForCamera(
509 virtual bool addCollisionShapes(
513 ::AABB const* intersectTestBox,
514 ::std::vector<::AABB>& inoutBoxes,
519 virtual void addAABBs(
523 ::AABB const* intersectTestBox,
524 ::std::vector<::AABB>& inoutBoxes
528 virtual ::AABB
const&
532 virtual ::AABB
const& getVisualShapeInWorld(
540 virtual ::AABB
const& getVisualShape(
::Block const&,
::AABB&)
const;
543 virtual ::AABB
const& getUIShape(
::Block const& block,
::AABB& bufferAABB)
const;
553 virtual ::Vec3 randomlyModifyPosition(
::BlockPos const& pos)
const;
562 virtual bool liquidCanFlowIntoFromDirection(
563 uchar flowIntoFacing,
569 virtual bool hasVariableLighting()
const;
572 virtual bool isStrippable(
::Block const& srcBlock)
const;
575 virtual ::Block
const& getStrippedBlock(
::Block const& srcBlock)
const;
578 virtual bool canProvideSupport(
::Block const&, uchar, ::BlockSupportType)
const;
581 virtual bool canProvideMultifaceSupport(
::Block const& block, uchar face)
const;
584 virtual bool canConnect(
::Block const&, uchar toOther,
::Block const& thisBlock)
const;
587 virtual bool isMovingBlock()
const;
590 virtual ::CopperBehavior
const* tryGetCopperBehavior()
const;
593 virtual bool isStemBlock()
const;
596 virtual bool isContainerBlock()
const;
599 virtual bool isCraftingBlock()
const;
602 virtual bool isLavaBlocking()
const;
605 virtual bool isFenceBlock()
const;
608 virtual bool isFenceGateBlock()
const;
611 virtual bool isThinFenceBlock()
const;
614 virtual bool isWallBlock()
const;
617 virtual bool isStairBlock()
const;
620 virtual bool isSlabBlock()
const;
623 virtual bool isDoorBlock()
const;
626 virtual bool isRailBlock()
const;
629 virtual bool isButtonBlock()
const;
632 virtual bool isLeverBlock()
const;
635 virtual bool isCandleCakeBlock()
const;
638 virtual bool isMultifaceBlock()
const;
641 virtual bool isSignalSource()
const;
644 virtual bool isConsumerComponent()
const;
647 virtual bool canBeOriginalSurface()
const;
650 virtual bool isSilentWhenJumpingOff()
const;
653 virtual bool isValidAuxValue(
int value)
const;
659 virtual ::Block
const& sanitizeFillBlock(
::Block const& block)
const;
668 virtual ::std::optional<::HashedString> getRequiredMedium()
const;
676 handlePrecipitation(
::BlockSource& region,
::BlockPos const& pos,
float downfallAmount,
float temperature)
const;
679 virtual bool canBeUsedInCommands(
::BaseGameVersion const& baseGameVersion)
const;
695 virtual void onRedstoneUpdate(
::BlockSource& region,
::BlockPos const& pos,
int strength,
bool isFirstTime)
const;
719 virtual bool isBounceBlock()
const;
722 virtual bool isPreservingMediumWhenPlaced(
::BlockLegacy const* medium)
const;
725 virtual bool isFilteredOut(::BlockRenderLayer)
const;
728 virtual bool canRenderSelectionOverlay(::BlockRenderLayer)
const;
731 virtual bool ignoreEntitiesOnPistonMove(
::Block const& block)
const;
738 virtual bool mayConsumeFertilizer(
::BlockSource& region)
const;
744 virtual bool mayPick()
const;
759 virtual bool tryToPlace(
777 virtual bool getIgnoresDestroyPermissions(
::Actor& entity,
::BlockPos const& pos)
const;
796 virtual ::Block
const& getPlacementBlock(
817 virtual bool canBeBuiltOver(
831 virtual void executeEvent(
835 ::std::string
const& eventName,
843 virtual bool shouldStopFalling(
::Actor& entity)
const;
846 virtual bool pushesUpFallingBlocks()
const;
849 virtual bool canHaveExtraData()
const;
852 virtual bool hasComparatorSignal()
const;
862 virtual bool canInstatick()
const;
871 virtual bool causesFreezeEffect()
const;
874 virtual ::std::string buildDescriptionId(
::Block const&)
const;
877 virtual bool isAuxValueRelevantForPicking()
const;
886 virtual float getShadeBrightness(
::Block const& block)
const;
892 virtual int getVariant(
::Block const& block)
const;
895 virtual bool canSpawnOn(
::Actor*)
const;
898 virtual ::Block
const& getRenderBlock()
const;
901 virtual uchar getMappedFace(uchar face,
::Block const& block)
const;
904 virtual ::Flip getFaceFlip(uchar face,
::Block const& block)
const;
913 virtual ::BlockLegacy& init();
916 virtual ::Brightness getLightEmission(
::Block const&)
const;
919 virtual ::Block
const* tryLegacyUpgrade(ushort)
const;
922 virtual bool dealsContactDamage(
::Actor const& actor,
::Block const& block,
bool isPathFinding)
const;
925 virtual ::Block
const* tryGetInfested(
::Block const&)
const;
928 virtual ::Block
const* tryGetUninfested(
::Block const&)
const;
931 virtual void _addHardCodedBlockComponents(
::Experiments const&);
943 virtual bool shouldTickOnSetBlock()
const;
949 virtual bool isInteractiveBlock()
const;
952 virtual bool allowStateMismatchOnPlacement(
::Block const& clientTarget,
::Block const& serverTarget)
const;
961 virtual int getExtraRenderLayers()
const;
964 virtual ::HashedString
const& getCullingLayer()
const;
967 virtual ::Brightness getLight(
::Block const&)
const;
970 virtual ::Brightness getEmissiveBrightness(
::Block const&)
const;
987 MCAPI
void _executeEvent(
988 ::std::string
const& name,
989 ::std::vector<::std::pair<::std::string const, ::std::string const>>& eventStack,
993 MCAPI
void _forceExecuteTrigger(
995 ::std::vector<::std::pair<::std::string const, ::std::string const>>& eventStack,
999 MCAPI ::BlockLegacy& addBlockProperties(::BlockProperty addedProperties);
1003 MCAPI ::BlockLegacy& addState(
::BlockState const& state);
1005 MCAPI ::BlockLegacy& addState(
::BlockState const& state, uint64 variationCount);
1011 MCAPI
bool anyOf(::gsl::span<::std::reference_wrapper<::HashedString const>
const>
const& blockTypeIdList)
const;
1013 MCAPI ::std::string buildDescriptionName(
::Block const& block)
const;
1015 MCAPI
void createBlockPermutations(uint latestUpdaterVersion);
1017 MCAPI ::WeakPtr<::BlockLegacy> createWeakPtr()
const;
1019 MCAPI
void executeEvent(::std::string
const& name,
::RenderParams& params)
const;
1021 MCAPI
void finalizeBlockComponentStorage();
1025 MCAPI
void forEachBlockPermutation(::std::function<
bool(
::Block const&)> callback)
const;
1027 MCAPI
bool forEachBlockPermutationMutable(::std::function<
bool(
::Block&)> callback);
1029 MCAPI
void forEachBlockStateInstance(::std::function<
bool(
::BlockStateInstance const&)> callback)
const;
1031 MCAPI
short getBlockItemId()
const;
1033 MCAPI ::BlockState
const* getBlockState(
::HashedString const& name)
const;
1035 MCAPI ::std::vector<::CommandName> getCommandNames()
const;
1037 MCAPI
void getDebugText(::std::vector<::std::string>& outputInfo,
::BlockPos const& debugPos)
const;
1039 MCAPI ::ResourceDrops getResourceDrops(
1045 MCAPI
bool hasState(
::BlockState const& stateType)
const;
1049 MCAPI
bool isValidSpawn(
1058 MCAPI ::BlockLegacy& overrideBlockProperties(::BlockProperty newProperties);
1060 MCAPI ::BlockLegacy& setAllowsRunes(
bool interference);
1062 MCAPI ::BlockLegacy& setCanBeExtraBlock(
bool state);
1064 MCAPI ::BlockLegacy& setCanBeOriginalSurface(
bool canBeOriginalSurface);
1066 MCAPI ::BlockLegacy& setCategory(::CreativeItemCategory creativeCategory);
1068 MCAPI ::BlockLegacy& setCreativeGroup(::std::string
const& value);
1070 MCAPI ::BlockLegacy& setExperienceDrop(
::IntRange dropRange);
1072 MCAPI ::BlockLegacy& setFlammable(::FlameOdds flameOdds, ::BurnOdds burnOdds, ::LavaFlammable lavaFlammable);
1074 MCAPI ::BlockLegacy& setFriction(
float f);
1076 MCAPI ::BlockLegacy& setInstrument(::NoteBlockInstrument instrument);
1078 MCAPI ::BlockLegacy& setIsHiddenInCommands(
bool isHiddenInCommands);
1080 MCAPI ::BlockLegacy& setIsValidSpawn(
1084 MCAPI ::BlockLegacy& setLightBlock(
::Brightness brightness);
1086 MCAPI ::BlockLegacy& setLightEmission(
::Brightness brightness);
1088 MCAPI ::BlockLegacy& setMapColor(
::mce::Color const& color);
1090 MCAPI ::BlockLegacy& setMinRequiredBaseGameVersion(
::BaseGameVersion const& baseGameVersion);
1092 MCAPI ::BlockLegacy& setNameId(::std::string
const&
id);
1094 MCAPI ::BlockLegacy& setRequiresCorrectToolForDrops();
1096 MCAPI ::BlockLegacy& setTintMethod(::TintMethod tintMethod);
1098 MCAPI ::BlockLegacy& setTranslucency(
float translucency);
1100 MCAPI
bool shouldTriggerOnStandOn(
::Actor& entity,
::BlockPos const& pos)
const;
1102 MCAPI
void spawnResources(
1110 MCAPI ::Block
const* tryGetStateFromLegacyData(ushort data)
const;
1112 MCAPI
bool updateTallestCollisionShape(
1116 ::AABB const& intersectTestBox,
1119 ::Vec3 const& posToMinimizeDistanceToIfMatchingHeight,
1120 float& currentDistanceSqr
1129 MCAPI static ::BlockLegacy::NameInfo extractBlockNameInfo(::std::string
const& name);
1131 MCAPI static ::BlockLegacy::HorizontalDirectionBits
1134 MCAPI
static uchar getPlacementFacingAll(
::Actor const& entity,
::BlockPos const& pos,
float yRotOffsetDegree);
1138 MCAPI static ::ItemActor*
1145 MCAPI static ::std::string
const& BLOCK_DESCRIPTION_PREFIX();
1147 MCAPI
static float const& SIZE_OFFSET();
1153 MCAPI
void* $ctor(::std::string
const& nameId,
int id,
::Material const& material);
1165 MCAPI ::std::shared_ptr<::BlockActor> $newBlockEntity(
::BlockPos const& pos,
::Block const& block)
const;
1167 MCAPI ::Block
const* $getNextBlockPermutation(
::Block const& currentBlock)
const;
1172 MCAPI ::HitResult $clip(
1178 ::ShapeType shapeType,
1182 MCAPI ::AABB $getCollisionShape(
1189 MCAPI
bool $getCollisionShapeForCamera(
1196 MCAPI
bool $addCollisionShapes(
1200 ::AABB const* intersectTestBox,
1201 ::std::vector<::AABB>& inoutBoxes,
1205 MCAPI
void $addAABBs(
1209 ::AABB const* intersectTestBox,
1210 ::std::vector<::AABB>& inoutBoxes
1216 MCFOLD ::AABB
const& $getVisualShapeInWorld(
1223 MCAPI ::AABB
const& $getVisualShape(
::Block const&,
::AABB&)
const;
1225 MCAPI ::AABB
const& $getUIShape(
::Block const& block,
::AABB& bufferAABB)
const;
1232 MCAPI ::Vec3 $randomlyModifyPosition(
::BlockPos const& pos)
const;
1238 MCFOLD
bool $liquidCanFlowIntoFromDirection(
1239 uchar flowIntoFacing,
1244 MCFOLD
bool $hasVariableLighting()
const;
1246 MCFOLD
bool $isStrippable(
::Block const& srcBlock)
const;
1248 MCFOLD ::Block
const& $getStrippedBlock(
::Block const& srcBlock)
const;
1250 MCAPI
bool $canProvideMultifaceSupport(
::Block const& block, uchar face)
const;
1252 MCAPI
bool $canConnect(
::Block const&, uchar toOther,
::Block const& thisBlock)
const;
1254 MCFOLD
bool $isMovingBlock()
const;
1256 MCFOLD ::CopperBehavior
const* $tryGetCopperBehavior()
const;
1258 MCFOLD
bool $isStemBlock()
const;
1260 MCFOLD
bool $isContainerBlock()
const;
1262 MCFOLD
bool $isCraftingBlock()
const;
1264 MCAPI
bool $isLavaBlocking()
const;
1266 MCFOLD
bool $isFenceBlock()
const;
1268 MCFOLD
bool $isFenceGateBlock()
const;
1270 MCFOLD
bool $isThinFenceBlock()
const;
1272 MCFOLD
bool $isWallBlock()
const;
1274 MCFOLD
bool $isStairBlock()
const;
1276 MCFOLD
bool $isSlabBlock()
const;
1278 MCFOLD
bool $isDoorBlock()
const;
1280 MCFOLD
bool $isRailBlock()
const;
1282 MCFOLD
bool $isButtonBlock()
const;
1284 MCFOLD
bool $isLeverBlock()
const;
1286 MCFOLD
bool $isCandleCakeBlock()
const;
1288 MCFOLD
bool $isMultifaceBlock()
const;
1290 MCFOLD
bool $isSignalSource()
const;
1292 MCFOLD
bool $isConsumerComponent()
const;
1294 MCAPI
bool $canBeOriginalSurface()
const;
1296 MCFOLD
bool $isSilentWhenJumpingOff()
const;
1298 MCFOLD
bool $isValidAuxValue(
int value)
const;
1302 MCFOLD ::Block
const& $sanitizeFillBlock(
::Block const& block)
const;
1308 MCAPI ::std::optional<::HashedString> $getRequiredMedium()
const;
1314 $handlePrecipitation(
::BlockSource& region,
::BlockPos const& pos,
float downfallAmount,
float temperature)
const;
1316 MCAPI
bool $canBeUsedInCommands(
::BaseGameVersion const& baseGameVersion)
const;
1327 MCFOLD
void $onRedstoneUpdate(
::BlockSource& region,
::BlockPos const& pos,
int strength,
bool isFirstTime)
const;
1343 MCFOLD
bool $isBounceBlock()
const;
1345 MCFOLD
bool $isPreservingMediumWhenPlaced(
::BlockLegacy const* medium)
const;
1347 MCFOLD
bool $isFilteredOut(::BlockRenderLayer)
const;
1349 MCFOLD
bool $canRenderSelectionOverlay(::BlockRenderLayer)
const;
1351 MCFOLD
bool $ignoreEntitiesOnPistonMove(
::Block const& block)
const;
1356 MCFOLD
bool $mayConsumeFertilizer(
::BlockSource& region)
const;
1360 MCFOLD
bool $mayPick()
const;
1370 MCFOLD
bool $tryToPlace(
1384 MCFOLD
bool $getIgnoresDestroyPermissions(
::Actor& entity,
::BlockPos const& pos)
const;
1397 MCAPI ::Block
const& $getPlacementBlock(
1413 MCAPI
bool $canBeBuiltOver(
1424 MCAPI
void $executeEvent(
1428 ::std::string
const& eventName,
1434 MCAPI
bool $shouldStopFalling(
::Actor& entity)
const;
1436 MCFOLD
bool $pushesUpFallingBlocks()
const;
1438 MCFOLD
bool $canHaveExtraData()
const;
1440 MCFOLD
bool $hasComparatorSignal()
const;
1447 MCFOLD
bool $canInstatick()
const;
1453 MCFOLD
bool $causesFreezeEffect()
const;
1455 MCFOLD ::std::string $buildDescriptionId(
::Block const&)
const;
1457 MCFOLD
bool $isAuxValueRelevantForPicking()
const;
1463 MCAPI
float $getShadeBrightness(
::Block const& block)
const;
1467 MCAPI
int $getVariant(
::Block const& block)
const;
1469 MCFOLD
bool $canSpawnOn(
::Actor*)
const;
1471 MCFOLD ::Block
const& $getRenderBlock()
const;
1473 MCFOLD uchar $getMappedFace(uchar face,
::Block const& block)
const;
1475 MCFOLD ::Flip $getFaceFlip(uchar face,
::Block const& block)
const;
1481 MCFOLD ::BlockLegacy& $init();
1483 MCAPI ::Brightness $getLightEmission(
::Block const&)
const;
1485 MCFOLD ::Block
const* $tryLegacyUpgrade(ushort)
const;
1487 MCFOLD
bool $dealsContactDamage(
::Actor const& actor,
::Block const& block,
bool isPathFinding)
const;
1489 MCFOLD ::Block
const* $tryGetInfested(
::Block const&)
const;
1491 MCFOLD ::Block
const* $tryGetUninfested(
::Block const&)
const;
1493 MCFOLD
void $_addHardCodedBlockComponents(
::Experiments const&);
1501 MCFOLD
bool $shouldTickOnSetBlock()
const;
1505 MCFOLD
bool $isInteractiveBlock()
const;
1507 MCFOLD
bool $allowStateMismatchOnPlacement(
::Block const& clientTarget,
::Block const& serverTarget)
const;
1513 MCFOLD
int $getExtraRenderLayers()
const;
1515 MCAPI ::HashedString
const& $getCullingLayer()
const;
1517 MCAPI ::Brightness $getLight(
::Block const&)
const;
1519 MCFOLD ::Brightness $getEmissiveBrightness(
::Block const&)
const;