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

Помогите Обновить кастомный инвентарь

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

  1. Автор темы
    reZero

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

    Баллы:
    46
    У меня есть кастомный инвентарь, в нем есть предмет, в лоре которого есть текущий баланс игрока. Как мне обновить инвентарь, чтобы при пополнении счет не выходя из гуи, информация на предмете обновлялась?
    P.S p.updateInventory() не робит
     
  2. Mr Hosting
  3. Автор темы
    reZero

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

    Баллы:
    46
    Никто не владеет данной информацией?)
     
  4. SecDet

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

    Баллы:
    76
    Имя в Minecraft:
    d3ever
    Открыть кастомный инвентарь снова?
     
  5. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Достаточно сменить мету итемстаку и все. Дальше само все.
    Код:
            ItemStack s = inv.getItem(0);
            ItemMeta m = s.getItemMeta();
            m.setLore(Arrays.asList(new String[]{money}));
            s.setItemMeta(m);
    На чистом серваке точно работает, на счет протоколхакнутых не могу сказать.
     
  6. LuckyZeeRo

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

    Баллы:
    76
    Имя в Minecraft:
    i0xHeX
    После изменения предмета ставишь его заново в инвентарь (Inventory#setItem(...))
     
  7. Автор темы
    reZero

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

    Баллы:
    46
    PHP:
            ItemMeta meta item.getItemMeta();
    выбивает npe почему-то...
    UPD: Исправил ошибку. Но значение в лоре все равно не меняется

    Ты походу неправильно понял. Допустим, у меня в середине гуи есть айтем, который показывает какое-то число в своем лоре. При нажатии на предмет рядом, это число будет увеличиваться на 1, следовательно и в лоре предмета из середины гуи, цифра должна меняться. Сам предмет я не трогаю.
     
    Последнее редактирование: 8 окт 2018
  8. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ну так и получаешь предмет из середины гуи и меняешь там лоре моим кодом.
    inv.getItem(индекс того предмета);
     
  9. Автор темы
    reZero

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

    Баллы:
    46
    Есть у меня такой метод
    PHP:
        public void update()
        {
            
    ItemStack s this.openSavingsAccount().getItem(4);
            
    ItemMeta m s.getItemMeta();
            
    m.setLore(Arrays.asList(new String[]{"zhopa"}));
            
    s.setItemMeta(m);
        }
    Я его вызываю, когда игрок кликает на нужный предмет, но ничего не изменяется.
    Конечно, работает способ просто закрыть и открыть инвентарь заново, но мне этот способ не очень подходит, т.к при выполнении вышеуказанных действий, курсор игрока всегда бросается в середину экрана (как и при обычном открытии гуи в общем-то), а для меня это неудобно.
     
  10. HunterGaming

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

    Баллы:
    76
    Имя в Minecraft:
    HunterGaming13
    попробуй обновить инвентарь, player -> updateInventory
     
  11. Автор темы
    reZero

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

    Баллы:
    46
    Не работает
     
  12. HunterGaming

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

    Баллы:
    76
    Имя в Minecraft:
    HunterGaming13
    Значит, закрывай инвентарь и сразу открывай его игроку...
     
  13. Автор темы
    reZero

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

    Баллы:
    46
    Я же написал, что мне это не подходит. Разве нельзя без этого костыля сделать изменение лора?
     
  14. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Можно. Что то не так делаешь.
     
  15. Автор темы
    reZero

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

    Баллы:
    46
    Укажите на ошибку, я не понимаю в чем проблема.
     
  16. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Я не ванга и не знаю что ты там юзаешь. Просто держи ссылку на ивентарь или сам стак и работай с ним.
     
  17. Автор темы
    reZero

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

    Баллы:
    46
    Я сделал метод, при вызове которого, в инвентаре появляются все нужные мне предметы
    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(), 01235678);
            
    account.setLore(Arrays.asList(new String[] {"money"}))
            
    account.setItemMeta(accountmeta);
            
    this.saacmeny.setItem(4account);
            return 
    this.saacmeny;
        }
    Создание инвентаря

    PHP:
    public Inventory saacmeny;
    public 
    myclass(Player player)
    {
        
    this.saacmeny Bukkit.createInventory(null9"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 не кидайтесь помидорами за говнокод, лучше укажите, где было бы лучше что-то сделать по-другому, я буду Вам очень благодарен!
     
  18. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Фейспальмов не наберешься на тебя.
     
  19. Автор темы
    reZero

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

    Баллы:
    46
    Попросил же подсказать...
     
  20. Автор темы
    reZero

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

    Баллы:
    46
    Тема до сих пор актуальна
     
  21. LuckyZeeRo

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

    Баллы:
    76
    Имя в Minecraft:
    i0xHeX
    Чем не идет? Ты сетишь новый измененный предмет в инвентарь. И все.
     

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