API
EmakiItem 对外提供物品创建、识别和查询能力。其他插件可通过 Bukkit ServicesManager 获取 EmakiItemApi 实例。
EmakiItemApi 接口
| 方法 | 返回值 | 说明 |
|---|---|---|
exists(String id) | boolean | 检查物品 ID 是否已加载。 |
create(String id, int amount) | ItemStack | 根据物品 ID 创建 ItemStack。返回 null 表示 ID 不存在。 |
identify(ItemStack itemStack) | String | 识别物品的 EmakiItem ID。返回 null 表示不是 EmakiItem 物品。 |
definitionIds() | Set<String> | 获取所有已加载的物品 ID 集合。 |
displayName(String id) | String | 获取物品的显示名(纯文本,不含 MiniMessage 标签)。 |
获取方式
java
RegisteredServiceProvider<EmakiItemApi> provider =
Bukkit.getServicesManager().getRegistration(EmakiItemApi.class);
if (provider != null) {
EmakiItemApi api = provider.getProvider();
// 使用 api
}接入建议
- 在插件
onEnable之后再查询服务,确保 EmakiItem 已加载。 - 查询不到服务时降级运行,不要让 softdepend 模块直接崩溃。
create返回的 ItemStack 是全新实例,已包含所有 PDC 数据和展示。identify通过 PDC 中的emakiitem:id标记识别,不依赖 Lore 或名称。