/snippet
Java Minecraft 1.20+ Fabric API

Custom Item Snippet.

A complete custom item setup for Fabric mods. Includes the item class with tooltips and right-click action, registration code, and language file entry. Replace yourmod with your mod ID.

// how to use

Create the item class, register in ModItems, call registerModItems() from your mod initializer, and add the translation key to en_us.json.

// requirements

Fabric API, Minecraft 1.20+, Java 17+. Includes tooltip and use action examples.

package com.yourmod.item;

import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.tooltip.TooltipType;
import net.minecraft.text.Text;
import net.minecraft.util.Hand;
import net.minecraft.util.TypedActionResult;
import net.minecraft.world.World;

import java.util.List;

public class ExampleItem extends Item {

    public ExampleItem(Settings settings) {
        super(settings);
    }

    // Right-click action
    @Override
    public TypedActionResult<ItemStack> use(
            World world, PlayerEntity player, Hand hand) {

        ItemStack stack = player.getStackInHand(hand);

        if (!world.isClient) {
            // Your custom logic here
            player.sendMessage(
                Text.literal("You used an Example Item!"), true
            );
            // Consume one item if not in creative
            if (!player.isCreative()) {
                stack.decrement(1);
            }
        }

        return TypedActionResult.success(stack);
    }

    // Custom tooltip
    @Override
    public void appendTooltip(
            ItemStack stack, TooltipContext context,
            List<Text> tooltip, TooltipType type) {

        tooltip.add(Text.literal("This is an example item.")
            .formatted(net.minecraft.util.Formatting.GRAY));
        tooltip.add(Text.literal("You can add custom logic here.")
            .formatted(net.minecraft.util.Formatting.DARK_PURPLE));
    }
}
package com.yourmod.item;

import com.yourmod.YourMod;
import net.minecraft.item.Item;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;

public class ModItems {

    public static final Item EXAMPLE_ITEM = register(
        "example_item",
        new ExampleItem(
            new Item.Settings().maxCount(16)
        )
    );

    private static Item register(String name, Item item) {
        return Registry.register(
            Registries.ITEM,
            Identifier.of(YourMod.MOD_ID, name),
            item
        );
    }

    // Call this from your mod initializer
    public static void registerModItems() {
        YourMod.LOGGER.info("Registering mod items for " + YourMod.MOD_ID);
    }
}
{
  "item.yourmod.example_item": "Example Item",
  "itemGroup.yourmod.main_tab": "Your Mod"
}
custom block custom recipe