Skip to content
Mariusz Matyszczak edited this page Mar 5, 2023 · 1 revision

Items

With its simple and intuitive interface, the Item class allows you to easily specify the properties of your item, including its name, lore, durability, and enchantments. Whether you're creating a new weapon, tool, or decorative item, the Item class provides a solid foundation that you can build upon to create your perfect item.

Examples

Basic usage of the Item class.

// one liner
Item pumpkinPie = Item.of(Material.PUMPKIN_PIE, 1, "Pumpkin Pie");

// builder
Item builderPie = Item.of(Material.PUMPKIN_PIE)
    .amount(1)
    .name("Pumpkin Pie");

Of course, everything supports colors, including HEX support.

// glowing diamond with colorful descriptions
Item diamond = Item.of(Material.DIAMOND)
    .amount(1) // not necessary, by default it's always 1
    .name("&bGlowing Diamond")
    .enchant(Enchantment.DURABILITY, 1) // for the glow
    .hideItemFlags(true) // to hide the enchantment
    .lore(List.of(
        "{#00bbff}This is a glowing diamond!",
        "&#00bbffIt's very shiny!",
        "&b&lIt's very expensive!")
    );

ItemMeta

By default Item aims to eliminate the usage of ItemMeta, however, if you'd like to edit it you can do it easily.

// the item meta way
Item item = Item.of(Material.DIAMOND, 1, "&bGlowing Diamond")
    .meta(meta -> {
        meta.addEnchant(Enchantment.DURABILITY, 1, true);
        meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
    });

Tags

You may attach tags to your item.

// item with tags
Item frog = Item.of(Material.FISHING_ROD)
    .name("&aFrog Rod")
    .lore(List.of("&aThis is a frog rod!"))
    .setTag("frog", "hello", DataType.STRING); // attaching some string value

// check if the item has a tag
if (frog.hasTag("frog", DataType.STRING)) {
    // yep it's a frog for sure
    Optional<String> optional = frog.getTag("frog", DataType.STRING);
    String value = optional.get(); // "hello"
}

// get the optional value
Optional<String> optional = frog.getTag("frog", DataType.STRING);
optional.ifPresent(value -> {
    // do something with the value
});

Bukkit ItemStack

The Item class natively wraps an ItemStack instance so you can grab it anytime.

// golden apple
Item goldenApple = Item.of(Material.GOLDEN_APPLE, 1, "&6Golden Apple");
ItemStack itemStack = goldenApple.get(); // get the item stack
Clone this wiki locally