@tendrock/lib
Version:
A lib under the Tendrock system for Minecraft Bedrock Script API
42 lines (41 loc) • 1.69 kB
JavaScript
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;
}
}
}