类org.bukkit.inventory.meta.Repairable源码实例Demo

下面列出了怎么用org.bukkit.inventory.meta.Repairable的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Slimefun4   文件: AutoDisenchanter.java
private void transferEnchantments(ItemStack item, ItemStack book, Map<Enchantment, Integer> enchantments) {
    ItemMeta itemMeta = item.getItemMeta();
    ItemMeta bookMeta = book.getItemMeta();
    ((Repairable) bookMeta).setRepairCost(((Repairable) itemMeta).getRepairCost());
    ((Repairable) itemMeta).setRepairCost(0);
    item.setItemMeta(itemMeta);
    book.setItemMeta(bookMeta);

    EnchantmentStorageMeta meta = (EnchantmentStorageMeta) book.getItemMeta();

    for (Map.Entry<Enchantment, Integer> entry : enchantments.entrySet()) {
        item.removeEnchantment(entry.getKey());
        meta.addStoredEnchant(entry.getKey(), entry.getValue(), true);
    }

    book.setItemMeta(meta);
}
 
源代码2 项目: NyaaUtils   文件: RepairCommands.java
@SubCommand(value = "info", permission = "nu.repair")
public void repairInfo(CommandSender sender, Arguments args) {
    ItemStack item = getItemInHand(sender);
    ItemMeta itemMeta = item.getItemMeta();
    RepairInstance info = new RepairInstance(item, plugin.cfg.repair, plugin);
    new Message(I18n.format("user.repair.info_1")).append(item).send(asPlayer(sender));
    msg(sender, "user.repair.info_2", item.getType().name());
    if (info.stat != REPAIRABLE) {
        msg(sender, "user.repair.info_3", I18n.format("user.repair.unrepairable." + info.stat.name()));
    }
    if (info.stat == UNREPAIRABLE) return;
    int fullDur = item.getType().getMaxDurability();
    int currDur = fullDur - ((Damageable) itemMeta).getDamage();
    msg(sender, "user.repair.info_4", currDur, fullDur, (double) currDur / (double) fullDur * 100);
    new Message(I18n.format("user.repair.info_5")).append(new ItemStack(info.repairMaterial)).send(asPlayer(sender));
    msg(sender, "user.repair.info_6", info.expConsumption);
    msg(sender, "user.repair.info_7", info.durRecovered, (double) info.durRecovered / (double) fullDur * 100);
    if (info.repairLimit <= 0) {
        msg(sender, "user.repair.info_8");
    } else {
        int repairTime = ((Repairable) itemMeta).getRepairCost();
        msg(sender, "user.repair.info_9", repairTime, info.repairLimit);
    }
    if (info.stat == REPAIRABLE) {
        msg(sender, "user.repair.info_10", (int) Math.ceil(((Damageable) itemMeta).getDamage() / (double) info.durRecovered));
    }
}
 
源代码3 项目: NyaaUtils   文件: RepairCommands.java
private void increaseReapirCount(ItemStack item, int x) {
    if (x == 0) return;
    ItemMeta meta = item.getItemMeta();
    if (meta instanceof Repairable) {
        Repairable r = (Repairable) meta;
        int count = r.getRepairCost() + x;
        if (count < 0) count = 0;
        r.setRepairCost(count);
        item.setItemMeta(meta);
    }
}
 
源代码4 项目: NyaaUtils   文件: RepairInstance.java
public RepairInstance(ItemStack item, RepairConfig config, NyaaUtils plugin) {
    if (item == null || item.getType() == Material.AIR) return;
    RepairConfig.RepairConfigItem cfg = config.getRepairConfig(item.getType());
    if (cfg == null) return;
    if (!(item.getItemMeta() instanceof Repairable)) return;
    if (item.hasItemMeta() && item.getItemMeta().hasLore()) {
        if (!plugin.cfg.globalLoreBlacklist.canRepair(item.getItemMeta().getLore())) {
            stat = RepairStat.UNREPAIRABLE;
            return;
        }
    }
    stat = RepairStat.REPAIRABLE;
    if (item.getItemMeta().isUnbreakable()) {
        stat = RepairStat.UNREPAIRABLE_UNBREAKABLE;
    }
    Repairable repairableMeta = (Repairable) item.getItemMeta();
    Damageable damageableMeta = (Damageable) item.getItemMeta();
    repairLimit = cfg.repairLimit;
    if (repairLimit > 0 && repairableMeta.getRepairCost() >= repairLimit) {
        stat = RepairStat.UNREPAIRABLE_RLE;
    }

    Material toolMaterial = item.getType();
    repairMaterial = cfg.material;
    int currentDurability = damageableMeta.getDamage();
    if (currentDurability <= 0) {
        stat = RepairStat.UNREPAIRABLE_REPAIRED;
    }

    int enchLevel = 0;
    for (Enchantment ench : Enchantment.values()) {
        enchLevel += Math.max(item.getEnchantmentLevel(ench), 0);
    }

    int fullDurability = toolMaterial.getMaxDurability();
    durRecovered = (int) Math.floor((double) fullDurability / ((double) cfg.fullRepairCost + (double) enchLevel * cfg.enchantCostPerLv));
    expConsumption = (int) Math.floor(cfg.expCost + cfg.enchantCostPerLv * enchLevel);
    if (durRecovered <= 0) {
        stat = RepairStat.UNREPAIRABLE_LOWRECOVER;
    }
}
 
 类所在包
 类方法
 同包方法