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

Помогите не вешается nbt тег

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

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

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

    Баллы:
    76
    Всем привет.

    Создаю я обычный gui, добавляю туды предметы из конфига с помощью цикла..
    На каждый из предметов я вешаю тег.. Но при открытии меню игроку, ничего не открывается, а в консоль выводится ошибка
    PHP:
    Caused byjava.lang.NullPointerExceptionNull string not allowed
        at java
    .util.Objects.requireNonNull(Unknown Source) ~[?:1.8.0_181]
        
    at net.minecraft.server.v1_12_R1.NBTTagString.<init>(SourceFile:22) ~[paper-1.12.2.jar:git-Paper-1615]
        
    at net.minecraft.server.v1_12_R1.NBTTagCompound.setString(NBTTagCompound.java:122) ~[paper-1.12.2.jar:git-Paper-1615]
        
    at ru.rezero.townybuildsreborn.utils.NBTHandler.addString(NBTHandler.java:27) ~[?:?]
        
    at ru.rezero.townybuildsreborn.menuUtils.TownBuildsMenu.setItems(TownBuildsMenu.java:55) ~[?:?]
        
    at ru.rezero.townybuildsreborn.menuUtils.TownBuildsMenu.openInventory(TownBuildsMenu.java:42) ~[?:?]
        
    at ru.rezero.townybuildsreborn.commands.TownBuildsCommand.onCommand(TownBuildsCommand.java:48) ~[?:?]
        
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[paper-1.12.2.jar:git-Paper-1615]
        ... 
    15 more
    PHP:
    NBTHandler.addString(itemStack"branch"iterableBuild.getString("branch"));
    NBTHandler.addString(itemStack"buildName"iterableBuild.toString());
    NBTHandler.addString(itemStack"required"iterableBuild.getString("required"));
    NBTHandler.addDouble(itemStack"cost"iterableBuild.getDouble("cost"));
    PHP:
    public static NBTTagCompound getTag(org.*********ventory.ItemStack itemStack) {
            
    net.minecraft.server.v1_12_R1.ItemStack itemNms CraftItemStack.asNMSCopy(itemStack);
            
    NBTTagCompound tag;
            if(
    itemNms.hasTag()) {
                
    tag itemNms.getTag();
            } else {
                
    tag = new NBTTagCompound();
            }
            return 
    tag;
        }

        public static 
    org.*********ventory.ItemStack setTag(org.*********ventory.ItemStack itemNBTTagCompound tag) {
            
    net.minecraft.server.v1_12_R1.ItemStack itemNms CraftItemStack.asNMSCopy(item);
            
    itemNms.setTag(tag);
            return 
    CraftItemStack.asBukkitCopy(itemNms);
        }

        public static 
    org.*********ventory.ItemStack addString(org.*********ventory.ItemStack itemString nameString value) {
            
    NBTTagCompound tag NBTHandler.getTag(item);
            
    tag.setString(namevalue);
            return 
    NBTHandler.setTag(itemtag);
        }

        public static 
    org.*********ventory.ItemStack addDouble(org.*********ventory.ItemStack itemString nameDouble value) {
            
    NBTTagCompound tag NBTHandler.getTag(item);
            
    tag.setDouble(namevalue);
            return 
    NBTHandler.setTag(itemtag);
        }

        public static 
    boolean hasString(org.*********ventory.ItemStack itemString name) {
            
    NBTTagCompound tag NBTHandler.getTag(item);
            return 
    tag.hasKey(name);
        }

        public static 
    Double getDouble(org.*********ventory.ItemStack itemString name) {
            
    NBTTagCompound tag NBTHandler.getTag(item);
            return 
    tag.getDouble(name);
        }

        public static 
    String getString(org.*********ventory.ItemStack itemString name) {
            
    NBTTagCompound tag NBTHandler.getTag(item);
            return 
    tag.getString(name);
        }

    PHP:
    tag.setString(namevalue);

    Помогите дурочку =(
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    А где 42 и 55 строки из TownBuildsMenu?
    Подозреваю, что где-то тут тебе возвращается значение null из iterableBuild. Проверяй.
     
  3. Автор темы
    reZero

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

    Баллы:
    76
    PHP:
    setItems();
    PHP:
    NBTHandler.addString(itemStack"branch"iterableBuild.getString("branch"));
    PHP:
    for(String build config.getConfigurationSection("builds").getKeys(false)) {
                
    ConfigurationSection iterableBuild config.getConfigurationSection("builds." build);
                if(
    iterableBuild != null) {
                    
    String[] item config.getString("builds." build ".showItem").split(",");
                    
    ItemStack itemStack = new ItemStack(Material.matchMaterial(item[0]), Integer.parseInt(item[2]), Short.parseShort(item[1]));
                    
    ItemMeta itemMeta itemStack.getItemMeta();
                    
    itemMeta.setDisplayName(setColor(iterableBuild.getString("name")));
                    
    itemMeta.setLore(colorizeLore(build));
                    
    itemStack.setItemMeta(itemMeta);
                    
    NBTHandler.addString(itemStack"branch"iterableBuild.getString("branch"));
                    
    NBTHandler.addString(itemStack"buildName"iterableBuild.toString());
                    
    NBTHandler.addString(itemStack"required"iterableBuild.getString("required"));
                    
    NBTHandler.addDouble(itemStack"cost"iterableBuild.getDouble("cost"));
                    
    int slot iterableBuild.getInt("x") + iterableBuild.getInt("y");
                    
    getInventory().setItem(slotitemStack);
                }
            }
    Как ты видишь, я уже попробовал проверить iterableBuild на null, но результатов это не дало. Все равно выскакивает та же ошибка

    UPD: понял в чем трабл. У меня не в каждой секции, которую я перебираю, есть эти строки, которые я юзаю для тега. Стал проверять из на null и заработало.
    Но есть уже другой трабл.
    Когда я открываю меню, на предметах всего 1 тег, изначальный, а я вешаю их как минимум 3, получается, они не вешаются
    upload_2019-7-5_12-52-56.png
     
    Последнее редактирование: 5 июл 2019
  4. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Ну и костыли же твой NBTHandler
     
  5. Автор темы
    reZero

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

    Баллы:
    76
    Окей, скажи как нужно "не костыльно" играться с nbt
     
  6. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Юзать 1.13+ или сделать по-нормальному интерфейсы для прокси-оберток нмс классов.
     
  7. Автор темы
    reZero

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

    Баллы:
    76
    И для чего этот гемор?
     
Статус темы:
Закрыта.

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