跳到主要内容

多物品源支持

EMC 高级商店内置 32 种物品源,可在商店配置中直接使用来自各种第三方插件的自定义物品,无需硬依赖——全部通过反射实现,按需对接。

物品格式

在所有商店配置的 material 字段中,使用 源:物品ID 格式引用物品:

items:
# 原版物品(可省略 Minecraft: 前缀)
diamond_sword:
material: DIAMOND_SWORD
buy-price: 250.0

# MythicMobs 物品
skeleton_sword:
material: MythicMobs:SkeletonKingSword
buy-price: 5000.0

# ItemsAdder 物品
custom_gem:
material: ItemsAdder:custom_namespace:ruby_gem
buy-price: 1000.0

# MMOItems 物品
excalibur:
material: MMOItems:SWORD:EXCALIBUR
buy-price: 10000.0

# 带 data 值的旧版物品
lapis:
material: INK_SACK
data: 4
display-name: "青金石"
buy-price: 8.0

32 种物品源一览

原版与通用

#源 ID插件名说明
1Minecraft原版物品,可省略前缀直接写 Material 名

怪物/RPG 物品插件

#源 ID插件名说明
2MythicMobsMythicMobsMythicMobs 自定义物品
3ZaphkielZaphkielZaphkiel 物品系统
4MMOItemsMMOItemsMMOItems 物品(格式 MMOItems:TYPE:ID
5SX-ItemSX-ItemSX-Item 物品
6MagicGemMagicGemMagicGem 宝石物品
7RatzielRatzielRatziel 物品系统
8PxRpgPxRPGPxRPG 物品

自定义物品插件

#源 ID插件名说明
9ItemsAdderItemsAdderItemsAdder 自定义物品
10OraxenOraxenOraxen 自定义物品
11NexoNexoNexo 物品系统
12NeigeItemsNeigeItemsNeigeItems 物品
13NovaNovaNova 物品系统
14CraftEngineCraftEngineCraftEngine 物品
15ExecutableItemsExecutableItemsExecutableItems 可执行物品
16SlimefunSlimefunSlimefun 科技物品(兼容新旧版 API)
17HeadDatabaseHeadDatabaseHeadDatabase 自定义头颅
18CustomFishingCustomFishingCustomFishing 钓鱼物品

装饰/外观插件

#源 ID插件名说明
19DragonArmourersDragonArmourers龙之盔甲师外观物品
20HMCCosmeticsHMCCosmeticsHMC 装饰物品
21SertralineSertralineSertraline 物品
22AzureFlowAzureFlowAzureFlow 物品
23RepositoryRepositoryRepository 物品仓库

Eco 生态系列

#源 ID插件名说明
24EcoArmorEcoArmorEco 护甲
25EcoCratesEcoCratesEco 箱子
26EcoItemsEcoItemsEco 物品
27EcoMobsEcoMobsEco 怪物掉落
28EcoPetsEcoPetsEco 宠物
29EcoScrollsEcoScrollsEco 卷轴
30ReforgesReforgesEco 重铸
31StatTrackersStatTrackersEco 统计追踪器
32TalismansTalismansEco 护身符

技术实现

插件启动时自动检测服务器上已安装的插件,对接可用的物品源。无需在 plugin.yml 中添加依赖——所有物品源均通过 Java 反射动态加载,不存在编译时依赖。

启动日志示例:

[物品源] 已对接: Minecraft (Minecraft)
[物品源] 已对接: MythicMobs (MythicMobs)
[物品源] 已对接: ItemsAdder (ItemsAdder)
[物品源] 共注册 32 种物品源, 当前可用 3 种

反射调用链

对于大多数插件,物品获取通过通用反射源 ReflectiveSource 实现,调用链示例:

MythicBukkit.inst().getItemManager().getItemStack("itemId")

部分插件(ItemsAdder、Oraxen、MMOItems、Slimefun、HeadDatabase 等)由于 API 差异较大,使用专用的物品源实现类。

配置示例

官方商店中使用 MythicMobs 物品

# shops/admin-shop.yml
categories:
mythic-weapons:
name: "&c神话武器"
icon: DIAMOND_SWORD
slot: 25
items:
skeleton_sword:
material: MythicMobs:SkeletonKingSword
display-name: "&c骷髅王之剑"
buy-price: 5000.0
sell-price: -1
daily-limit: 1

官方商店中使用 ItemsAdder 物品

      ruby:
material: ItemsAdder:custom_items:ruby
display-name: "&c红宝石"
buy-price: 2000.0
sell-price: 1000.0

官方商店中使用 Slimefun 物品

      electric_motor:
material: Slimefun:ELECTRIC_MOTOR
display-name: "&e电动马达"
buy-price: 500.0
sell-price: 200.0

注意事项

  • 物品源 ID 不区分大小写MythicMobsmythicmobs 均可)
  • 如果对应插件未安装,该物品源自动标记为不可用,不会报错
  • 带 data 值的旧版原版物品使用 Material:data 格式(如 WOOL:14)或配合 data 字段
  • 所有商店模块(官方商店、每日商店、黑市、转盘奖品等)均支持多物品源格式