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

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

源代码1 项目: TradePlus   文件: UMaterial.java
public ItemStack getItemStack() {
  final String v = getVersionName();
  final Material m = v != null ? Material.valueOf(v) : null;
  ItemStack is = m != null ? EIGHT || NINE || TEN || ELEVEN || TWELVE ? new ItemStack(m, 1, data) : new ItemStack(m) : null;
  if(is != null && attributes != null) {
    for(String s : attributes.split(";")) {
      if(s.startsWith("color=")) {
        final String[] a = s.split(":");
        final LeatherArmorMeta me = (LeatherArmorMeta) is.getItemMeta();
        me.setColor(Color.fromRGB(Integer.parseInt(a[0]), Integer.parseInt(a[1]), Integer.parseInt(a[2])));
        is.setItemMeta(me);
      } else if(s.startsWith("enchant=")) {
        final String[] e = s.split("=")[1].split(":");
        final EnchantmentStorageMeta sm = (EnchantmentStorageMeta) is.getItemMeta();
        sm.addStoredEnchant(Sounds.version < 114 ? Enchantment.getByName(e[0]) : ItemUtils1_14.getEnchantment(e[0]), Integer.parseInt(e[1]), true);
        is.setItemMeta(sm);
      } else if(s.startsWith("upotion=")) {
        final String[] p = s.split("=")[1].split(":");
        is = new UPotion(PotionBase.valueOf(p[0]), p[1], Boolean.parseBoolean(p[2]), Boolean.parseBoolean(p[3])).getItemStack();
      }
    }
  }
  return is;
}
 
源代码2 项目: 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);
}
 
源代码3 项目: QuickShop-Reremake   文件: Util.java
@NotNull
public static String getItemStackName(@NotNull ItemStack itemStack) {
    if (useEnchantmentForEnchantedBook() && itemStack.getType() == Material.ENCHANTED_BOOK) {
        ItemMeta meta = itemStack.getItemMeta();
        if (meta instanceof EnchantmentStorageMeta && ((EnchantmentStorageMeta) meta).hasStoredEnchants()) {
            return getFirstEnchantmentName((EnchantmentStorageMeta) meta);
        }
    }
    if (itemStack.hasItemMeta()
            && Objects.requireNonNull(itemStack.getItemMeta()).hasDisplayName()) {
        return itemStack.getItemMeta().getDisplayName();
    }
    return MsgUtil.getItemi18n(itemStack.getType().name());
}
 
源代码4 项目: QuickShop-Reremake   文件: Util.java
@NotNull
public static String getFirstEnchantmentName(@NotNull EnchantmentStorageMeta meta) {
    if (meta == null || !meta.hasStoredEnchants()) {
        throw new IllegalArgumentException("Item does not have an enchantment!");
    }
    Map.Entry<Enchantment, Integer> entry = meta.getStoredEnchants().entrySet().iterator().next();
    String name = MsgUtil.getEnchi18n(entry.getKey());
    if (entry.getValue() == 1 && entry.getKey().getMaxLevel() == 1) {
        return name;
    } else {
        return name + " " + RomanNumber.toRoman(entry.getValue());
    }
}
 
源代码5 项目: TradePlus   文件: UMaterial.java
public static ItemStack getEnchantmentBook(LinkedHashMap<Enchantment, Integer> enchants, int amount) {
  final ItemStack s = new ItemStack(Material.ENCHANTED_BOOK, amount);
  final EnchantmentStorageMeta sm = (EnchantmentStorageMeta) s;
  for(Enchantment enchant : enchants.keySet()) {
    sm.addStoredEnchant(enchant, enchants.get(enchant), true);
  }
  s.setItemMeta(sm);
  return s;
}
 
源代码6 项目: TradePlus   文件: UMaterial.java
public static UMaterial matchEnchantedBook(ItemStack book) {
  if(book != null && book.getItemMeta() instanceof EnchantmentStorageMeta) {
    final EnchantmentStorageMeta m = (EnchantmentStorageMeta) book.getItemMeta();
    final Map<Enchantment, Integer> s = m.getStoredEnchants();
    if(s.size() == 1) {
      final Enchantment e = (Enchantment) s.keySet().toArray()[0];
      final int l = s.get(e);
      final String n = e.getName(), name =
                                        n.equals("PROTECTION_ENVIRONMENTAL") ? "PROTECTION"
                                            : n.equals("PROTECTION_FIRE") ? "FIRE_PROTECTION"
                                                  : n.equals("PROTECTION_FALL") ? "FEATHER_FALLING"
                                                        : n.equals("PROTECTION_EXPLOSIONS") ? "BLAST_PROTECTION"
                                                              : n.equals("PROTECTION_PROJECTILE") ? "PROJECTILE_PROTECTION"
                                                                    : n.equals("OXYGEN") ? "AQUA_AFFINITY"
                                                                          : n.equals("WATER_WORKER") ? "RESPIRATION"
                                                                                : n.equals("DAMAGE_ALL") ? "SHARPNESS"
                                                                                      : n.equals("DAMAGE_UNDEAD") ? "SMITE"
                                                                                            : n.equals("DAMAGE_ARTHROPODS") ? "BANE_OF_ARTHROPODS"
                                                                                                  : n.equals("LOOT_BONUS_MOBS") ? "LOOTING"
                                                                                                        : n.equals("SWEEPING_EDGE") ? "SWEEPING"
                                                                                                              : n.equals("DIG_SPEED") ? "EFFICIENCY"
                                                                                                                    : n.equals("DURABILITY") ? "UNBREAKING"
                                                                                                                          : n.equals("LOOT_BONUS_BLOCKS") ? "FORTUNE"
                                                                                                                                : n.equals("ARROW_DAMAGE") ? "POWER"
                                                                                                                                      : n.equals("ARROW_KNOCKBACK") ? "PUNCH"
                                                                                                                                            : n.equals("ARROW_FIRE") ? "FLAME"
                                                                                                                                                  : n.equals("ARROW_INFINITE") ? "INFINITY"
                                                                                                                                                        : n.equals("LUCK") ? "LUCK_OF_THE_SEA"
                                                                                                                                                              : n;
      return match("ENCHANTED_BOOK_" + (e.getMaxLevel() != 1 ? name + "_" + l : name));
    }
  }
  return null;
}
 
源代码7 项目: ShopChest   文件: ItemUtils.java
public static Map<Enchantment, Integer> getEnchantments(ItemStack itemStack) {
    if (itemStack.getItemMeta() instanceof EnchantmentStorageMeta) {
        EnchantmentStorageMeta esm = (EnchantmentStorageMeta) itemStack.getItemMeta();
        return esm.getStoredEnchants();
    } else {
        return itemStack.getEnchantments();
    }
}
 
源代码8 项目: PlotMe-Core   文件: SchematicUtil.java
@SuppressWarnings("deprecation")
private void setTag(ItemStack is, ItemTag itemtag) {
    List<Ench> enchants = itemtag.getEnchants();
    //Integer repaircost = itemtag.getRepairCost();
    List<String> pages = itemtag.getPages();
    String author = itemtag.getAuthor();
    String title = itemtag.getTitle();
    Display display = itemtag.getDisplay();

    ItemMeta itemmeta = is.getItemMeta();

    if (display != null) {
        List<String> lores = display.getLore();
        String name = display.getName();

        itemmeta.setLore(lores);
        itemmeta.setDisplayName(name);
    }

    if (itemmeta instanceof BookMeta) {
        BookMeta bookmeta = (BookMeta) itemmeta;
        bookmeta.setAuthor(author);
        bookmeta.setTitle(title);
        bookmeta.setPages(pages);
    }

    if (itemmeta instanceof EnchantmentStorageMeta) {
        EnchantmentStorageMeta enchantmentstoragemeta = (EnchantmentStorageMeta) itemmeta;

        for (Ench enchant : enchants) {
            enchantmentstoragemeta.addEnchant(Enchantment.getById(enchant.getId()), enchant.getLvl(), true);
        }
    }

    is.setItemMeta(itemmeta);
}
 
源代码9 项目: MineTinker   文件: PlayerListener.java
/**
 * Updates the HashMap BLOCKFACE with the clicked face of the Block
 *
 * @param event PlayerInteractEvent
 */
@EventHandler(priority = EventPriority.LOW)
public void onInteract(PlayerInteractEvent event) {
	if (Lists.WORLDS.contains(event.getPlayer().getWorld().getName())) {
		return;
	}

	if (!event.getBlockFace().equals(BlockFace.SELF)) {
		Lists.BLOCKFACE.replace(event.getPlayer(), event.getBlockFace());
	}

	if (!modManager.allowBookToModifier()) {
		return;
	}

	if (event.getClickedBlock() == null || event.getClickedBlock().getType() != Material.BOOKSHELF) {
		return;
	}

	if (event.getItem() == null || event.getItem().getType() != Material.ENCHANTED_BOOK) {
		return;
	}

	if (event.getItem().getItemMeta() == null || !(event.getItem().getItemMeta() instanceof EnchantmentStorageMeta)) {
		return;
	}

	EnchantmentStorageMeta meta = (EnchantmentStorageMeta) event.getItem().getItemMeta();

	for (Map.Entry<Enchantment, Integer> entry : meta.getStoredEnchants().entrySet()) {
		Modifier modifier = modManager.getModifierFromEnchantment(entry.getKey());

		if (modifier == null) {
			continue;
		}

		ItemStack modDrop = modifier.getModItem();
		modDrop.setAmount(entry.getValue());

		event.getClickedBlock().getWorld().dropItem(event.getClickedBlock().getLocation(), modDrop);

		meta.removeStoredEnchant(entry.getKey());
	}

	if (meta.getStoredEnchants().isEmpty()) {
		event.getPlayer().getInventory().removeItem(event.getItem());
	} else {
		event.getItem().setItemMeta(meta);
	}
}
 
源代码10 项目: NyaaUtils   文件: EnchantCommands.java
@SubCommand(value = "info", permission = "nu.enchantinfo")
public void commandEnchantInfo(CommandSender sender, Arguments args) {
    Player p = asPlayer(sender);
    ItemStack item = getItemInOffHand(sender);

    if (!BasicItemMatcher.containsMatch(NyaaUtils.instance.cfg.enchantSrcConfig.enchantSrc, item)) {
        sender.sendMessage(I18n.format("user.enchant.invalid_src"));
        return;
    }

    Map<Enchantment, Integer> enchant;
    if (item.getType().equals(Material.ENCHANTED_BOOK)) {
        EnchantmentStorageMeta meta = (EnchantmentStorageMeta) item.getItemMeta();
        enchant = meta.getStoredEnchants();
    } else {
        enchant = item.getEnchantments();
    }

    sender.sendMessage(I18n.format("user.enchant.list_ench_header"));
    printEnchant(p, enchant.keySet().toArray(new Enchantment[0]));
    long cooldown = 0;
    if (enchantCooldown.containsKey(p.getUniqueId())) {
        cooldown = enchantCooldown.get(p.getUniqueId()) + (plugin.cfg.enchantCooldown / 20 * 1000);
    }
    float percent;
    msg(sender, "user.enchantinfo.info_0");
    if (cooldown > System.currentTimeMillis()) {
        percent = (plugin.cfg.chanceModerate +
                plugin.cfg.chanceFail + plugin.cfg.chanceDestroy) / 100.0F;
        msg(sender, "user.enchantinfo.info_1", 0);
    } else {
        percent = (plugin.cfg.chanceSuccess + plugin.cfg.chanceModerate +
                plugin.cfg.chanceFail + plugin.cfg.chanceDestroy) / 100.0F;
        msg(sender, "user.enchantinfo.info_1", (int) (plugin.cfg.chanceSuccess / percent));
    }
    msg(sender, "user.enchantinfo.info_2", (int) (plugin.cfg.chanceModerate / percent));
    msg(sender, "user.enchantinfo.info_3", (int) (plugin.cfg.chanceFail / percent));
    msg(sender, "user.enchantinfo.info_4", (int) (plugin.cfg.chanceDestroy / percent));
    if (cooldown > System.currentTimeMillis()) {
        msg(sender, "user.enchantinfo.info_cooldown", (int) ((cooldown - System.currentTimeMillis()) / 1000));
    }
}
 
源代码11 项目: Slimefun4   文件: AutoEnchanter.java
private MachineRecipe findRecipe(BlockMenu menu) {
    for (int slot : getInputSlots()) {
        ItemStack target = menu.getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1] : getInputSlots()[0]);

        // Check if the item is enchantable
        if (!isEnchantable(target)) {
            return null;
        }

        ItemStack item = menu.getItemInSlot(slot);

        // Enchant
        if (item != null && item.getType() == Material.ENCHANTED_BOOK && target != null) {
            Map<Enchantment, Integer> enchantments = new HashMap<>();
            Set<ItemEnchantment> emeraldEnchantments = new HashSet<>();
            int amount = 0;
            int specialAmount = 0;
            EnchantmentStorageMeta meta = (EnchantmentStorageMeta) item.getItemMeta();

            for (Map.Entry<Enchantment, Integer> e : meta.getStoredEnchants().entrySet()) {
                if (e.getKey().canEnchantItem(target)) {
                    amount++;
                    enchantments.put(e.getKey(), e.getValue());
                }
            }

            if (SlimefunPlugin.getThirdPartySupportService().isEmeraldEnchantsInstalled()) {
                for (ItemEnchantment enchantment : EmeraldEnchants.getInstance().getRegistry().getEnchantments(item)) {
                    if (EmeraldEnchants.getInstance().getRegistry().isApplicable(target, enchantment.getEnchantment()) && EmeraldEnchants.getInstance().getRegistry().getEnchantmentLevel(target, enchantment.getEnchantment().getName()) < enchantment.getLevel()) {
                        amount++;
                        specialAmount++;
                        emeraldEnchantments.add(enchantment);
                    }
                }
                specialAmount += EmeraldEnchants.getInstance().getRegistry().getEnchantments(target).size();
            }

            if (amount > 0 && specialAmount <= emeraldEnchantsLimit) {
                ItemStack enchantedItem = target.clone();
                enchantedItem.setAmount(1);

                for (Map.Entry<Enchantment, Integer> entry : enchantments.entrySet()) {
                    enchantedItem.addUnsafeEnchantment(entry.getKey(), entry.getValue());
                }

                for (ItemEnchantment ench : emeraldEnchantments) {
                    EmeraldEnchants.getInstance().getRegistry().applyEnchantment(enchantedItem, ench.getEnchantment(), ench.getLevel());
                }

                return new MachineRecipe(75 * amount, new ItemStack[] { target, item }, new ItemStack[] { enchantedItem, new ItemStack(Material.BOOK) });
            }

            return null;
        }
    }

    return null;
}
 
 类所在包
 同包方法