Skip to content

Item Providers and External Integrations

CraftingEngine includes a universal item matching and serialization SPI (ItemProvider) that allows recipes, inputs, tools, and outputs to reference custom items seamlessly across modern Minecraft plugins.


1. Supported Namespaces & Providers

You can reference items using namespaced string identifiers:

ProviderSyntax PrefixExample IdentifierDescription
Vanillaminecraft:minecraft:diamond_swordStandard Minecraft materials and items.
Item Tags (Vanilla & Convention)#minecraft: / tag:#minecraft:planks, tag:c:iron_ingotsMatches any material tagged in Bukkit’s Tag<Material> registry.
CustomModelDatacmd:cmd:iron_sword:10042Vanilla material with specific CustomModelData tag.
ItemsAdderia: / itemsadder:ia:ruby_swordFull integration with ItemsAdder custom items.
Oraxenoraxen:oraxen:titanium_ingotFull integration with Oraxen custom items.
MMOItemsmmoitems:mmoitems:SWORD:DARK_REAPERFormat: mmoitems:<TYPE>:<ID>.
ExecutableItemsei:ei:god_pickaxeExecutableItems custom weapons and items.
ExecutableBlockseb:eb:mana_crystalExecutableBlocks custom block items.
MythicMobsmythicmobs: / mm:mm:SkeletonKingCrownMythicMobs 5.x and 4.x drop items.

2. In-Game Inspection Tool

To verify the exact namespaced identifier of any item in your hand, execute:

Ventana de terminal
/cfe item inspect

CraftingEngine inspects the item’s NBT, PersistentDataContainer, and active external item provider hooks, printing the exact copy-paste string to use in your inputs: or outputs: YAML blocks.


3. Strict vs Loose Matching

In recipe definitions, you can control how strictly ingredients are matched:

inputs:
- resource: "minecraft:diamond_sword"
match_mode: "STRICT_NBT" # STRICT_NBT | IGNORE_DURABILITY | MATERIAL_ONLY
  • STRICT_NBT: Enforces identical NBT, custom lore, and enchantments.
  • IGNORE_DURABILITY: Accepts damaged tools or weapons of the same material.
  • MATERIAL_ONLY: Matches purely on Bukkit Material type, ignoring custom names and lore.

4. PersistentDataContainer (PDC) & Metadata Snapshotting (v2.9.0+)

CraftingEngine includes a deep metadata snapshotting pipeline (ItemMetadataSnapshotter). Whenever an ingredient is consumed (mode: CONSUME) or transactionally reserved (mode: RESERVE), the engine inspects the physical item:

  • Captured PDC Primitive Types: INTEGER, DOUBLE, FLOAT, LONG, BYTE, SHORT, and STRING.
  • Captured Attributes: custom_model_data, item display_name, and durability.
  • Runtime Variable Storage: Captured metadata is stored in domain variables under input_prop:<resource_id>:<key> and input_prop:*:<key>.

These snapshot properties feed directly into the Ingredient Property Inheritance Pipeline to write persistent tags onto finished output items.


5. PlaceholderAPI Integration

CraftingEngine exposes contextual placeholders via PlaceholderAPI:

  • %craftingengine_active_processes%: Number of active crafts running for the player.
  • %craftingengine_current_stage%: Name of the active stage at the current station.
  • %craftingengine_process_progress%: Numeric percentage (0-100) of the active craft.

Next Steps