Помогите NoSuchMethod error.

pro100koder

Активный участник
Пользователь
Баллы
76
Короче, всегда всё работало, но сейчас что-то сломалось :/ В общем, консоль жалуется на строчку 60
Код:
return ItemUtil.create(Material.WOOD_SPADE, 1, (byte) 0, ChatColor.GOLD+"Лопата", retlore, ench, elvl, new String[]{"unbreak"});
с ошибкой "NoSuchMethodError". Что ж, вот и сам метод в студию:
Код:
public static ItemStack create(Material material, int amount, byte data, String DisplayName, String[] lore1, Enchantment[] ench, int[] lvl, String[] tags) {
        ItemStack item = new ItemStack(material, amount, data);
        ItemMeta meta = item.getItemMeta();
        if(DisplayName != null){
            meta.setDisplayName(DisplayName);
        }
        ArrayList<String> lore = new ArrayList<String>();
        if(lore1 != null){
            for(int i=0;i<lore1.length;i++){
                lore.add(lore1[i]);
            }
        }
        meta.setLore(lore);
        if(tags != null){
            for(String st:tags){
                if(st.equals("unbreak")){
                    meta.setUnbreakable(true);
                }
            }
        }
        if(ench != null){
            for(int i=0;i<ench.length;i++){
            meta.addEnchant(ench[i], lvl[i], true);
            }
        }
        item.setItemMeta(meta);
        return item;
    }
При чём, если я буду делать такой же предмет, но без data, то всё работает! Но я не хочу терять возможность выставлять дату. Жалуется именно на эту, и не на какую строку... Если бы в ошибке указали, какая именно строчка глючит в itemUtil-e, я бы эту тему не создавал. А так, она жалуется именно на слово "create", т. е. на весь метод :/
 
Боже... Я снова допустил ошибку X Y... Окей, проблема оказывается была не в data, а в этом самом setUnbreakable(true);... Как выставить предмету неразрушимость, если meta.setUnbreakable не работает? Ну или правильно ли я понял, что проблема именно в этом...
И опять я выяснил, что снова допустил ту же ошибку X Y... Проблема походу не в том, что не работает этот метод... Я не знаю, в чём... Просто если я добавляю эти тэги несчастные, даже если null, да даже если игнорировать наличие этих тэгов в самом itemutil-е, просто ну вот нет и всё тут. Даже не знаю... Попробую тогда на boolean перенести... Всё равно мне эти тэги ток для унбрика нужны были...
 
И опять я выяснил, что снова допустил ту же ошибку X Y... Проблема походу не в том, что не работает этот метод... Я не знаю, в чём... Просто если я добавляю эти тэги несчастные, даже если null, да даже если игнорировать наличие этих тэгов в самом itemutil-е, просто ну вот нет и всё тут. Даже не знаю... Попробую тогда на boolean перенести... Всё равно мне эти тэги ток для унбрика нужны были...
Всё. Сдаюсь. Нет больше абсолютно никаких вариантов, как это решить. Придётся походу костылить...
 
Всё. Сдаюсь. Нет больше абсолютно никаких вариантов, как это решить. Придётся походу костылить...
Код в первом посте актуальный? Или дай тот который у тебя сейчас.
 
Вот на подсмотри как у меня.

Код:
    public ItemStack getStack() {
        ItemStack stack = new ItemStack(Material.valueOf(material.toUpperCase()), amount, (short) date);
        ItemMeta meta = stack.getItemMeta();
        if (customname != null) {
            meta.setDisplayName(customname);
        }
        if (lore != null) {
            meta.setLore(lore);
        }
        if (enchant != null) {
            for (String ench : enchant.keySet()) {
                meta.addEnchant(Enchantment.getByName(ench.toUpperCase()), enchant.get(ench), true);
            }
        }
        if (flags != null) {
            for (String flag : flags) {
                Set<ItemFlag> f = meta.getItemFlags();
                f.add(ItemFlag.valueOf(flag));
            }
        }
        if (unbreak) {
            meta.setUnbreakable(true);
        }
        stack.setItemMeta(meta);
        return stack;
    }
 
Код в первом посте актуальный? Или дай тот который у тебя сейчас.
Вот последний вариант itemutil, который работает:
Код:
package utils;

import java.util.ArrayList;

import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.*********ventory.ItemFlag;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;
import org.*********ventory.meta.PotionMeta;
import org.bukkit.potion.PotionEffect;

public class ItemUtil {
    public static ItemStack create(Material material, int amount, byte data, String DisplayName, String[] lore1, Enchantment[] ench, int[] lvl) {
        ItemStack item = new ItemStack(material, amount, data);
        ItemMeta meta = item.getItemMeta();
        if(DisplayName != null){
            meta.setDisplayName(DisplayName);
        }
        ArrayList<String> lore = new ArrayList<String>();
        if(lore1 != null){
            for(int i=0;i<lore1.length;i++){
                lore.add(lore1[i]);
            }
        }
        meta.setLore(lore);
        if(ench != null){
            for(int i=0;i<ench.length;i++){
            meta.addEnchant(ench[i], lvl[i], true);
            }
        }
        item.setItemMeta(meta);
        return item;
    }
    public static ItemStack create(Material material, String DisplayName){
        return create(material, 1, (byte)0, DisplayName, null, null, null);
    }
    public static ItemStack create(Material material, int amount, byte data){
        return create(material, amount, data, null, null, null, null);
    }
    public static ItemStack create(Material material, int amount, String DisplayName, String[] lore1){
        return create(material, amount, (byte) 0, DisplayName, lore1, null, null);
    }
    public static ItemStack create(Material material, int amount, String DisplayName, String[] lore1, Enchantment[] ench, int[] lvl){
        return create(material, amount, (byte) 0, DisplayName, lore1, ench, lvl);
    }
    public static ItemStack createPotion(Material material, int amount, String DisplayName, String[] lore1, int r, int g, int b, PotionEffect[] pe) {
        ItemStack item = new ItemStack(material, amount, (byte)0);
        ItemMeta meta = item.getItemMeta();
        if(DisplayName != null){
            meta.setDisplayName(DisplayName);
        }
        ArrayList<String> lore = new ArrayList<String>();
        if(lore1 != null){
            for(int i=0;i<lore1.length;i++){
                lore.add(lore1[i]);
            }
        }
        meta.setLore(lore);
        item.setItemMeta(meta);
        PotionMeta pmeta = (PotionMeta) item.getItemMeta();
        pmeta.setColor(Color.fromRGB(r, g, b));
        pmeta.addItemFlags(ItemFlag.HIDE_POTION_EFFECTS);
        if(pe!=null){
            for(PotionEffect pef:pe){
                pmeta.addCustomEffect(pef, false);
            }
        }
        item.setItemMeta(pmeta);
        return item;
    }
}
А вот те отчаянные попытки что-либо сделать с unbreakable... Даже если в самом методе абсолютно игнорировать наличие boolean unbreakable, всё равно та же ошибка...
Код:
package utils;

import java.util.ArrayList;

import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.*********ventory.ItemFlag;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;
import org.*********ventory.meta.PotionMeta;
import org.bukkit.potion.PotionEffect;

public class ItemUtil {
    public static ItemStack create(Material material, int amount, byte data, String DisplayName, String[] lore1, Enchantment[] ench, int[] lvl) {
        ItemStack item = new ItemStack(material, amount, data);
        ItemMeta meta = item.getItemMeta();
        if(DisplayName != null){
            meta.setDisplayName(DisplayName);
        }
        ArrayList<String> lore = new ArrayList<String>();
        if(lore1 != null){
            for(int i=0;i<lore1.length;i++){
                lore.add(lore1[i]);
            }
        }
        meta.setLore(lore);
        //if(unbreak==true){
        //    meta.setUnbreakable(true);
        //}
        if(ench != null){
            for(int i=0;i<ench.length;i++){
            meta.addEnchant(ench[i], lvl[i], true);
            }
        }
        item.setItemMeta(meta);
        return item;
    }
    public static ItemStack createTool(Material material, String DisplayName, String[] lore1, Enchantment[] ench, int[] lvl) {
        ItemStack item = new ItemStack(material, 1, (short)0);
        ItemMeta meta = item.getItemMeta();
        if(DisplayName != null){
            meta.setDisplayName(DisplayName);
        }
        ArrayList<String> lore = new ArrayList<String>();
        if(lore1 != null){
            for(int i=0;i<lore1.length;i++){
                lore.add(lore1[i]);
            }
        }
        meta.setLore(lore);
        meta.setUnbreakable(true);
        if(ench != null){
            for(int i=0;i<ench.length;i++){
            meta.addEnchant(ench[i], lvl[i], true);
            }
        }
        item.setItemMeta(meta);
        return item;
    }
    /*public static ItemStack create(Material material, String DisplayName){
        return create(material, 1, (byte)0, DisplayName, null, null, null, false);
    }
    public static ItemStack create(Material material, int amount, byte data){
        return create(material, amount, data, null, null, null, null, false);
    }
    public static ItemStack create(Material material, int amount, String DisplayName, String[] lore1){
        return create(material, amount, (byte) 0, DisplayName, lore1, null, null, false);
    }
    public static ItemStack create(Material material, int amount, String DisplayName, String[] lore1, Enchantment[] ench, int[] lvl, boolean unbreak){
        return create(material, amount, (byte) 0, DisplayName, lore1, ench, lvl, unbreak);
    }*/
    public static ItemStack createPotion(Material material, int amount, String DisplayName, String[] lore1, int r, int g, int b, PotionEffect[] pe) {
        ItemStack item = new ItemStack(material, amount, (byte)0);
        ItemMeta meta = item.getItemMeta();
        if(DisplayName != null){
            meta.setDisplayName(DisplayName);
        }
        ArrayList<String> lore = new ArrayList<String>();
        if(lore1 != null){
            for(int i=0;i<lore1.length;i++){
                lore.add(lore1[i]);
            }
        }
        meta.setLore(lore);
        item.setItemMeta(meta);
        PotionMeta pmeta = (PotionMeta) item.getItemMeta();
        pmeta.setColor(Color.fromRGB(r, g, b));
        pmeta.addItemFlags(ItemFlag.HIDE_POTION_EFFECTS);
        if(pe!=null){
            for(PotionEffect pef:pe){
                pmeta.addCustomEffect(pef, false);
            }
        }
        item.setItemMeta(pmeta);
        return item;
    }
}
 
Назад
Верх