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

  • Автор темы Автор темы gasfull
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

gasfull

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

JavaScript:
p.getInventory()); //PlayerInventory
p.getInventory().clear(); //PlayerInventory
 
Как сохранить инвенарь я понял, а как востановить его после очистки, нет.:oops:
Как это реализовать?

JavaScript:
p.getInventory()); //PlayerInventory
p.getInventory().clear(); //PlayerInventory
Ты получаешь ссылку на объект, а тебе нужно новую копию. Попробуй использовать метод clone.
Java:
p.getInventory().clone();
p.getInventory().clear();
 
Записать инвентарь в хешмап при событие дамага(не знаю, возможно ли получить инвентарь при событие смерти), потом с помощью цикла вернуть каждый стак.

upd: А, можно без цикла, есть метод seyContents().
 
Последнее редактирование:
Java:
    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());
    }
Попробуй так. Не тестил.
 
Java:
    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());
    }
Попробуй так. Не тестил.
Спасибо, только сделал не через Inventory, а через ItemStack[]. (Через Inventory почему то не завилось:oops:)
Java:
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);
}
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх