Skip to content

Previous: ๆฆ‚่งˆ.en.mdใ€€ยทใ€€Next: ๆ–นๅ—ๆจกๅž‹ไฝœ็‰ฉ.en.md Related: ../02-ๆœไธปๆŒ‡ๅ—/็‰ฉๅ“ๆบๅผ•็”จ.en.md ยท ../04-ๅผ€ๅ‘่€…/็‰ฉๅ“API.en.md ยท ๆฆ‚่งˆ.en.md

๐ŸŽ’ Item-Type Plugin Integration โ€‹

QCL wires all nine item sources into "item bridges". Their shared value is: letting items from other plugins be referenced using QCL's unified reference syntax โ€” whether in QinhItems (QI), custom GUIs, CustomBlock drops, or the developer API.

๐Ÿงท Core mental model: You almost never call a bridge directly. You just write an item source reference string (like mi-SWORD-CUTLASS), and QCL automatically dispatches to the matching bridge to fetch the item. For the full reference syntax overview see ๐Ÿ‘‰ ../02-ๆœไธปๆŒ‡ๅ—/็‰ฉๅ“ๆบๅผ•็”จ.en.md.


๐Ÿงญ Reference Prefix Cheat Sheet โ€‹

PluginReference prefixExample
MMOItemsmi-type-idmi-SWORD-CUTLASS
NeigeItemsni-idni-magic_apple
MythicMobsmm-idmm-SkeletonKingBlade
MagicGemmg-idmg-fire_ruby
CustomFishingcf-idcf-golden_carp
ItemsAdderia-namespace_idia-myitems_ruby_sword
Nexonx-idnx-ruby_sword
CraftEnginece-namespace_idce-default_oak_chair
QinhItemsqi:idqi:flame_blade

โš ๏ธ The - / _ / : in reference prefixes are all conventional notation โ€” please copy the format exactly. Each plugin below explains its own pitfalls.


โš”๏ธ MMOItems โ€‹

ItemContent
Bridge classMMOItemsBridge
Reference prefixmi-type-id
Detection classnet.Indyuce.mmoitems.MMOItems
Bridge capabilitiesgetItem(type, id), getType(item), getID(item)
Reflection notesReflects getTypes / get / getItem

MMOItems items are inherently typed (SWORD, ARMOR, CONSUMABLEโ€ฆ), so references must include the type:

yaml
# โœ… Correct: mi - type - id, three segments
item: mi-SWORD-CUTLASS
# โŒ Wrong: missing type, the bridge can't locate it
item: mi-CUTLASS
  • getType(item) / getID(item): reverse-read an item's MMOItems type and id, used for checks like "is this a particular MMOItems item".

๐ŸŽ NeigeItems โ€‹

ItemContent
Bridge classNeigeItemsBridge
Reference prefixni-id
Detection objectpers.neige.neigeitems.manager.ItemManager.INSTANCE
Bridge capabilitiesgetItemStack(id), getItemId(item)

NeigeItems items are untyped โ€” references only need the id:

yaml
item: ni-magic_apple
  • getItemId(item): reverse-check whether an item is a particular NeigeItems item (returns its id).

๐Ÿ’€ MythicMobs โ€‹

ItemContent
Bridge classMythicMobsBridge
Reference prefixmm-id
Bridge capabilitiesgetItemStack(id, amount)
Reflection notesDual binding: modern io.lumine.mythic.bukkit.MythicBukkit + legacy io.lumine.xikage

MythicMobs went through a major package-name change, so this bridge attempts to bind both class sets:

Binding modeCorresponding versionClass name root
ModernNew MythicMobsio.lumine.mythic.bukkit.MythicBukkit
LegacyOld MythicMobsio.lumine.xikage
yaml
item: mm-SkeletonKingBlade

๐Ÿ” Diagnostics: /qcl status detail shows the bindMode the bridge actually hit. If your MythicMobs items can't be fetched, first check whether the bindMode matches the version you have installed.


๐Ÿ’Ž MagicGem โ€‹

ItemContent
Bridge classMagicGemBridge
Reference prefixmg-id
Detection classpku.yim.magicgem.gem.GemManager
Bridge capabilitiesgetGemItem(id), hasGem(id)
Reflection notesgetRealGem() / realGem
yaml
item: mg-fire_ruby
  • hasGem(id): checks whether the gem id exists, usable for "validate before referencing".

๐ŸŽฃ CustomFishing โ€‹

ItemContent
Bridge classCustomFishingBridge
Reference prefixcf-id
Bridge capabilitiesbuildItem(id, amount)
Reflection notesMultiple class names + multiple build methods + multiple context compatibility

CustomFishing's build entry points differ greatly across versions, so the bridge makes multi-class-name / multi-build-method / multi-context compatibility attempts.

yaml
item: cf-golden_carp

๐Ÿงฉ ItemsAdder โ€‹

ItemContent
Bridge classItemsAdderBridge
Reference prefixia-namespace_id
Detection classdev.lone.itemsadder.api.CustomStack
Bridge capabilitiesbuildItemStack(id, amount)
Reflection notesLoaded with the plugin's own class loader

ItemsAdder item ids are in namespace:id form. In a QCL reference, replace the colon : with an underscore _:

yaml
# myitems:ruby_sword in ItemsAdder
item: ia-myitems_ruby_sword

โš ๏ธ Underscore transcription: ItemsAdder native ids use : to separate the namespace; in the QCL reference prefix write it as _.


๐Ÿ”ท Nexo โ€‹

ItemContent
Bridge classNexoBridge
Reference prefixnx-id
Detection classcom.nexomc.nexo.api.NexoItems
Bridge capabilitiesbuildItemStack(id, amount)
Reflection notesitemFromId().build()

Nexo is the successor in the Oraxen/ItemsAdder lineage; use the item id directly:

yaml
item: nx-ruby_sword

๐Ÿ› ๏ธ CraftEngine (item part) โ€‹

ItemContent
Bridge classCraftEngineBridge / CraftEngineManager
Reference prefixce-namespace_id
Bridge capabilities (items)buildItemStack(identifier, amount)
Reflection notesMulti-version, multi-signature compatibility

CraftEngine provides not only items but also the placement and recognition of custom blocks / furniture โ€” item references live here; for block/furniture capabilities see ๐Ÿ‘‰ ๆ–นๅ—ๆจกๅž‹ไฝœ็‰ฉ.en.md.

yaml
# default:oak_chair in CraftEngine
item: ce-default_oak_chair

โš ๏ธ Same as ItemsAdder: the namespace separator : is written as _ in the reference.


๐Ÿฎ QinhItems (internal source) โ€‹

ItemContent
Internal source classQinhItemsItemSource (not a reflection bridge, an internal item source)
Reference prefixqi:id
ImplementationReflects QinhItemRegistry.create(id, amount)
PrerequisiteRequires QinhItems to be enabled

QinhItems (QI) is the Qinhuai ecosystem's own item system. Within QCL it exists as an internal item source (distinct from third-party reflection bridges), but the reference syntax is still unified:

yaml
item: qi:flame_blade

๐Ÿ’ก QI item ids use a colon qi:id, slightly different from the - of most third-party plugins above โ€” please copy it exactly.


๐Ÿงช How to Use These References โ€‹

No matter the prefix, the places where a reference string can appear are consistent:

All references go through QCL's unified item source resolution layer. When resolution fails (plugin not installed / id misspelled), it returns empty rather than throwing an error.


๐Ÿ“š Continue Reading โ€‹