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

  • Автор темы Автор темы reZero
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

reZero

Активный участник
Пользователь
Баллы
76
Всем привет.

Создаю я обычный gui, добавляю туды предметы из конфига с помощью цикла..
На каждый из предметов я вешаю тег.. Но при открытии меню игроку, ничего не открывается, а в консоль выводится ошибка
PHP:
Caused by: java.lang.NullPointerException: Null 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 item, NBTTagCompound 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 item, String name, String value) {
        NBTTagCompound tag = NBTHandler.getTag(item);
        tag.setString(name, value);
        return NBTHandler.setTag(item, tag);
    }

    public static org.*********ventory.ItemStack addDouble(org.*********ventory.ItemStack item, String name, Double value) {
        NBTTagCompound tag = NBTHandler.getTag(item);
        tag.setDouble(name, value);
        return NBTHandler.setTag(item, tag);
    }

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

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

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

PHP:
tag.setString(name, value);

Помогите дурочку =(
 
А где 42 и 55 строки из TownBuildsMenu?
Всем привет.
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"));
Подозреваю, что где-то тут тебе возвращается значение null из iterableBuild. Проверяй.
 
А где 42 и 55 строки из TownBuildsMenu?

Подозреваю, что где-то тут тебе возвращается значение null из iterableBuild. Проверяй.
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") + 9 * iterableBuild.getInt("y");
                getInventory().setItem(slot, itemStack);
            }
        }
Как ты видишь, я уже попробовал проверить iterableBuild на null, но результатов это не дало. Все равно выскакивает та же ошибка

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