// Create simple custom item
ItemStack customItem = new ItemStack(Material.DIAMOND, 1);
ItemMeta meta = customItem.getMeta();
ItemMetaBuilder builder = meta.toBuilder();

builder.displayName(Component.text("Custom Diamond").color(NamedTextColor.AQUA));
builder.lore(Arrays.asList(
    Component.text("This is a custom item").color(NamedTextColor.GRAY),
    Component.text("With custom properties").color(NamedTextColor.GRAY)
));
builder.enchantment(Enchantment.SHARPNESS, 5);

ItemStack result = builder.build().toItemStack();

// Give item to player
Player player = // ... get player
player.getInventory().addItemStack(result);

// Create custom weapon with NBT data
ItemStack customSword = new ItemStack(Material.DIAMOND_SWORD, 1);
ItemMeta swordMeta = customSword.getMeta();
ItemMetaBuilder swordBuilder = swordMeta.toBuilder();

swordBuilder.displayName(Component.text("Excalibur").color(NamedTextColor.GOLD));
swordBuilder.lore(Arrays.asList(
    Component.text("Damage: 15").color(NamedTextColor.RED),
    Component.text("Legendary Weapon").color(NamedTextColor.YELLOW)
));

if (customSword instanceof TagWritable writable) {
    writable.setTag(Tag.Integer("custom_damage"), 15);
}

ItemStack excalibur = swordBuilder.build().toItemStack();

// Handle custom item usage
GlobalEventHandler eventHandler = MinecraftServer.getGlobalEventHandler();
eventHandler.addListener(PlayerUseItemEvent.class, event -> {
    ItemStack item = event.getItemStack();
    Player player = event.getPlayer();
    
    if (item.getMaterial() == Material.GOLDEN_APPLE) {
        // Custom golden apple behavior
        player.setHealth(Math.min(player.getHealth() + 10, player.getMaxHealth()));
        player.sendMessage("You consumed a special golden apple!");
    }
});

// Create custom food item
ItemStack customFood = new ItemStack(Material.COOKED_BEEF, 1);
ItemMeta foodMeta = customFood.getMeta();
ItemMetaBuilder foodBuilder = foodMeta.toBuilder();

foodBuilder.displayName(Component.text("Super Steak").color(NamedTextColor.RED));
foodBuilder.lore(Arrays.asList(
    Component.text("Restores 10 hunger").color(NamedTextColor.GREEN)
));

ItemStack superSteak = foodBuilder.build().toItemStack();