Doc ID:
SIRC-059
ExcellentEnchants API 文档
ExcellentEnchants 是一个轻量级、现代化的 Minecraft 附魔插件,提供 75+ 类原版附魔。本文档为开发者提供 API 使用指南。
Overview
ExcellentEnchants API 文档
概述
ExcellentEnchants 是一个轻量级、现代化的 Minecraft 附魔插件,提供 75+ 类原版附魔。本文档为开发者提供 API 使用指南。
包名和主要类
核心包
su.nightexpress.excellentenchants– 主包su.nightexpress.excellentenchants.api– API 包
主要类
- EnchantRegistry – 附魔注册表
- EnchantKeys – 附魔键生成器
- EnchantId – 附魔ID枚举
- CustomEnchantment – 自定义附魔类
API 使用方法
1. 通过命名空间键获取附魔
// 总是使用 EnchantKeys 类获取带有效命名空间的键
NamespacedKey key = EnchantKeys.custom(EnchantId.TUNNEL);
// 对于 PaperMC
Enchantment enchantment = RegistryAccess.registryAccess()
.getRegistry(RegistryKey.ENCHANTMENT)
.get(key);
// 对于 SpigotMC
Enchantment enchantment = Registry.ENCHANTMENT.get(key);
// 使用 nightcore API
Enchantment enchantment = RegistryType.ENCHANTMENT.getRegistry().get(key);
// 使用 ExcellentEnchants API
CustomEnchantment custom = EnchantRegistry.getByKey(key);
Enchantment enchantment = custom.getBukkitEnchantment();
2. 通过 ID 获取附魔
CustomEnchantment custom = EnchantRegistry.getById(EnchantId.TUNNEL);
Enchantment enchantment = custom.getBukkitEnchantment();
3. 检查附魔是否存在
boolean exists = EnchantRegistry.isRegistered(EnchantId.TUNNEL);
4. 获取所有附魔
Set<CustomEnchantment> customs = EnchantRegistry.getRegistered();
附魔ID列表
工具附魔
TUNNEL– 穿隧(范围挖掘)VEINMINER– 连锁挖掘BLAST_MINING– 爆破发掘HASTE– 急迫SMELTER– 熔炼SILK_CHEST– 搬箱SILK_SPAWNER– 封魔之触TREE_FELLER– 连锁伐树GLASS_BREAKER– 玻璃之触LUCKY_MINER– 幸运矿工REPLANTER– 复种TELEKINESIS– 心灵遥感
武器附魔
BANE_OF_NETHERSPAWN– 下界杀手BLINDNESS– 致盲CONFUSION– 混乱CURE– 治愈CURSE_OF_DEATH– 唤死诅咒CUTTER– 剥蚀DECAPITATOR– 斩首DOUBLE_STRIKE– 复击EXHAUST– 饥饿ICE_ASPECT– 霜寒之刃INFERNUS– 淬火之戟NIMBLE– 掠夺PARALYZE– 瘫痪RAGE– 怒气ROCKET– 升空SWIPER– 知识窃取TEMPER– 顽抗THRIFTY– 猎捕THUNDER– 落雷VAMPIRE– 歃血VENOM– 淬毒VILLAGE_DEFENDER– 村庄卫士WISDOM– 智慧WITHER– 凋零
弓类附魔
BOMBER– 爆裂之矢CONFUSING_ARROWS– 惑乱之矢DARKNESS_ARROWS– 暗黑之矢DRAGONFIRE_ARROWS– 龙涎之矢ELECTRIFIED_ARROWS– 唤雷之矢ENDER_BOW– 末影之矢EXPLOSIVE_ARROWS– 爆破之矢FLARE– 飞火之矢GHAST– 恶魂之矢HOVER– 虚浮之矢LINGERING– 滞留POISONED_ARROWS– 淬毒之矢SNIPER– 乘风快矢VAMPIRIC_ARROWS– 歃血之矢WITHERED_ARROWS– 凋谢之矢
盔甲附魔
COLD_STEEL– 霜甲DARKNESS_CLOAK– 暗御ELEMENTAL_PROTECTION– 元素之御FIRE_SHIELD– 炽炎之盾FLAME_WALKER– 炽炎行者HARDENED– 硬化ICE_SHIELD– 霜寒之御JUMPING– 灵跃KAMIKADZE– 自爆NIGHT_VISION– 夜视REBOUND– 粘弹REGROWTH– 再生SATURATION– 饱食SPEED– 疾步STOPPING_FORCE– 坚挺WATER_BREATHING– 水下呼吸
鱼竿附魔
AUTO_REEL– 自动收杆CURSE_OF_DROWNED– 溺尸诅咒DOUBLE_CATCH– 二重钓RIVER_MASTER– 抛钩大师SEASONED_ANGLER– 捕鱼大师SURVIVALIST– 烈焰鱼钩
通用附魔
CURSE_OF_BREAKING– 锈斑诅咒CURSE_OF_FRAGILITY– 脆弱诅咒CURSE_OF_MEDIOCRITY– 祛魔诅咒CURSE_OF_MISFORTUNE– 厄运诅咒RESTORE– 传承SOULBOUND– 归魂
内部变量(配置文件使用)
附魔变量
%enchantment_id%– 附魔的唯一标识符%enchantment_name%– 附魔的显示名称%enchantment_description%– 附魔描述%enchantment_level%– 附魔等级%enchantment_level_min%– 附魔最小等级%enchantment_level_max%– 附魔最大等级%enchantment_trigger_chance%– 触发附魔效果的几率%enchantment_trigger_interval%– 被动附魔效果的时间间隔%enchantment_fit_item_types%– 附魔能够施加的物品类型列表%enchantment_charges_max_amount%– 附魔的最大充能数量%enchantment_charges_consume_amount%– 单次使用消耗的充能数量%enchantment_charges_recharge_amount%– 单个充能物品所回复的充能数量%enchantment_charges_fuel_item%– 充能物品的显示名称
PlaceholderAPI 集成
变量格式
将 [enchantment] 替换为附魔标识符(等于附魔的配置文件名称)。
可用变量
-
%excellentenchants_charges_remaining_[slot]_[enchantment]%- 物品剩余充能次数
[slot]为装备格子(EquipmentSlot)
-
%excellentenchants_charges_maximum_[enchantment]_[level]%- 物品最大充能次数
[level]为附魔等级
附魔属性说明
通用属性
- Max Level: 附魔的最大等级
- Primary Items: 在生存模式下,可以通过附魔台获得该附魔的物品类型
- Secondary Items: 在生存模式下,可以通过附魔书与铁砧获得该附魔的物品类型
- Weight: 附魔出现的相对概率
附魔类型分类
- 箭类附魔 – 效果只能作用在箭上的附魔
- 非箭类附魔 – 替换弹射物的附魔(如:爆炸箭矢、末影之矢、恶魂之矢等)
注意事项
- 命名空间键: 总是使用
EnchantKeys.custom()方法获取有效的命名空间键 - 兼容性: API 适配了 Paper Registry API,兼容所有新版 PaperMC
- 版本: 确保使用最新版本的 ExcellentEnchants API
- 依赖: 插件需要 PlaceholderAPI 支持全局变量功能
示例代码
获取所有注册的附魔
Set<CustomEnchantment> allEnchants = EnchantRegistry.getRegistered();
for (CustomEnchantment enchant : allEnchants) {
String id = enchant.getId();
String name = enchant.getDisplayName();
int maxLevel = enchant.getMaxLevel();
// 处理附魔...
}
检查特定附魔是否存在
if (EnchantRegistry.isRegistered(EnchantId.TUNNEL)) {
CustomEnchantment tunnel = EnchantRegistry.getById(EnchantId.TUNNEL);
// 使用隧道附魔...
}
通过键获取附魔
NamespacedKey key = EnchantKeys.custom(EnchantId.VEINMINER);
CustomEnchantment veinminer = EnchantRegistry.getByKey(key);
if (veinminer != null) {
Enchantment bukkitEnchant = veinminer.getBukkitEnchantment();
// 使用连锁挖掘附魔...
}
开发建议
- 错误处理: 总是检查
getByKey()和getById()的返回值是否为 null - 性能: 缓存频繁使用的附魔对象以提高性能
- 兼容性: 考虑不同服务器平台(PaperMC/SpigotMC)的差异
- 版本控制: 注意 API 版本变化,及时更新代码
文档最后更新: 2025年11月
来源: ExcellentEnchants 官方文档