Minestom Custom Items
Create custom items with custom behavior, textures, and properties
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
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(); }}
// 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
test wow test
Please login to leave a comment.