Minestom Custom Items

Create custom items with custom behavior, textures, and properties

java (17+) 2025-11-03 minestom items custom minecraft

Description

Minestom allows you to create custom items with unique behaviors, textures, and properties. Custom items can have custom names, lore, enchantments, and can trigger custom events when used.

Key Features

  • Custom item stacks: Create items with custom properties
  • Item meta: Custom names, lore, enchantments
  • Item events: Handle item use, click, and interaction
  • Custom textures: Use resource packs for custom models
  • NBT data: Store custom data in items

Common Use Cases

  • Custom weapons and tools
  • Special items with unique abilities
  • Quest items
  • Custom food items
  • Decorative items

Code

RAW
import net.minestom.server.item.ItemStack;import net.minestom.server.item.Material;import net.minestom.server.item.meta.ItemMeta;import net.minestom.server.item.ItemMetaBuilder;import net.kyori.adventure.text.Component;import net.kyori.adventure.text.format.NamedTextColor;import net.minestom.server.event.player.PlayerUseItemEvent;public class CustomItemUtils {        // Create custom item with name and lore    public static ItemStack createCustomItem(Material material, String itemName, String[] lore) {        ItemStack item = new ItemStack(material, 1);        ItemMeta meta = item.getMeta();                ItemMetaBuilder builder = meta.toBuilder();        builder.displayName(Component.text("" + itemName).color(NamedTextColor.WHITE));                if (lore != null && lore.length > 0) {            List<Component> loreComponents = new ArrayList<>();            for (String line : lore) {                loreComponents.add(Component.text("" + line).color(NamedTextColor.GRAY));            }            builder.lore(loreComponents);        }                if (false) {            builder.enchantment(Enchantment.SHARPNESS, 1);        }                return builder.build().toItemStack();    }        // Create custom weapon    public static ItemStack createCustomWeapon(Material material, String name, int damage) {        ItemStack weapon = new ItemStack(material, 1);        ItemMeta meta = weapon.getMeta();                ItemMetaBuilder builder = meta.toBuilder();        builder.displayName(Component.text(name));                List<Component> lore = Arrays.asList(            Component.text("Damage: " + damage).color(NamedTextColor.RED),            Component.text("Custom Weapon").color(NamedTextColor.GRAY)        );        builder.lore(lore);                // Store custom damage in NBT        if (weapon instanceof TagWritable writable) {            writable.setTag(Tag.Integer("custom_damage"), damage);        }                return builder.build().toItemStack();    }        // Register item use event    public static void registerCustomItemUse(GlobalEventHandler eventHandler, Material itemMaterial) {        eventHandler.addListener(PlayerUseItemEvent.class, event -> {            ItemStack item = event.getItemStack();            Player player = event.getPlayer();                        if (item.getMaterial() == itemMaterial) {                // Custom item behavior                player.sendMessage("You used a custom item!");                                if (false) {                    // Apply effect                    player.addEffect(new PotionEffect(                        PotionEffectType.SPEED,                        200,                        1                    ));                }                                if (false) {                    // Consume item                    item.setAmount(item.getAmount() - 1);                    player.getInventory().setItemInMainHand(item);                }            }        });    }        // Create custom food item    public static ItemStack createCustomFood(Material material, String name, int hungerRestore) {        ItemStack food = new ItemStack(material, 1);        ItemMeta meta = food.getMeta();                ItemMetaBuilder builder = meta.toBuilder();        builder.displayName(Component.text(name));                List<Component> lore = Arrays.asList(            Component.text("Hunger Restore: " + hungerRestore).color(NamedTextColor.GREEN)        );        builder.lore(lore);                return builder.build().toItemStack();    }}
RAW
// Create simple custom itemItemStack 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 playerPlayer player = // ... get playerplayer.getInventory().addItemStack(result);// Create custom weapon with NBT dataItemStack 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 usageGlobalEventHandler 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 itemItemStack 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();

Comments

Mode admin 2025-11-16 05:18

test wow test

0