类 ItemStack实验性

Defines a collection of items.

import { ItemStack, DimensionLocation } from "@minecraft/server";
import { MinecraftItemTypes } from "@minecraft/vanilla-data";

function itemStacks(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {
const oneItemLoc = { x: targetLocation.x + targetLocation.y + 3, y: 2, z: targetLocation.z + 1 };
const fiveItemsLoc = { x: targetLocation.x + 1, y: targetLocation.y + 2, z: targetLocation.z + 1 };
const diamondPickaxeLoc = { x: targetLocation.x + 2, y: targetLocation.y + 2, z: targetLocation.z + 4 };

const oneEmerald = new ItemStack(MinecraftItemTypes.Emerald, 1);
const onePickaxe = new ItemStack(MinecraftItemTypes.DiamondPickaxe, 1);
const fiveEmeralds = new ItemStack(MinecraftItemTypes.Emerald, 5);

log(`Spawning an emerald at (${oneItemLoc.x}, ${oneItemLoc.y}, ${oneItemLoc.z})`);
targetLocation.dimension.spawnItem(oneEmerald, oneItemLoc);

log(`Spawning five emeralds at (${fiveItemsLoc.x}, ${fiveItemsLoc.y}, ${fiveItemsLoc.z})`);
targetLocation.dimension.spawnItem(fiveEmeralds, fiveItemsLoc);

log(`Spawning a diamond pickaxe at (${diamondPickaxeLoc.x}, ${diamondPickaxeLoc.y}, ${diamondPickaxeLoc.z})`);
targetLocation.dimension.spawnItem(onePickaxe, diamondPickaxeLoc);
}
import { world, ItemStack, EntityEquippableComponent, EquipmentSlot, EntityComponentTypes, DimensionLocation } from "@minecraft/server";
import { MinecraftItemTypes } from "@minecraft/vanilla-data";

function givePlayerEquipment(
targetLocation: DimensionLocation
) {
const players = world.getAllPlayers();

const armorStandLoc = { x: targetLocation.x, y: targetLocation.y, z: targetLocation.z + 4 };
const armorStand = players[0].dimension.spawnEntity(MinecraftItemTypes.ArmorStand, armorStandLoc);

const equipmentCompPlayer = players[0].getComponent(EntityComponentTypes.Equippable) as EntityEquippableComponent;
if (equipmentCompPlayer) {
equipmentCompPlayer.setEquipment(EquipmentSlot.Head, new ItemStack(MinecraftItemTypes.GoldenHelmet));
equipmentCompPlayer.setEquipment(EquipmentSlot.Chest, new ItemStack(MinecraftItemTypes.IronChestplate));
equipmentCompPlayer.setEquipment(EquipmentSlot.Legs, new ItemStack(MinecraftItemTypes.DiamondLeggings));
equipmentCompPlayer.setEquipment(EquipmentSlot.Feet, new ItemStack(MinecraftItemTypes.NetheriteBoots));
equipmentCompPlayer.setEquipment(EquipmentSlot.Mainhand, new ItemStack(MinecraftItemTypes.WoodenSword));
equipmentCompPlayer.setEquipment(EquipmentSlot.Offhand, new ItemStack(MinecraftItemTypes.Shield));
}

const equipmentCompArmorStand = armorStand.getComponent(EntityComponentTypes.Equippable) as EntityEquippableComponent;
if (equipmentCompArmorStand) {
equipmentCompArmorStand.setEquipment(EquipmentSlot.Head, new ItemStack(MinecraftItemTypes.GoldenHelmet));
equipmentCompArmorStand.setEquipment(EquipmentSlot.Chest, new ItemStack(MinecraftItemTypes.IronChestplate));
equipmentCompArmorStand.setEquipment(EquipmentSlot.Legs, new ItemStack(MinecraftItemTypes.DiamondLeggings));
equipmentCompArmorStand.setEquipment(EquipmentSlot.Feet, new ItemStack(MinecraftItemTypes.NetheriteBoots));
equipmentCompArmorStand.setEquipment(EquipmentSlot.Mainhand, new ItemStack(MinecraftItemTypes.WoodenSword));
equipmentCompArmorStand.setEquipment(EquipmentSlot.Offhand, new ItemStack(MinecraftItemTypes.Shield));
}
}
import { ItemStack, DimensionLocation } from "@minecraft/server";
import { MinecraftItemTypes } from "@minecraft/vanilla-data";

function spawnFeatherItem(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {
const featherItem = new ItemStack(MinecraftItemTypes.Feather, 1);

targetLocation.dimension.spawnItem(featherItem, targetLocation);
log(`New feather created at ${targetLocation.x}, ${targetLocation.y}, ${targetLocation.z}!`);
}

构造函数

  • 实验性

    参数

    • itemType: string | ItemType

      Type of item to create. See the @minecraft/vanilla-data.MinecraftItemTypes enumeration for a list of standard item types in Minecraft experiences.

    • 可选amount: number

      Number of items to place in the stack, between 1-255. The provided value will be clamped to the item's maximum stack size. Note that certain items can only have one item in the stack.

    返回 ItemStack

    Creates a new instance of a stack of items for use in the world.

    Throws if itemType is invalid, or if amount is outside the range of 1-255.

属性

amount: number

Number of the items in the stack. Valid values range between 1-255. The provided value will be clamped to the item's maximum stack size.

无法在只读模式下修改此属性,详见 WorldBeforeEvents

Throws if the value is outside the range of 1-255.

compostingChance: number

This is the percent chance of the item composting in the composter block and generating a compost layer.

Throws if value outside the range [1 - 100]

Error

isStackable: boolean

Returns whether the item is stackable. An item is considered stackable if the item's maximum stack size is greater than 1 and the item does not contain any custom data or properties.

keepOnDeath: boolean

Gets or sets whether the item is kept on death.

无法在只读模式下修改此属性,详见 WorldBeforeEvents

lockMode: ItemLockMode

Gets or sets the item's lock mode. The default value is ItemLockMode.none.

无法在只读模式下修改此属性,详见 WorldBeforeEvents

maxAmount: number

The maximum stack size. This value varies depending on the type of item. For example, torches have a maximum stack size of 64, while eggs have a maximum stack size of 16.

nameTag?: string

Given name of this stack of items. The name tag is displayed when hovering over the item. Setting the name tag to an empty string or undefined will remove the name tag.

无法在只读模式下修改此属性,详见 WorldBeforeEvents

Throws if the length exceeds 255 characters.

type: ItemType

The type of the item.

typeId: string

Identifier of the type of items for the stack. If a namespace is not specified, 'minecraft:' is assumed. Examples include 'wheat' or 'apple'.

方法

  • 实验性

    返回 void

    Clears all dynamic properties that have been set on this item stack.

  • 实验性

    返回 string[]

    Get the list of block types this item can break in Adventure mode.

    无法在只读模式下调用此函数,详见 WorldBeforeEvents

  • 实验性

    返回 string[]

    Get the list of block types this item can be placed on in Adventure mode.

    无法在只读模式下调用此函数,详见 WorldBeforeEvents

  • 实验性

    类型参数

    参数

    • componentId: T

      The identifier of the component (e.g., 'minecraft:food'). If no namespace prefix is specified, 'minecraft:' is assumed. Available component IDs can be found as part of the ItemComponentTypes enum.

    返回 ItemComponentTypeMap[T]

    Returns the component if it exists on the item stack, otherwise undefined.

    Gets a component (that represents additional capabilities) for an item stack.

    import { world, ItemStack, EntityInventoryComponent, EntityComponentTypes, ItemComponentTypes, ItemDurabilityComponent, DimensionLocation } from "@minecraft/server";
    import { MinecraftItemTypes } from "@minecraft/vanilla-data";

    function giveHurtDiamondSword(
    targetLocation: DimensionLocation
    ) {
    const hurtDiamondSword = new ItemStack(MinecraftItemTypes.DiamondSword);

    const durabilityComponent = hurtDiamondSword.getComponent(ItemComponentTypes.Durability) as ItemDurabilityComponent;

    if (durabilityComponent !== undefined) {
    durabilityComponent.damage = durabilityComponent.maxDurability / 2;
    }

    for (const player of world.getAllPlayers()) {
    const inventory = player.getComponent(EntityComponentTypes.Inventory) as EntityInventoryComponent;
    if (inventory && inventory.container) {
    inventory.container.addItem(hurtDiamondSword);
    }
    }
    }
  • 实验性

    参数

    • identifier: string

      The property identifier.

    返回
        | string
        | number
        | boolean
        | Vector3

    Returns the value for the property, or undefined if the property has not been set.

    Returns a property value.

  • 实验性

    返回 string[]

    A string array of the dynamic properties set on this entity.

    Returns the available set of dynamic property identifiers that have been used on this entity.

  • 实验性

    返回 number

    Returns the total size, in bytes, of all the dynamic properties that are currently stored for this entity. This includes the size of both the key and the value. This can be useful for diagnosing performance warning signs - if, for example, an entity has many megabytes of associated dynamic properties, it may be slow to load on various devices.

  • 实验性

    返回 string[]

    An array of lore lines. If the item does not have lore, returns an empty array.

    Returns the lore value - a secondary display string - for an ItemStack.

  • 实验性

    返回 string[]

    Returns a set of tags associated with this item stack.

  • 实验性

    参数

    • componentId: string

      The identifier of the component (e.g., 'minecraft:food') to retrieve. If no namespace prefix is specified, 'minecraft:' is assumed.

    返回 boolean

    Returns true if the specified component is present on this item stack.

  • 实验性

    参数

    • tag: string

      Tag to search for.

    返回 boolean

    True if the Item Stack has the tag associated with it, else false.

    Checks whether this item stack has a particular tag associated with it.

  • 实验性

    参数

    • itemStack: ItemStack

      ItemStack to check stacking compatibility with.

    返回 boolean

    True if the Item Stack is stackable with the itemStack passed in. False for non-stackable items.

    Returns whether this item stack can be stacked with the given itemStack. This is determined by comparing the item type and any custom data and properties associated with the item stacks. The amount of each item stack is not taken into consideration, but for non-stackable items this will always return false.

  • 实验性

    参数

    • itemName: string

      Identifier of the item.

    • 可选states: Record<string, string | number | boolean>

      Applicable only for blocks. An optional set of states to compare against. If states is not specified, matches checks against the set of types more broadly.

    返回 boolean

    Returns a boolean whether the specified item matches.

    Version safe way of checking if an item matches.

  • 实验性

    参数

    • 可选blockIdentifiers: string[]

      String list of block types that the item can destroy.

    返回 void

    The list of block types this item can break in Adventure mode. The block names are displayed in the item's tooltip. Setting the value to undefined will clear the list.

    无法在只读模式下调用此函数,详见 WorldBeforeEvents

    Throws if any of the provided block identifiers are invalid.

    import { world, ItemStack, EntityInventoryComponent, DimensionLocation } from "@minecraft/server";
    import { MinecraftItemTypes } from "@minecraft/vanilla-data";

    function giveDestroyRestrictedPickaxe(
    targetLocation: DimensionLocation
    ) {
    for (const player of world.getAllPlayers()) {
    const specialPickaxe = new ItemStack(MinecraftItemTypes.DiamondPickaxe);
    specialPickaxe.setCanDestroy([MinecraftItemTypes.Cobblestone, MinecraftItemTypes.Obsidian]);

    const inventory = player.getComponent("inventory") as EntityInventoryComponent;
    if (inventory === undefined || inventory.container === undefined) {
    return;
    }

    inventory.container.addItem(specialPickaxe);
    }
    }
  • 实验性

    参数

    • 可选blockIdentifiers: string[]

      String list of block types that the item can be placed on.

    返回 void

    The list of block types this item can be placed on in Adventure mode. This is only applicable to block items. The block names are displayed in the item's tooltip. Setting the value to undefined will clear the list.

    无法在只读模式下调用此函数,详见 WorldBeforeEvents

    Throws if any of the provided block identifiers are invalid.

    import { world, ItemStack, EntityInventoryComponent, EntityComponentTypes, DimensionLocation } from "@minecraft/server";
    import { MinecraftItemTypes } from "@minecraft/vanilla-data";

    function givePlaceRestrictedGoldBlock(
    targetLocation: DimensionLocation
    ) {
    for (const player of world.getAllPlayers()) {
    const specialGoldBlock = new ItemStack(MinecraftItemTypes.GoldBlock);
    specialGoldBlock.setCanPlaceOn([MinecraftItemTypes.GrassBlock, MinecraftItemTypes.Dirt]);

    const inventory = player.getComponent(EntityComponentTypes.Inventory) as EntityInventoryComponent;
    if (inventory === undefined || inventory.container === undefined) {
    return;
    }

    inventory.container.addItem(specialGoldBlock);
    }
    }
  • 实验性

    参数

    • identifier: string

      The property identifier.

    • 可选value:
          | string
          | number
          | boolean
          | Vector3

      Data value of the property to set.

    返回 void

    Sets a specified property to a value. Note: This function only works with non-stackable items.

    Throws if the item stack is stackable.

  • 实验性

    参数

    • 可选loreList: string[]

      List of lore lines. Each element in the list represents a new line. The maximum lore line count is 20. The maximum lore line length is 50 characters.

    返回 void

    Sets the lore value - a secondary display string - for an ItemStack. The lore list is cleared if set to an empty string or undefined.

    无法在只读模式下调用此函数,详见 WorldBeforeEvents

    This function can throw errors.

    import { EntityComponentTypes, ItemStack, Player } from '@minecraft/server';
    import { MinecraftItemTypes } from '@minecraft/vanilla-data';

    function giveAwesomeSword(player: Player) {
    const diamondAwesomeSword = new ItemStack(MinecraftItemTypes.DiamondSword, 1);
    diamondAwesomeSword.setLore([
    '§c§lDiamond Sword of Awesome§r',
    '+10 coolness', '§p+4 shiny§r'
    ]);

    // hover over/select the item in your inventory to see the lore.
    const inventory = player.getComponent(EntityComponentTypes.Inventory);
    if (inventory === undefined || inventory.container === undefined) {
    return;
    }

    inventory.container.setItem(0, diamondAwesomeSword);
    }