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

Помогите ArmorContens

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

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

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Всем привет!

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

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

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

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

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

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

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

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

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

    И еще, armorsave.get(p).length возвращает null;
     
    Последнее редактирование: 3 апр 2014
  7. kris13

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

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

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

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

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

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

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

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

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

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

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

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

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

    Баллы:
    173
    Skype:
    shkurovs
    :eek: Так это же я писал.
     
    CraftCoder нравится это.
  14. kris13

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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