Вопрос Не работают листы Enchantment и EnchantmentStorageMeta.

Версия Minecraft
1.20.X

stopping

Пользователь
Сообщения
4
Решения
1
Java:
package org.stopping.eCheck;

import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.HumanEntity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
import org.bukkit.inventory.meta.ItemMeta;

import java.util.ArrayList;
import java.util.Map;

public class event implements Listener {
    @EventHandler
    public void onInv(InventoryClickEvent event) {
        HumanEntity player = event.getWhoClicked();
        ItemStack cursor = event.getCurrentItem();
        ItemMeta meta = cursor.getItemMeta();
        if(meta.hasEnchants()) {
            player.sendMessage("okays");
            Map<Enchantment, Integer> enchants = meta.getEnchants();;
            player.sendMessage("okay");
            for (Map.Entry<Enchantment, Integer> entry : enchants.entrySet()) {
                Enchantment enchant = entry.getKey();
                int level = entry.getValue();
                ItemStack enchantedBook = new ItemStack(Material.ENCHANTED_BOOK);
                EnchantmentStorageMeta bookMeta = (EnchantmentStorageMeta) enchantedBook.getItemMeta();
                bookMeta.addStoredEnchant(enchant, level, true);
                enchantedBook.setItemMeta(bookMeta);
                player.getInventory().addItem(enchantedBook);

            }
            player.sendMessage("da");
        }
    }
}
Добрый день! Я делаю плагин на спиготе 1.20.1. Когда я кликаю по предмету в инвентаре я хотел-бы проверять, есть ли у этого предмета зачарование. Если есть то выдать столько книжек зачарований, сколько всего зачарований у предмета. И зачарования должны быть такие же как у предмета, в единственном экземпляре (не скрещивать).
Для этого я хотел использовать Map - типа Enchantment, что прописано в доках спигота.

Вам необходимо зарегистрироваться для просмотра изображений-вложений


Да, ошибок нет. Но плагин не работает. И скорее всего проблема в строке -
Java:
Map<Enchantment, Integer> enchants = meta.getEnchants();;
,
т.к. я выводил до текст "okay" и после этой строки "okays". Окей выводило, окейс нет.
Буду благодарен за ответ! Извините за потраченное время. Недавно начал изучать спигот.
 
Решение
Хочу оповестить, что все работает корректно.
Моя ошибка была в том, что я кликал по книге с зачарованиями.
А при клике предмета (кирки, лопаты, нагрудника) все обрабатывалось.
Хочу оповестить, что все работает корректно.
Моя ошибка была в том, что я кликал по книге с зачарованиями.
А при клике предмета (кирки, лопаты, нагрудника) все обрабатывалось.
 
Назад
Сверху Снизу