Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
ItemStack s = inv.getItem(0);
ItemMeta m = s.getItemMeta();
m.setLore(Arrays.asList(new String[]{money}));
s.setItemMeta(m);
Достаточно сменить мету итемстаку и все. Дальше само все.
На чистом серваке точно работает, на счет протоколхакнутых не могу сказать.Код:ItemStack s = inv.getItem(0); ItemMeta m = s.getItemMeta(); m.setLore(Arrays.asList(new String[]{money})); s.setItemMeta(m);
ItemMeta meta = item.getItemMeta();
Ты походу неправильно понял. Допустим, у меня в середине гуи есть айтем, который показывает какое-то число в своем лоре. При нажатии на предмет рядом, это число будет увеличиваться на 1, следовательно и в лоре предмета из середины гуи, цифра должна меняться. Сам предмет я не трогаю.После изменения предмета ставишь его заново в инвентарь (Inventory#setItem(...))
Ну так и получаешь предмет из середины гуи и меняешь там лоре моим кодом.выбивает npe почему-то...PHP:ItemMeta meta = item.getItemMeta();
UPD: Исправил ошибку. Но значение в лоре все равно не меняется
Ты походу неправильно понял. Допустим, у меня в середине гуи есть айтем, который показывает какое-то число в своем лоре. При нажатии на предмет рядом, это число будет увеличиваться на 1, следовательно и в лоре предмета из середины гуи, цифра должна меняться. Сам предмет я не трогаю.
Есть у меня такой методНу так и получаешь предмет из середины гуи и меняешь там лоре моим кодом.
inv.getItem(индекс того предмета);
public void update()
{
ItemStack s = this.openSavingsAccount().getItem(4);
ItemMeta m = s.getItemMeta();
m.setLore(Arrays.asList(new String[]{"zhopa"}));
s.setItemMeta(m);
}
попробуй обновить инвентарь, player -> updateInventoryЕсть у меня такой метод
Я его вызываю, когда игрок кликает на нужный предмет, но ничего не изменяется.PHP:public void update() { ItemStack s = this.openSavingsAccount().getItem(4); ItemMeta m = s.getItemMeta(); m.setLore(Arrays.asList(new String[]{"zhopa"})); s.setItemMeta(m); }
Конечно, работает способ просто закрыть и открыть инвентарь заново, но мне этот способ не очень подходит, т.к при выполнении вышеуказанных действий, курсор игрока всегда бросается в середину экрана (как и при обычном открытии гуи в общем-то), а для меня это неудобно.
Не работаетпопробуй обновить инвентарь, player -> updateInventory
Значит, закрывай инвентарь и сразу открывай его игроку...Не работает
Я же написал, что мне это не подходит. Разве нельзя без этого костыля сделать изменение лора?Значит, закрывай инвентарь и сразу открывай его игроку...
Можно. Что то не так делаешь.Я же написал, что мне это не подходит. Разве нельзя без этого костыля сделать изменение лора?
Укажите на ошибку, я не понимаю в чем проблема.Можно. Что то не так делаешь.
Я не ванга и не знаю что ты там юзаешь. Просто держи ссылку на ивентарь или сам стак и работай с ним.Укажите на ошибку, я не понимаю в чем проблема.
public Inventory openSavingsAccount()
{
ItemStack account = new ItemStack(Material.getMaterial(Main.getInstance().getConfig().getInt("SavingsAccount.Item")));
ItemMeta accountmeta = account.getItemMeta();
accountmeta.setDisplayName("testItem");
new Buttons().addButtons(this.getInventory(), 0, 1, 2, 3, 5, 6, 7, 8);
account.setLore(Arrays.asList(new String[] {"money"}))
account.setItemMeta(accountmeta);
this.saacmeny.setItem(4, account);
return this.saacmeny;
}
public Inventory saacmeny;
public myclass(Player player)
{
this.saacmeny = Bukkit.createInventory(null, 9, "Test")
}
p.openInventory(myclass.openSavingsAccount());
public void update()
{
ItemStack s = this.openSavingsAccount().getItem(4);
ItemMeta m = s.getItemMeta();
m.setLore(Arrays.asList(new String[]{"zhopa"}));
m.setDisplayName("TEST");
s.setItemMeta(m);
}
Фейспальмов не наберешься на тебя.Я сделал метод, при вызове которого, в инвентаре появляются все нужные мне предметы
Создание инвентаряPHP:public Inventory openSavingsAccount() { ItemStack account = new ItemStack(Material.getMaterial(Main.getInstance().getConfig().getInt("SavingsAccount.Item"))); ItemMeta accountmeta = account.getItemMeta(); accountmeta.setDisplayName("testItem"); new Buttons().addButtons(this.getInventory(), 0, 1, 2, 3, 5, 6, 7, 8); account.setLore(Arrays.asList(new String[] {"money"})) account.setItemMeta(accountmeta); this.saacmeny.setItem(4, account); return this.saacmeny; }
PHP:public Inventory saacmeny; public myclass(Player player) { this.saacmeny = Bukkit.createInventory(null, 9, "Test") }
Чтобы открыть этот инвентарь, я просто вызываю
PHP:p.openInventory(myclass.openSavingsAccount());
При клилке на определенный предмет, я добавляю n число к числу из лора того самого предмета и пытаюсь обновить этот предмет этим методом
В чем может быть ошибка??PHP:public void update() { ItemStack s = this.openSavingsAccount().getItem(4); ItemMeta m = s.getItemMeta(); m.setLore(Arrays.asList(new String[]{"zhopa"})); m.setDisplayName("TEST"); s.setItemMeta(m); }
P.S не кидайтесь помидорами за говнокод, лучше укажите, где было бы лучше что-то сделать по-другому, я буду Вам очень благодарен!
Попросил же подсказать...Фейспальмов не наберешься на тебя.
Тема до сих пор актуальна
После изменения предмета ставишь его заново в инвентарь (Inventory#setItem(...))
Ну так и получаешь предмет из середины гуи и меняешь там лоре моим кодом.
inv.getItem(индекс того предмета);