private static boolean canEnchant(ItemStack item) { Material type = item.getType(); switch (type) { case ENCHANTED_BOOK: return false; case BOOK: return item.getAmount() == 1; case FISHING_ROD: case BOW: return item.getEnchantments().isEmpty(); default: return (isEnchantableTool(type) || isCloth(type) || ToolType.SWORD.matches(type)) && item.getEnchantments().isEmpty(); } }
Map<Enchantment, Integer> enchantments = item.getEnchantments(); boolean conflicts = false;
@Override public Map<MCEnchantment, Integer> getEnchantments() { Map<MCEnchantment, Integer> map = new HashMap<>(); try { for(Map.Entry<Enchantment, Integer> entry : is.getEnchantments().entrySet()) { map.put(new BukkitMCEnchantment(entry.getKey()), entry.getValue()); } } catch (NullPointerException npe) { // Probably invalid enchantment, always return map } return map; }
@Override public LuaValue call() { return CoerceJavaToLua.coerce(item.getEnchantments()); } });
public ItemStackBuilder clearEnchantments() { return transform(itemStack -> itemStack.getEnchantments().keySet().forEach(itemStack::removeEnchantment)); }
public ItemStackBuilder clearEnchantments() { return transform(itemStack -> itemStack.getEnchantments().keySet().forEach(itemStack::removeEnchantment)); }
public static boolean compareEnchantments(ItemStack i1, ItemStack i2) { if (i1 == null || i2 == null) { return false; } if (i1.getEnchantments().size() == i2.getEnchantments().size()) { Map<Enchantment, Integer> e1 = i1.getEnchantments(); Map<Enchantment, Integer> e2 = i2.getEnchantments(); Enchantment[] e1l = new Enchantment[e1.size()]; int i = 0; for (Enchantment enchantment : e1.keySet()) { e1l[i++] = enchantment; } i = 0; for (Enchantment enchantment : e2.keySet()) { if (e1l[i].getId() != enchantment.getId()) { //MyPetLogger.write("enchantment: " + e1l[i].getId() + "<->" + enchantment.getId()); return false; } else if (!e1.get(e1l[i]).equals(e2.get(enchantment))) { //MyPetLogger.write("level: " + e1.get(e1l[i]) + "<->" + e2.get(enchantment)); return false; } i++; } return true; } //MyPetLogger.write("size: " + i1.getEnchantments().size() + "<->" + i2.getEnchantments().size()); return false; }
private void removeSonicEnchant(PlayerInventory inv) { int first = inv.first(sonic); if (first < 0) { return; } ItemStack stack = inv.getItem(first); if (stack.containsEnchantment(Enchantment.DURABILITY)) { stack.getEnchantments().keySet().forEach(stack::removeEnchantment); } }
/** * Checks for illegal enchantments (legacy). Removes enchantments from * WRITTEN_BOOK. * * @param player * @param stack * @return True if the check is failed. */ public static final boolean checkIllegalEnchantments(final Player player, final ItemStack stack, final IPlayerData pData){ if (stack == null) { return false; } final Material type = stack.getType(); // Fastest checks first. // TODO: Make stuff configurable. if (type == Material.WRITTEN_BOOK){ final Map<Enchantment, Integer> enchantments = stack.getEnchantments(); if (enchantments != null && !enchantments.isEmpty() && pData.isCheckActive(instance.type, player)){ // TODO: differentiate sub checks maybe or add extra permissions, later. for (final Enchantment ench : new HashSet<Enchantment>(enchantments.keySet())){ stack.removeEnchantment(ench); } // TODO: actions and similar. return true; } } return false; }
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(); } }
@EventHandler public static void addEnchantment(ItemInfoEvent event) { ItemStack item = event.getItem(); ItemMeta meta = item.getItemMeta(); CommandSender sender = event.getSender(); for (Map.Entry<Enchantment, Integer> enchantment : item.getEnchantments().entrySet()) { sender.sendMessage(ChatColor.AQUA + capitalizeFirstLetter(enchantment.getKey().getName(), '_') + ' ' + toRoman(enchantment.getValue())); } if (meta instanceof EnchantmentStorageMeta) { for (Map.Entry<Enchantment, Integer> enchantment : ((EnchantmentStorageMeta) meta).getStoredEnchants().entrySet()) { sender.sendMessage(ChatColor.YELLOW + capitalizeFirstLetter(enchantment.getKey().getName(), '_') + ' ' + toRoman(enchantment.getValue())); } } }
/** * @param item */ public ItemStackEntry(ItemStack item) { this.typeId = item.getTypeId(); this.data = item.getData().getData(); this.durability = item.getDurability(); this.enchantments = item.getEnchantments(); this.amount = item.getAmount(); }
ret += "dur-" + i.getDurability() + "|"; ret += "c-" + i.getAmount() + "|"; if(!i.getEnchantments().isEmpty()){ ret += "enc-"; for(Enchantment e : i.getEnchantments().keySet()){ ret += "["; ret += e.getName() + ","; ret += i.getEnchantments().get(e); ret += "]";
/** * * @param e BlockBreakEvent * @since 4.2.0 */ @EventHandler public void onBlockBreak(BlockBreakEvent e) { List<ItemStack> drops = new ArrayList<ItemStack>(); ItemStack item = e.getPlayer().getInventory().getItemInMainHand(); int fortune = 1; if (item != null) { if (item.getEnchantments().containsKey(Enchantment.LOOT_BONUS_BLOCKS) && !item.getEnchantments().containsKey(Enchantment.SILK_TOUCH)) { fortune = SlimefunStartup.randomize(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1; if (fortune <= 0) fortune = 1; fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + SlimefunStartup.randomize(5) : 1) * (fortune + 1); } if (!item.getEnchantments().containsKey(Enchantment.SILK_TOUCH) && e.getBlock().getType().toString().endsWith("_ORE")) { if (Talisman.checkFor(e, SlimefunItem.getByID("MINER_TALISMAN"))) { if (drops.isEmpty()) drops = (List<ItemStack>) e.getBlock().getDrops(); for (ItemStack drop : new ArrayList<ItemStack>(drops)) { if (!drop.getType().isBlock()) drops.add(new CustomItem(drop, fortune * 2)); } } } } } }
private ItemStack removeEnchantments(ItemStack itemStack) { ItemStack strippedItem = itemStack.clone(); for (Enchantment enchantment : itemStack.getEnchantments().keySet()) { strippedItem.removeEnchantment(enchantment); } if (Slimefun.isEmeraldEnchantsInstalled()) { for(ItemEnchantment enchantment : EmeraldEnchants.getInstance().getRegistry().getEnchantments(itemStack)){ EmeraldEnchants.getInstance().getRegistry().applyEnchantment(strippedItem, enchantment.getEnchantment(), 0); } } return strippedItem; } }
Player player = getPlayer(); Map<Enchantment, Integer> enchants = item.getEnchantments(); Map<Enchantment, Integer> newEnchants = item.getEnchantments();
void playSonicSound(Player player, long now, long cooldown, String sound) { if ((!timeout.containsKey(player.getUniqueId()) || timeout.get(player.getUniqueId()) < now)) { ItemMeta im = player.getInventory().getItemInMainHand().getItemMeta(); im.addEnchant(Enchantment.DURABILITY, 1, true); im.addItemFlags(ItemFlag.values()); player.getInventory().getItemInMainHand().setItemMeta(im); timeout.put(player.getUniqueId(), now + cooldown); TARDISSounds.playTARDISSound(player.getLocation(), sound); plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { ItemStack is = player.getInventory().getItemInMainHand(); if (is.hasItemMeta()) { ItemMeta im1 = is.getItemMeta(); if (im1.hasDisplayName() && ChatColor.stripColor(im1.getDisplayName()).equals("Sonic Screwdriver")) { player.getInventory().getItemInMainHand().getEnchantments().keySet().forEach((e) -> player.getInventory().getItemInMainHand().removeEnchantment(e)); } else { // find the screwdriver in the player's inventory removeSonicEnchant(player.getInventory()); } } else { // find the screwdriver in the player's inventory removeSonicEnchant(player.getInventory()); } }, (cooldown / 50L)); } }
ItemStack helmet = inventory.getHelmet(); if (helmet != null && helmet.getType() == Material.PUMPKIN) { Map<Enchantment, Integer> enchantments = helmet.getEnchantments(); for (Map.Entry<Enchantment, Integer> entry : enchantments.entrySet()) { if (entry.getKey().equals(Enchantment.BINDING_CURSE)) {
if (e.getPlayer().getInventory().getItemInMainHand().getEnchantments().containsKey(Enchantment.DURABILITY)) { if (SlimefunStartup.randomize(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer());
public static void saveItem(DataKey key, ItemStack item) { if (item == null) { item = new ItemStack(Material.AIR); } migrateForSave(key); if (SpigotUtil.isUsing1_13API()) { key.setString("type_namespace", item.getType().getKey().getNamespace()); key.setString("type_key", item.getType().getKey().getKey()); } else { key.setString("type", item.getType().name()); } key.setInt("amount", item.getAmount()); key.setInt("durability", item.getDurability()); if (item.getData() != null) { key.setInt("mdata", item.getData().getData()); } if (item.hasItemMeta()) { ItemMeta meta = item.getItemMeta(); serialiseMeta(key.getRelative("meta"), meta); } else { key.removeKey("meta"); } serialiseEnchantments(key.getRelative("enchantments"), item.getEnchantments()); }