Skip to content

开发接口

LyCore 对外提供 LyCoreAPI,主要用于获取属性管理器,并让其它插件接入离渊系列的属性桥接能力。

依赖

插件名:

yaml
depend:
  - LyCore

如果只是可选接入,可以写成:

yaml
softdepend:
  - LyCore

获取属性管理器

java
import Ly.core.api.LyCoreAPI;
import Ly.core.attribuet.AttributeData;
import Ly.core.attribuet.AttributeManager;
import org.bukkit.entity.Player;

public void addDemoAttribute(Player player) {
    AttributeManager manager = LyCoreAPI.getAttributeManager();
    AttributeData data = manager.getAttributeData(player);
    data.addSource("demo", java.util.Arrays.asList("攻击力: 10", "生命值: 20"));
}

addSource 会按来源名保存属性列表。再次使用同名来源写入时,会覆盖旧内容。

移除属性来源

java
import Ly.core.api.LyCoreAPI;
import Ly.core.attribuet.AttributeData;
import org.bukkit.entity.Player;

public void removeDemoAttribute(Player player) {
    AttributeData data = LyCoreAPI.getAttributeManager().getAttributeData(player);
    if (data != null) {
        data.removeSource("demo");
    }
}

刷新机制

AttributeData 内部会在玩家属性变化后标记刷新。刷新由 LyCore 定时处理,不需要业务插件反复调用属性插件 API。

常用方法:

方法说明
hasSource(String name)判断是否存在指定来源
getSource(String name)获取指定来源的属性文本
addSource(String name, List<String> content)添加或覆盖属性来源
removeSource(String name)移除属性来源
getAttributeSourceMap()获取全部属性来源

警告

Bukkit 物品、玩家背包和大多数服务器对象建议在主线程处理。异步任务里调用前,先确认你的业务逻辑不会直接修改 Bukkit 对象。