1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

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

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

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

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

    Код:
    p.getInventory()); //PlayerInventory
    p.getInventory().clear(); //PlayerInventory
     
  2. CoolBoy

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

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    clone.
     
  3. Larin

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

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

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

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

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

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    LRFX
    А как иначе?
     
  7. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    Код:
        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());
        }
    Попробуй так. Не тестил.
     
  8. Автор темы
    gasfull

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

    Баллы:
    123
    Имя в 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);
    }
     
Статус темы:
Закрыта.

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