Contains the combination of type BlockType and properties (also sometimes called block state) which describe a block (but does not belong to a specific Block).

import { world, BlockPermutation, BlockSignComponent, BlockComponentTypes, DimensionLocation } from "@minecraft/server";
import { MinecraftBlockTypes } from "@minecraft/vanilla-data";

function addTranslatedSign(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {
const players = world.getPlayers();

const dim = players[0].dimension;

const signBlock = dim.getBlock(targetLocation);

if (!signBlock) {
log("Could not find a block at specified location.");
return -1;
}
const signPerm = BlockPermutation.resolve(MinecraftBlockTypes.StandingSign, { ground_sign_direction: 8 });

signBlock.setPermutation(signPerm);

const signComponent = signBlock.getComponent(BlockComponentTypes.Sign) as BlockSignComponent;

signComponent?.setText({ translate: "item.skull.player.name", with: [players[0].name] });
}

Properties

type: BlockType

The BlockType that the permutation has.

Methods

  • Beta

    Parameters

    • liquidType: Water

      The type of liquid this function should be called for.

    Returns boolean

    Whether this block is removed when touched by liquid.

    Returns whether this block is removed when touched by liquid.

    This function can throw errors.

    Error

  • Beta

    Parameters

    • liquidType: Water

      The type of liquid this function should be called for.

    Returns boolean

    Whether this block can have a liquid placed over it.

    Returns whether this block can have a liquid placed over it, i.e. be waterlogged.

    This function can throw errors.

    Error

  • Returns Record<string, string | number | boolean>

    Returns the list of all of the block states that the permutation has.

    Returns all available block states associated with this block.

  • Parameters

    • Optionalamount: number

      Number of instances of this block to place in the prototype item stack.

    Returns ItemStack

    Retrieves a prototype item stack based on this block permutation that can be used with item Container/ContainerSlot APIs.

  • Returns string[]

    Creates a copy of the permutation.

  • Parameters

    • tag: string

    Returns boolean

    Returns true if the permutation has the tag, else false.

    Checks to see if the permutation has a specific tag.

    import { DimensionLocation } from "@minecraft/server";

    function checkBlockTags(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {
    // Fetch the block
    const block = targetLocation.dimension.getBlock(targetLocation);

    // check that the block is loaded
    if (block) {
    log(`Block is dirt: ${block.hasTag("dirt")}`);
    log(`Block is wood: ${block.hasTag("wood")}`);
    log(`Block is stone: ${block.hasTag("stone")}`);
    }
    }
  • Beta

    Parameters

    • liquidType: Water

      The type of liquid this function should be called for.

    Returns boolean

    Whether this block stops liquid from flowing.

    Returns whether this block stops liquid from flowing.

    This function can throw errors.

    Error

  • Beta

    Parameters

    • liquidType: Water

      The type of liquid this function should be called for.

    Returns boolean

    Whether this block is removed and spawns its item when touched by liquid.

    Returns whether this block is removed and spawns its item when touched by liquid.

    This function can throw errors.

    Error

  • Type Parameters

    Parameters

    • blockName: T

      An optional set of states to compare against.

    • Optionalstates: BlockStateArg<T>

    Returns boolean

    Returns a boolean whether a specified permutation matches this permutation. If states is not specified, matches checks against the set of types more broadly.

    // Script by WavePlayz

    import { world } from "@minecraft/server";

    // Function to check if a given block is red wool
    function isRedWool(block) {
    // Define the type id of block we are checking for
    let typeId = "wool";

    // Define the block state we are looking for
    // In this case, we want the color to be red
    let states = { color: "red" };

    // Check if the block matches the specified type and states
    // The 'matches' method returns true if the block is of the specified type and has the specified states
    return block.matches(typeId, states);
    }
  • Type Parameters

    Parameters

    • blockName: T

      Identifier of the block to check.

    • Optionalstates: BlockStateArg<T>

    Returns BlockPermutation

    Given a type identifier and an optional set of properties, will return a BlockPermutation object that is usable in other block APIs (e.g., block.setPermutation)

    This function can throw errors.

    import { BlockPermutation, DimensionLocation } from "@minecraft/server";
    import { Vector3Utils } from "@minecraft/math";
    import { MinecraftBlockTypes } from "@minecraft/vanilla-data";

    function addBlockColorCube(targetLocation: DimensionLocation) {
    const allWoolBlocks: string[] = [
    MinecraftBlockTypes.WhiteWool,
    MinecraftBlockTypes.OrangeWool,
    MinecraftBlockTypes.MagentaWool,
    MinecraftBlockTypes.LightBlueWool,
    MinecraftBlockTypes.YellowWool,
    MinecraftBlockTypes.LimeWool,
    MinecraftBlockTypes.PinkWool,
    MinecraftBlockTypes.GrayWool,
    MinecraftBlockTypes.LightGrayWool,
    MinecraftBlockTypes.CyanWool,
    MinecraftBlockTypes.PurpleWool,
    MinecraftBlockTypes.BlueWool,
    MinecraftBlockTypes.BrownWool,
    MinecraftBlockTypes.GreenWool,
    MinecraftBlockTypes.RedWool,
    MinecraftBlockTypes.BlackWool,
    ];

    const cubeDim = 7;

    let colorIndex = 0;

    for (let x = 0; x <= cubeDim; x++) {
    for (let y = 0; y <= cubeDim; y++) {
    for (let z = 0; z <= cubeDim; z++) {
    colorIndex++;
    targetLocation.dimension
    .getBlock(Vector3Utils.add(targetLocation, { x, y, z }))
    ?.setPermutation(BlockPermutation.resolve(allWoolBlocks[colorIndex % allWoolBlocks.length]));
    }
    }
    }
    }