开发接口
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 对象。