Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Помогите ArmorContens

Discussion in 'Разработка плагинов для новичков' started by CraftCoder, Apr 2, 2014.

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

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Всем привет!

    Получаю броню вот так armorsave.put(p, p.getInventory().getArmorContents());
    armorsave = new HashMap<Player, ItemStack[]>();
    Вопрос: как теперь эту броню запихнуть в inventory в котором уже что-то есть?
     
  2. Хостинг MineCraft
    <
  3. serega6531

    serega6531 Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    shkurovs
    Никогда нигде не храни объект игрока. Храни его имя и получай через Bukkit.getPlayer(Exact)().
     
    CraftCoder and ql_Nik_lp like this.
  4. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Хорошо, но вопрос то в другом/\
     
  5. serega6531

    serega6531 Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    shkurovs
    Проходишься for'ом по ItemStack[]'у и добавляешь предмет в инвентарь.
     
    ql_Nik_lp likes this.
  6. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Не могу, NullPointerException[DOUBLEPOST=1396524973,1396522642][/DOUBLEPOST]Даже если в пустой инвентарь inventory положить armorsave(inventory.setcontens(armorsave.get(p)), то складывается только первая одетая вещь, т.е если одета шапка кераса и ботинки, положится только шапка, а если одето штаны и ботинки, то положится только штаны.

    И еще, armorsave.get(p).length возвращает null;
     
    Last edited: Apr 3, 2014
  7. kris13

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

    Trophy Points:
    78
    Может быть код? Сомневаюсь, что тут есть люди диагностирующие ваши баги удаленно.
    Что за магическую конструкцию вы написали "armorsave(inventory.setcontens(armorsave.get(p))"? У вас метод называется так же как HashMap?
    armorsave.get(p).length - а чем мы вам поможем, если вы сами положили в HashMap ItemStack[] = null?
     
  8. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Нет я же в HashMap ItemStack[] положил p.getArmorContens.
     
  9. kris13

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

    Trophy Points:
    78
    Возможно вы неверно написали и на самом деле armorsave.get(p) возвращает null? Тогда это значит что по ключу p у вас нет данных в HashMap. И простите но у Player нет метода о котором вы говорите - getArmorContens.
     
  10. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Да, возвращает null, но я складываю p.Inventory.getArmorContents, почему же null возвращает.
     
  11. kris13

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

    Trophy Points:
    78
    Вы переделали HashMap на <String, ItemStack[]>, как вам советовали вначале?
     
  12. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Я лупень...
    Все работает всем спасибо, kris13 лайки нужны? Могу твои сообщения пролайкать.
     
  13. serega6531

    serega6531 Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    shkurovs
    :eek: Так это же я писал.
     
    CraftCoder likes this.
  14. kris13

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

    Trophy Points:
    78
    Да нет, я помогаю, потому что когда что-то объясняешь другому человеку время от времени приходят интересные мысли. Это как в том анекдоте про преподавателя и студента "Я ему и так объяснил и по другому, уже даже сам понял, а он никак понять не может" =)
     
    CraftCoder likes this.
  15. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Да не там другое, но если хочешь и тебе лайк поставлю
     
  16. serega6531

    serega6531 Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    shkurovs
    Именно это. get() в мапе возвращает null, если нет объекта с таким ключом, а у тебя его не было, так как объект игрока 100 раз успел измениться с момента помещения в мапу.
     
  17. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    И еще, не по теме, но как узнать пустой инвентарь или нет, я делаю так
    Code:
    for(int i = 0; i<44; i++) {
    if(event.getInventory().getContents()[i] != null){n++;}
    };           
    if(n < 45)
    {
    //что-то делаю
    }
    
    , не получается:(
     
  18. serega6531

    serega6531 Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    shkurovs
    Что это за говнокод наркомания?
    Code:
    if(event.getInventory().getContents().length == 0) something();
     
  19. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Просто я воспитан паскалем, на яве не привычно писать:)
     
  20. serega6531

    serega6531 Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    shkurovs
    Я тоже, но пишу почему-то нормально.
     
  21. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Не будем о грустном....
    Но ваш способ все равно не работает.
     

Share This Page