1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как игроку выдать книгу зачарования.

Тема в разделе "Разработка плагинов для новичков", создана пользователем Kloper, 21 июл 2019.

Статус темы:
Закрыта.
  1. Автор темы
    Kloper

    Kloper Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    f3azzy
    Привет :D

    Нужно выдать игроку книгу зачарования, чтобы он мог в наковальне с помощью неё зачаровать предмет.

    Пытался выдать обычную книгу зачарования, и через мета-данные наложил на неё зачарования, но в наковальне она ничего не хотела чаровать.

    Вот мой говно код:

    Код:
    ItemStack book12 = new ItemStack(Material.ENCHANTED_BOOK);
                ItemMeta bookMeta1 = book12.getItemMeta();
                bookMeta1.addEnchant(Enchantment.LOOT_BONUS_BLOCKS, 1, true);
                book12.setItemMeta(bookMeta1);
                p.getInventory().addItem(book12);
     
  2. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Потому что ты накладываешь на книгу зачарование, как на обычный предмет - как остроту на меч, например.
    Но ты же понимаешь, что если книгой на удачу ломать гравий - больше кремня ты не получишь?
    Тебе надо хранить информацию о том, какие зачарования содержит сама книга.
    Для этого используется интерфейс EnchantmentStorageMeta:
    Код:
        public ItemStack createBook(Enchantment enchantment, int level) {
            ItemStack stack = new ItemStack(Material.ENCHANTED_BOOK);
            EnchantmentStorageMeta meta = (EnchantmentStorageMeta) stack.getItemMeta();
            meta.addStoredEnchant(enchantment, level, true); //ignoreRestrictions
            stack.setItemMeta(meta);
            return stack;
        }
     
  3. Автор темы
    Kloper

    Kloper Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    f3azzy
    сделал вот так, всё работает. Спасибо тебе.


    Код:
    ItemStack book = new ItemStack(Material.ENCHANTED_BOOK, 1);
                EnchantmentStorageMeta meta = (EnchantmentStorageMeta)book.getItemMeta();
                meta.addStoredEnchant(Enchantment.LOOT_BONUS_BLOCKS, 1, true);
                book.setItemMeta(meta);
                p.getInventory().addItem(book);
     
Статус темы:
Закрыта.

Поделиться этой страницей