Doc ID: SIRC-043

AdvancedEnchantments API 知识库

AdvancedEnchantments(AE) 插件在二次开发中常用的 API、事件以及典型用法示例,适用于 Spigot / Paper 服务端插件开发者。

Overview

AdvancedEnchantments API 知识库

本文档用于整理 AdvancedEnchantments(AE) 插件在二次开发中常用的 API、事件以及典型用法示例,适用于 Spigot / Paper 服务端插件开发者。

⚠️ 注意

  • AE 为闭源商业插件,不同版本之间 API 可能存在差异
  • 本文仅基于常见稳定版本的 API 行为总结,实际开发时请 以你当前版本的源码 / Javadoc 为准

一、核心包结构说明

1️⃣ 公共 API 包

net.advancedplugins.ae.api

该包下通常包含:

  • 对外暴露的 API 接口
  • 静态工具类(如 AEAPI)
  • 附魔相关的数据结构

不同版本中类名可能略有变化,请在 IDE 中直接查看该包内容。


2️⃣ 附魔效果 / 事件相关包

net.advancedplugins.ae.impl.effects.api

该包主要用于:

  • 监听附魔效果触发
  • 获取触发原因、附魔等级、来源实体等信息

二、常用 API 用法

✅ 为物品应用 AE 附魔

最常见的需求是 在代码中给 ItemStack 添加 AE 自定义附魔

示例代码

import net.advancedplugins.ae.api.AEAPI;
import org.bukkit.inventory.ItemStack;

ItemStack item = ...;
String enchantName = "lifesteal"; // AE 附魔配置名
int level = 3;

ItemStack enchantedItem = AEAPI.applyEnchant(item, enchantName, level);

说明

  • enchantName 使用的是 AE 配置中的附魔 key,不是展示名
  • 如果附魔不存在,通常不会抛异常,但也不会生效
  • 建议在调用前自行校验附魔是否存在(不同版本校验方式不同)

✅ 判断物品是否包含 AE 附魔

不同版本实现不同,常见思路包括:

  • 通过 AEAPI 提供的方法
  • 或读取物品 Lore / NBT(不推荐,不稳定)

⚠️ 若 API 中未暴露直接判断方法,建议查看 AEAPI 或相关 Manager 类。


三、事件系统

🎯 EffectsActivateEvent(附魔效果触发事件)

这是 AE 开发中 最核心的事件之一,用于监听自定义附魔何时被触发。

监听示例

import net.advancedplugins.ae.impl.effects.api.EffectsActivateEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class AEListener implements Listener {

    @EventHandler
    public void onEnchantActivate(EffectsActivateEvent e) {
        // 附魔名称
        String enchantName = e.getEnchantName();

        // 附魔等级
        int level = e.getLevel();

        // 触发该附魔的玩家(如果存在)
        if (e.getPlayer() != null) {
            // do something
        }

        // 触发原因(攻击、受伤、挖掘等)
        // e.getTrigger(); // 不同版本方法名可能不同
    }
}

常见可获取信息(依版本而定)

  • 附魔名称(String)
  • 附魔等级(int)
  • 触发实体 / 玩家
  • 受影响实体
  • 触发类型(ATTACK / DEFENSE / MINING 等)

⚠️ 方法名在不同 AE 版本中可能变化,例如:

  • getEnchantName()
  • getEnchant().getName()

请务必以 IDE 自动补全为准。


四、开发注意事项

⚠️ 版本差异说明

  • 不要假设 API 稳定,AE 更新可能直接修改方法签名
  • 某些类位于 impl 包下,理论上 不是稳定 API
  • 若升级 AE 后编译报错,优先对比新旧版本源码

⚠️ 不要编造类或方法

如果在 net.advancedplugins.ae.api 中:

  • 找不到你预期的方法
  • 或示例代码无法编译

那么说明:

  • 该方法在你当前版本中不存在
  • 或被重命名 / 移除

👉 正确做法
直接在 IDE 中展开 net.advancedplugins.ae.api 包查看真实类结构。


五、推荐开发流程

  1. 将 AE 插件加入 plugins 目录并启动一次服务器
  2. 使用反编译工具或 IDE Attach Sources 查看 AE Jar
  3. 优先使用 api 包下的类
  4. impl 包下内容保持谨慎

六、总结

  • AE 提供了较为完整但不完全稳定的 API
  • AEAPI.applyEnchant 是最常用的附魔应用方式
  • EffectsActivateEvent 是监听附魔行为的核心事件
  • 一切以 当前版本源码 为最终标准