跳到主要内容

PlaceholderAPI 与 API

PlaceholderAPI 变量​

装了 PlaceholderAPI 会自动注册,不需要 eCloud 下载。

变量说明
%cloudacces_count%已装备的饰品数(不含原版栏位)
%cloudacces_active%目前生效中的饰品数(权限、规则都符合)
%cloudacces_count_<菜单>%某个菜单已装备的栏位数(含原版栏位)
%cloudacces_slot_<菜单>/<栏位>%栏位上物品的名称,空的回传空字符串
%cloudacces_has_<CloudItems物品ID>%有没有装备这件物品:true / false

饰品提供的属性请用 CloudItems 的 %ci_stat_<属性>%,它已经包含饰品。

和 CloudItems 的串接​

  • CloudAcces 透过 CloudItems 的 AccessoryProvider 提供「目前生效中的饰品」,CloudItems 把它们的属性、被动、技能与常驻药水效果算进玩家身上。
  • 栏位规则透过 CloudItems 1.3.0 新增的 CloudItemsApi 读取类型、父类型与使用限制。
  • 装备、卸下后立刻请 CloudItems 重新计算;模板更新后,玩家登录、打开菜单时饰品外观会自动更新。

开发者 API​

import dev.cloudplugins.acces.api.CloudAccesApi;

CloudAccesApi api = CloudAccesApi.get(); // 没装或未启用时为 null
if (api != null && api.loaded(player)) {
List<ItemStack> worn = api.active(player); // 生效中的饰品(副本)
Map<String, ItemStack> all = api.equipped(player); // 「菜单/栏位」→ 物品
ItemStack ring = api.item(player, "饰品栏", "戒指1");
api.open(player, "饰品栏");
}

事件​

@EventHandler
public void onEquip(AccessoryEquipEvent e) {
// e.getPlayer() e.getMenu() e.getSlot() e.getItem() e.getReplaced()
if (inCombat(e.getPlayer())) e.setCancelled(true); // 战斗中不准换饰品
}

@EventHandler
public void onUnequip(AccessoryUnequipEvent e) { /* e.getItem() */ }

两个事件都在真正放入 / 取出之前触发,可以取消;取消时玩家会听到拒绝音效,物品留在原处。