UNPKG

@tendrock/lib

Version:

A lib under the Tendrock system for Minecraft Bedrock Script API

42 lines (41 loc) 1.69 kB
import { Block } from "@minecraft/server"; import { MinecraftBlockTags } from "@tendrock/vanilla-data"; import { TendrockBlockTags } from "../../ref"; import { ItemUtils } from "../item"; import { StateUtils } from "../StateUtils"; import { DirectionUtils } from "../DirectionUtils"; import { LoopOperator } from "../../enum"; export class BlockUtils { static getPermutation(block) { if (block instanceof Block) { return block.permutation; } return block; } static isLog(block) { const permutation = this.getPermutation(block); if (permutation.hasTag(MinecraftBlockTags.Log_Experimental) || permutation.hasTag(TendrockBlockTags.Logs)) return true; const itemStack = permutation.getItemStack(); if (!itemStack) return false; return ItemUtils.isLog(itemStack); } static setState(block, stateName, state) { const permutation = StateUtils.withState(block.permutation, stateName, state); block.setPermutation(permutation); } static neighborBlock(block, direction) { return block[DirectionUtils.getDirectionMethodName(direction)](); } static forEachNeighborBlock(block, callback) { for (const direction of DirectionUtils.AllDirections) { const neighborBlock = block[DirectionUtils.getDirectionMethodName(direction)](); if (!(neighborBlock === null || neighborBlock === void 0 ? void 0 : neighborBlock.isValid)) continue; const loopOperator = callback(neighborBlock, direction); if (loopOperator === LoopOperator.Break) break; } } }