java类org.bukkit.inventory.meta.EnchantmentStorageMeta的实例源码

BookDeenchantListener.java 文件源码 项目:HCFCore 阅读 19 收藏 0 点赞 0 评论 0
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH)
public void onPlayerInteract(PlayerInteractEvent event) {
    if (event.getAction() == Action.LEFT_CLICK_BLOCK && event.hasItem()) {
        // The player didn't click an enchantment table, Creative players will instantly destroy.
        Player player = event.getPlayer();
        if (event.getClickedBlock().getType() == Material.ENCHANTMENT_TABLE && player.getGameMode() != GameMode.CREATIVE) {

            // The player didn't click with an enchanted book.
            ItemStack stack = event.getItem();
            if (stack != null && stack.getType() == Material.ENCHANTED_BOOK) {
                ItemMeta meta = stack.getItemMeta();
                if (meta instanceof EnchantmentStorageMeta) {
                    EnchantmentStorageMeta enchantmentStorageMeta = (EnchantmentStorageMeta) meta;
                    for (Enchantment enchantment : enchantmentStorageMeta.getStoredEnchants().keySet()) {
                        enchantmentStorageMeta.removeStoredEnchant(enchantment);
                    }

                    event.setCancelled(true);
                    player.setItemInHand(EMPTY_BOOK);
                    player.sendMessage(ChatColor.GREEN + "You reverted this item to its original form.");
                }
            }
        }
    }
}
BookDeenchantListener.java 文件源码 项目:HCFCore 阅读 21 收藏 0 点赞 0 评论 0
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH)
public void onPlayerInteract(PlayerInteractEvent event) {
    if (event.getAction() == Action.LEFT_CLICK_BLOCK && event.hasItem()) {
        // The player didn't click an enchantment table, Creative players will instantly destroy.
        Player player = event.getPlayer();
        if (event.getClickedBlock().getType() == Material.ENCHANTMENT_TABLE && player.getGameMode() != GameMode.CREATIVE) {

            // The player didn't click with an enchanted book.
            ItemStack stack = event.getItem();
            if (stack != null && stack.getType() == Material.ENCHANTED_BOOK) {
                ItemMeta meta = stack.getItemMeta();
                if (meta instanceof EnchantmentStorageMeta) {
                    EnchantmentStorageMeta enchantmentStorageMeta = (EnchantmentStorageMeta) meta;
                    for (Enchantment enchantment : enchantmentStorageMeta.getStoredEnchants().keySet()) {
                        enchantmentStorageMeta.removeStoredEnchant(enchantment);
                    }

                    event.setCancelled(true);
                    player.setItemInHand(EMPTY_BOOK);
                    player.sendMessage(ChatColor.GREEN + "You reverted this item to its original form.");
                }
            }
        }
    }
}
MinecraftUtils.java 文件源码 项目:VanillaPlus 阅读 26 收藏 0 点赞 0 评论 0
public static ItemStack getRandomEnchant(List<Enchantment>enchants, int amount){
    ItemStack result = new ItemStack(Material.ENCHANTED_BOOK);
    List<Enchantment>left = new ArrayList<Enchantment>(enchants);
    EnchantmentStorageMeta meta = (EnchantmentStorageMeta) result.getItemMeta();
    if(amount > left.size())
        amount = left.size();
    for(int i = 0 ; i < amount && !left.isEmpty() ; i++){
        Enchantment e = VanillaPlusCore.getRandom(left);
        left.remove(e);
        int level = VanillaPlusCore.getRandom().nextInt(100);
        level = level % (e.getMaxLevel()+1-e.getStartLevel())+e.getStartLevel();
        meta.addStoredEnchant(e, level, false);
    }
    result.setItemMeta(meta);
    return result;
}
ExprEnchBookWithEnch.java 文件源码 项目:MundoSK 阅读 17 收藏 0 点赞 0 评论 0
@Override
@Nullable
protected ItemStack[] get(Event event) {
    ItemStack input = book.getSingle(event);
    EnchantmentStorageMeta meta = (EnchantmentStorageMeta) input.getItemMeta();
    final EnchantmentType[] enchs = enchants.getArray(event);
    for (final EnchantmentType ench : enchs) {
        if (meta.hasStoredEnchant(ench.getType())) {
            meta.removeEnchant(ench.getType());
        }
        meta.addStoredEnchant(ench.getType(), ench.getLevel(), true);
    }
    ItemStack result = book.getSingle(event);
    result.setItemMeta(meta);
    return new ItemStack[]{result};
}
XMLItemMeta.java 文件源码 项目:Arcade2 阅读 26 收藏 0 点赞 0 评论 0
public static ItemMeta parse(Element xml, ItemMeta source) {
    if (source instanceof BannerMeta) {
        return parseBanner(xml, (BannerMeta) source);
    } else if (source instanceof BookMeta) {
        return parseBook(xml, (BookMeta) source);
    } else if (source instanceof EnchantmentStorageMeta) {
        return parseEnchantmentStorage(xml, (EnchantmentStorageMeta) source);
    } else if (source instanceof FireworkMeta) {
        return parseFirework(xml, (FireworkMeta) source);
    } else if (source instanceof FireworkEffectMeta) {
        return parseFireworkEffect(xml, (FireworkEffectMeta) source);
    } else if (source instanceof LeatherArmorMeta) {
        return parseLeatherArmor(xml, (LeatherArmorMeta) source);
    } else if (source instanceof MapMeta) {
        return parseMap(xml, (MapMeta) source);
    } else if (source instanceof PotionMeta) {
        return parsePotion(xml, (PotionMeta) source);
    } else if (source instanceof SkullMeta) {
        return parseSkull(xml, (SkullMeta) source);
    } else if (source instanceof SpawnEggMeta) {
        return parseSpawnEgg(xml, (SpawnEggMeta) source);
    }

    return source;
}
XMLItemMeta.java 文件源码 项目:Arcade2 阅读 38 收藏 0 点赞 0 评论 0
public static EnchantmentStorageMeta parseEnchantmentStorage(Element xml, EnchantmentStorageMeta source) {
    Element book = xml.getChild("enchanted-book");
    if (book != null) {
        for (Element enchantment : book.getChildren("enchantment")) {
            Enchantment type = Enchantment.getByName(XMLParser.parseEnumValue(enchantment.getTextNormalize()));
            int level = 1;

            try {
                Attribute levelAttribute = enchantment.getAttribute("level");
                if (levelAttribute != null) {
                    level = levelAttribute.getIntValue();
                }
            } catch (DataConversionException ignored) {
            }

            source.addStoredEnchant(type, level, false);
        }
    }

    return source;
}
NmsProxyTileChest.java 文件源码 项目:Pure 阅读 17 收藏 0 点赞 0 评论 0
private void addMcEnchant(final EnchantmentStorageMeta meta, final by enchNbt) {
    try {
        // Here we are not using (dh.e(String)) because it does not fail correctly:
        // it returns 0 instead of throwing an exception.
        // Instead, we use (dw.e()). This way either the cast will fail or a NPE will be thrown.
        final short enchId = ((cj) enchNbt.a("r1_6_4/net/minecraft/server/id")).a;
        final short enchLvl = ((cj) enchNbt.a("lvl")).a;
        @SuppressWarnings("deprecation")
        final Enchantment ench = Enchantment.getById(enchId);
        if (ench == null) {
            Log.warn("Unknown Enchantment ID (" + enchId + "), ignored.");
        } else {
            meta.addStoredEnchant(ench, enchLvl, false);
        }
    } catch (final RuntimeException e) {
        if (e instanceof ClassCastException || e instanceof NullPointerException) {
            Log.error("Failed to add Enchantment to Enchanted Book, ignored.\nThe NBT was: " + enchNbt, e);
        } else {
            throw e;
        }
    }
}
EnchantUtils.java 文件源码 项目:NucleusFramework 阅读 21 收藏 0 点赞 0 评论 0
/**
 * Add an enchantment to an {@link ItemStack}.
 *
 * @param stack    The item stack.
 * @param enchant  The enchantment to add.
 * @param level    The enchantment level.
 */
public static void addEnchantment(ItemStack stack, Enchantment enchant, int level) {
    PreCon.notNull(stack);
    PreCon.notNull(enchant);
    PreCon.positiveNumber(level);

    ItemMeta meta = stack.getItemMeta();

    // check for enchantment storage items such as enchanted books
    if (meta instanceof EnchantmentStorageMeta) {
        EnchantmentStorageMeta storage = (EnchantmentStorageMeta)meta;
        storage.addStoredEnchant(enchant, level, true);
        stack.setItemMeta(storage);
    }
    else {
        stack.addUnsafeEnchantment(enchant, level);
    }
}
ItemMetaUtil.java 文件源码 项目:NPlugins 阅读 23 收藏 0 点赞 0 评论 0
/**
 * Gets a String representing all special meta of this ItemStack, if any.
 *
 * @param is         the ItemStack
 * @param separators the separators
 *
 * @return a String representing this ItemStack's special meta or an empty String
 *
 * @throws InventoryUtilException if something goes wrong
 */
public static String getSpecialMetaString(final ItemStack is, final String[] separators) throws InventoryUtilException {
    final ItemMeta meta = is.getItemMeta();

    if (meta instanceof BookMeta) {
        return getBookMetaString((BookMeta)meta);
    } else if (meta instanceof EnchantmentStorageMeta) {
        return getEnchantmentStorageMetaString((EnchantmentStorageMeta)meta, separators);
    } else if (meta instanceof FireworkEffectMeta) {
        return getFireworkEffectMetaString((FireworkEffectMeta)meta);
    } else if (meta instanceof FireworkMeta) {
        return getFireworkMetaString((FireworkMeta)meta, separators);
    } else if (meta instanceof LeatherArmorMeta) {
        return getLeatherArmorMetaString((LeatherArmorMeta)meta);
    } else if (meta instanceof MapMeta) {
        return getMapMetaString((MapMeta)meta);
    } else if (meta instanceof PotionMeta) {
        return getPotionMetaString((PotionMeta)meta, separators);
    } else if (meta instanceof SkullMeta) {
        return getSkullMetaString((SkullMeta)meta);
    } else {
        throw new InventoryUtilException("Unknown Meta type '" + meta.getClass().getName() + "', please report this to the author (Ribesg)!");
    }
}
ItemMetaUtil.java 文件源码 项目:NPlugins 阅读 18 收藏 0 点赞 0 评论 0
private static String getEnchantmentStorageMetaString(final EnchantmentStorageMeta meta, final String[] separators) {
    if (meta.getStoredEnchants().isEmpty()) {
        return "";
    } else {
        final StringBuilder enchantmentsStringBuilder = new StringBuilder();
        final Map<Enchantment, Integer> sortedEnchantmentMap = new TreeMap<>(EnchantmentUtil.ENCHANTMENT_COMPARATOR);
        sortedEnchantmentMap.putAll(meta.getStoredEnchants());
        for (final Map.Entry<Enchantment, Integer> e : sortedEnchantmentMap.entrySet()) {
            enchantmentsStringBuilder.append(e.getKey().getName());
            enchantmentsStringBuilder.append(separators[2]);
            enchantmentsStringBuilder.append(e.getValue());
            enchantmentsStringBuilder.append(separators[1]);
        }
        return enchantmentsStringBuilder.substring(0, enchantmentsStringBuilder.length() - separators[1].length());
    }
}
EnchantedBookCustomItem.java 文件源码 项目:uppercore 阅读 16 收藏 0 点赞 0 评论 0
@Override
public void processMeta(Player player, ItemMeta m) {
    super.processMeta(player, m);
    EnchantmentStorageMeta meta = (EnchantmentStorageMeta) m;
    for(Map.Entry<Enchantment, PlaceholderValue<Integer>> ench : storedEnchantments.entrySet())
        meta.addStoredEnchant(ench.getKey(), ench.getValue().resolve(player), true);
}
ItemMaker.java 文件源码 项目:WC 阅读 27 收藏 0 点赞 0 评论 0
public EnchantedBookMaker setLores(String... lores) {
    EnchantmentStorageMeta itemMeta = (EnchantmentStorageMeta)this.itemStack.getItemMeta();
    List<String> loresList = new ArrayList<>();
    for (String lore : lores) {
        loresList.add(lore);
    }
    itemMeta.setLore(loresList);
    this.itemStack.setItemMeta(itemMeta);
    return this;
}
ShopItem.java 文件源码 项目:KingdomFactions 阅读 24 收藏 0 点赞 0 评论 0
private void addEnchantments(String enchantments, String level, ItemStack is) {
    try {
    if (enchantments == null || level == null)
        return;

    ArrayList<String> enchants = new ArrayList<String>(Arrays.asList(enchantments.split("!")));
    ArrayList<String> levels = new ArrayList<String>(Arrays.asList(level.split("!")));

    if (enchantments.isEmpty())
        return;

    for (int i = 0; i < enchants.size(); i++) {
        if (!enchants.get(i).equalsIgnoreCase(" ") && !enchants.get(i).equalsIgnoreCase("")) {
            if (is.getType() == Material.ENCHANTED_BOOK) {
                EnchantmentStorageMeta meta = (EnchantmentStorageMeta) is.getItemMeta();
                meta.addStoredEnchant(Enchantment.getByName(enchants.get(i)), Integer.parseInt(levels.get(i)), true);

                is.setItemMeta(meta);
            } else
                is.addEnchantment(Enchantment.getByName(enchants.get(i)), Integer.parseInt(levels.get(i)));
        }
    }

    enchants.clear();
    levels.clear();
    } catch(Exception e) {
        if(e instanceof java.lang.IllegalArgumentException) {
        Logger.ERROR.log("couldn't add enchantment " + enchantments + " level " + level + " to " + is.getType().toString());
        Logger.ERROR.log("Cause: java.lang.IllegalArgumentException");
        } else {
        e.printStackTrace();
        }
    }
}
SaveableEnchantBook.java 文件源码 项目:SaveableSerializing 阅读 21 收藏 0 点赞 0 评论 0
@Override
public void setTo(ItemMeta meta) {
    if(meta instanceof EnchantmentStorageMeta){
        EnchantmentStorageMeta enc = (EnchantmentStorageMeta) meta;
        for(Enchants a : array)
        {
            Enchantment ment = Enchantment.getById(a.id);
            if(ment != null)
                enc.addStoredEnchant(ment,a.level,true);
        }
    }
}
SaveableEnchantBook.java 文件源码 项目:SaveableSerializing 阅读 21 收藏 0 点赞 0 评论 0
@Override
public SubMeta setFrom(ItemMeta meta) {
    if(meta instanceof EnchantmentStorageMeta){
        EnchantmentStorageMeta enc = (EnchantmentStorageMeta) meta;
        for(Enchantment a : enc.getStoredEnchants().keySet())
            array.add(new Enchants(a,enc.getStoredEnchants().get(a)));
    }
    return this;
}
SaveableEnchantBook.java 文件源码 项目:SaveableSerializing 阅读 24 收藏 0 点赞 0 评论 0
@Override
public void setTo(ItemMeta meta) {
    if(meta instanceof EnchantmentStorageMeta){
        EnchantmentStorageMeta enc = (EnchantmentStorageMeta) meta;
        for(Enchants a : array)
        {
            Enchantment ment = Enchantment.getById(a.id);
            if(ment != null)
                enc.addStoredEnchant(ment,a.level,true);
        }
    }
}
SaveableEnchantBook.java 文件源码 项目:SaveableSerializing 阅读 24 收藏 0 点赞 0 评论 0
@Override
public SubMeta setFrom(ItemMeta meta) {
    if(meta instanceof EnchantmentStorageMeta){
        EnchantmentStorageMeta enc = (EnchantmentStorageMeta) meta;
        for(Enchantment a : enc.getStoredEnchants().keySet())
            array.add(new Enchants(a,enc.getStoredEnchants().get(a)));
    }
    return this;
}
ExprEnchantLevelInEnchBook.java 文件源码 项目:MundoSK 阅读 18 收藏 0 点赞 0 评论 0
@Override
@Nullable
protected Integer[] get(Event event) {
    ItemStack input = book.getSingle(event);
    EnchantmentStorageMeta meta = (EnchantmentStorageMeta) input.getItemMeta();
    return new Integer[]{meta.getStoredEnchantLevel(enchant.getSingle(event).getType())};
}
ExprEnchantLevelInEnchBook.java 文件源码 项目:MundoSK 阅读 22 收藏 0 点赞 0 评论 0
public void change(Event event, Object[] delta, Changer.ChangeMode mode){
    EnchantmentStorageMeta meta = (EnchantmentStorageMeta) book.getSingle(event).getItemMeta();
    Enchantment ench = enchant.getSingle(event).getType();
    Integer level = meta.getStoredEnchantLevel(ench);
    Logging.info("Initial level: " + level);
    if (meta.hasStoredEnchant(ench)) meta.removeStoredEnchant(ench);
    if (mode == ChangeMode.SET) level = ((Number) delta[0]).intValue();
    if (mode == ChangeMode.ADD) level += ((Number) delta[0]).intValue();
    if (mode == ChangeMode.REMOVE) level -= ((Number) delta[0]).intValue();
    Logging.info("New level: " + level);
    if (level > 0) meta.addStoredEnchant(ench, level, true);
    book.getSingle(event).setItemMeta(meta);
}
ExprEnchantsInEnchBook.java 文件源码 项目:MundoSK 阅读 21 收藏 0 点赞 0 评论 0
@Override
@Nullable
protected EnchantmentType[] get(Event event) {
    ItemStack input = book.getSingle(event);
    EnchantmentStorageMeta meta = (EnchantmentStorageMeta) input.getItemMeta();
    Map<Enchantment, Integer> map = meta.getStoredEnchants();
    final List<EnchantmentType> l = new ArrayList<EnchantmentType>();
    for (Map.Entry<Enchantment, Integer> ansh : map.entrySet()) {
        l.add(new EnchantmentType(ansh.getKey(), ansh.getValue()));
    }
    return l.toArray((EnchantmentType[])new EnchantmentType[l.size()]);
}
ExprEnchantsInEnchBook.java 文件源码 项目:MundoSK 阅读 20 收藏 0 点赞 0 评论 0
public Iterator<EnchantmentType> iterator(Event event) {
    ItemStack input = book.getSingle(event);
    EnchantmentStorageMeta meta = (EnchantmentStorageMeta) input.getItemMeta();
    Map<Enchantment, Integer> map = meta.getStoredEnchants();
    final List<EnchantmentType> l = new ArrayList<EnchantmentType>();
    for (Map.Entry<Enchantment, Integer> ansh : map.entrySet()) {
        l.add(new EnchantmentType(ansh.getKey(), ansh.getValue()));
    }
    return l.iterator();
}
NmsProxyTileChest.java 文件源码 项目:Pure 阅读 19 收藏 0 点赞 0 评论 0
@Override
public void a(final int index, final ye yeArg) {
    /*
     * (ye.d)   is the obfuscated field  name of ItemStack.id
     * (ye.b)   is the obfuscated field  name of ItemStack.stackSize
     * (ye.k()) is the obfuscated method name of ItemStack.getItemDamage()
     */
    @SuppressWarnings("deprecation")
    final ItemStack item = new ItemStack(
        yeArg.d,
        yeArg.b,
        (short) yeArg.k()
    );

    /*
     * (by)           is the obfuscated class  name of NBTTagCompound
     * (ye.d)         is the obfuscated field  name of ItemStack.stackTagCompound
     * (cg)           is the obfuscated class  name of NBTTagList
     * (by.a(String)) is the obfuscated method name of NBTTagCompound.getTag(String)
     * (cg.c())       is the obfuscated method name of NBTTagList.tagCount()
     * (cg.b(int))    is the obfuscated method name of NBTTagList.getCompoundTagAt(int)
     */
    // Enchanted Books can be generated, let's handle that.
    if (item.getType() == Material.ENCHANTED_BOOK) {
        final by itemNbt = yeArg.e;
        if (itemNbt != null) {
            final cg storedEnchNbt = (cg) itemNbt.a("StoredEnchantments");
            if (storedEnchNbt != null && storedEnchNbt.c() > 0) {
                final EnchantmentStorageMeta meta = (EnchantmentStorageMeta) item.getItemMeta();
                for (int i = 0; i < storedEnchNbt.c(); i++) {
                    this.addMcEnchant(meta, (by) storedEnchNbt.b(i));
                }
                item.setItemMeta(meta);
            }
        }
    }

    this.inv.setItem(index, item);
}
ItemMetaTest.java 文件源码 项目:CraftBukkit 阅读 24 收藏 0 点赞 0 评论 0
@Test
public void testConflictingStoredEnchantment() {
    EnchantmentStorageMeta itemMeta = (EnchantmentStorageMeta) Bukkit.getItemFactory().getItemMeta(Material.ENCHANTED_BOOK);
    assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.DURABILITY), is(false));

    itemMeta.addStoredEnchant(Enchantment.SILK_TOUCH, 1, false);
    assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.DURABILITY), is(false));
    assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.LOOT_BONUS_BLOCKS), is(true));
    assertThat(itemMeta.hasConflictingStoredEnchant(null), is(false));
}
ItemMetaTest.java 文件源码 项目:CraftBukkit 阅读 23 收藏 0 点赞 0 评论 0
@Test
public void testConflictingStoredEnchantments() {
    EnchantmentStorageMeta itemMeta = (EnchantmentStorageMeta) Bukkit.getItemFactory().getItemMeta(Material.ENCHANTED_BOOK);
    itemMeta.addStoredEnchant(Enchantment.DURABILITY, 6, true);
    itemMeta.addStoredEnchant(Enchantment.DIG_SPEED, 6, true);
    assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.LOOT_BONUS_BLOCKS), is(false));

    itemMeta.addStoredEnchant(Enchantment.SILK_TOUCH, 1, false);
    assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.LOOT_BONUS_BLOCKS), is(true));
    assertThat(itemMeta.hasConflictingStoredEnchant(null), is(false));
}
BookSerialization.java 文件源码 项目:NexusInventory 阅读 22 收藏 0 点赞 0 评论 0
/**
 * Get EnchantmentStorageMeta from a JSON string
 *
 * @param json The string to use
 * @return The EnchantmentStorageMeta constructed, null if an error occurred
 */
public static EnchantmentStorageMeta getEnchantedBookMeta(String json) {
    try {
        return getEnchantedBookMeta(new JSONObject(json));
    } catch (JSONException e) {
        e.printStackTrace();
        return null;
    }
}
BookSerialization.java 文件源码 项目:NexusInventory 阅读 20 收藏 0 点赞 0 评论 0
/**
 * Serialize EnchantmentStorageMeta into JSONObject form.
 *
 * @param meta The EnchantmentStorageMeta to serialize
 * @return The JSONObject form of the given EnchantmentStorageMeta
 */
public static JSONObject serializeEnchantedBookMeta(EnchantmentStorageMeta meta) {
    try {
        JSONObject root = new JSONObject();
        String enchants = EnchantmentSerialization.serializeEnchantments(meta.getStoredEnchants());
        root.put("enchantments", enchants);
        return root;
    } catch (JSONException e) {
        e.printStackTrace();
        return null;
    }
}
BookSerialization.java 文件源码 项目:NexusInventory 阅读 24 收藏 0 点赞 0 评论 0
/**
 * Serialize EnchantmentStorageMeta into string form.
 *
 * @param meta         The EnchantmentStorageMet to use
 * @param pretty       Whether the resulting string should be 'pretty' or not
 * @param indentFactor The amount of spaces to use for a tab
 * @return The serialized string
 */
public static String serializeEnchantedBookMetaAsString(EnchantmentStorageMeta meta, boolean pretty, int indentFactor) {
    try {
        if (pretty) {
            return serializeEnchantedBookMeta(meta).toString(indentFactor);
        } else {
            return serializeEnchantedBookMeta(meta).toString();
        }
    } catch (JSONException e) {
        e.printStackTrace();
        return null;
    }
}
ItemUtils.java 文件源码 项目:ShopChest 阅读 27 收藏 0 点赞 0 评论 0
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();
    }
}
ItemMetaTest.java 文件源码 项目:Craftbukkit 阅读 29 收藏 0 点赞 0 评论 0
@Test
public void testConflictingStoredEnchantment() {
    EnchantmentStorageMeta itemMeta = (EnchantmentStorageMeta) Bukkit.getItemFactory().getItemMeta(Material.ENCHANTED_BOOK);
    assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.DURABILITY), is(false));

    itemMeta.addStoredEnchant(Enchantment.SILK_TOUCH, 1, false);
    assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.DURABILITY), is(false));
    assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.LOOT_BONUS_BLOCKS), is(true));
    assertThat(itemMeta.hasConflictingStoredEnchant(null), is(false));
}
ItemMetaTest.java 文件源码 项目:Craftbukkit 阅读 24 收藏 0 点赞 0 评论 0
@Test
public void testConflictingStoredEnchantments() {
    EnchantmentStorageMeta itemMeta = (EnchantmentStorageMeta) Bukkit.getItemFactory().getItemMeta(Material.ENCHANTED_BOOK);
    itemMeta.addStoredEnchant(Enchantment.DURABILITY, 6, true);
    itemMeta.addStoredEnchant(Enchantment.DIG_SPEED, 6, true);
    assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.LOOT_BONUS_BLOCKS), is(false));

    itemMeta.addStoredEnchant(Enchantment.SILK_TOUCH, 1, false);
    assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.LOOT_BONUS_BLOCKS), is(true));
    assertThat(itemMeta.hasConflictingStoredEnchant(null), is(false));
}


问题


面经


文章

微信
公众号

扫码关注公众号