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

[Решено]Как возобновить инвентарь.

Тема в разделе "Разработка плагинов для новичков", создана пользователем gasfull, 24 июн 2016.

Статус темы:
Закрыта.
  1. Автор темы
    gasfull

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

    Баллы:
    123
    Skype:
    gasfull2
    Имя в Minecraft:
    gasfull
    Как сохранить инвенарь я понял, а как востановить его после очистки, нет.:oops:
    Как это реализовать?

    Код:
    p.getInventory()); //PlayerInventory
    p.getInventory().clear(); //PlayerInventory
     
  2. Хостинг MineCraft
    <
  3. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    clone.
     
  4. Larin

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

    Баллы:
    103
    Ты получаешь ссылку на объект, а тебе нужно новую копию. Попробуй использовать метод clone.
    Код:
    p.getInventory().clone();
    p.getInventory().clear();
     
  5. UniWest

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

    Баллы:
    66
    Skype:
    CrazyLee1337
    Имя в Minecraft:
    Reflect1on
    Записать инвентарь в хешмап при событие дамага(не знаю, возможно ли получить инвентарь при событие смерти), потом с помощью цикла вернуть каждый стак.

    upd: А, можно без цикла, есть метод seyContents().
     
    Последнее редактирование: 25 июн 2016
  6. Larin

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

    Баллы:
    103
    Самый ужасный вариант, что я видел.
     
  7. UniWest

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

    Баллы:
    66
    Skype:
    CrazyLee1337
    Имя в Minecraft:
    Reflect1on
    А как иначе?
     
  8. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Код:
        HashMap<Player, Inventory> s = new HashMap<Player, Inventory>();
        @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false)
        public void asd(PlayerDeathEvent e){
            Player p = (Player) e.getEntity();
            s.put(p, p.getInventory());
        }
        @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false)
        public void e(PlayerRespawnEvent e) {
            e.getPlayer().getInventory().setContents(s.get(e.getPlayer()).getContents());
            s.remove(e.getPlayer());
        }
    Попробуй так. Не тестил.
     
  9. Автор темы
    gasfull

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

    Баллы:
    123
    Skype:
    gasfull2
    Имя в Minecraft:
    gasfull
    Спасибо, только сделал не через Inventory, а через ItemStack[]. (Через Inventory почему то не завилось:oops:)
    Код:
    Map<Player, ItemStack[]> DataPlayersInv = new HashMap<Player, ItemStack[]>();
    public void GoToLevel(Player p) {
    DataPlayersInv.put(p, p.getInventory().getContents());
    p.getInventory().clear();
    }
    public void Exit(Player p){
            p.getInventory().clear();
    p.getInventory().setContents(DataPlayersInv.get(p));
    p.updateInventory();
    DataPlayersInv.remove(p);
    }
     
Статус темы:
Закрыта.

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