- Баллы
- 78
Как можно взять у игрока шмот, записать в массив, а потом по команде отдать его?
Спасибо
Спасибо
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Если под "взять" подразумевается "изъять"(удалить), то:Как можно взять у игрока шмот, записать в массив, а потом по команде отдать его?
Спасибо
Map<Player, ItemStack[]> invContents = new HashMap<Player, ItemStack[]>();//инвентарь
Map<Player, ItemStack[]> armContents = new HashMap<Player, ItemStack[]>();//броня
public void removeAll(Player pl)
{
if(invContents.containsKey(pl))//Если запись была,
invContents.remove(pl); //заменяем на новую
if(armContents.containsKey(pl))
armContents.remove(pl);
invContents.put(pl, pl.getInventory().getContents());
armContents.put(pl, pl.getInventory().getArmorContents());
pl.getInventory().clear();//очищаем инвентарь
}
//Возвращаем вещи
public void giveAll(Player pl)
{
if(invContents.containsKey(pl))
{
pl.getInventory().setContents(invContents.get(pl));
invContents.remove(pl);
}
if(armContents.containsKey(pl))
{
pl.getInventory().setArmorContents(armContents.get(pl));
armContents.remove(pl);
}
}
Не стоит так делать.Если под "взять" подразумевается "изъять"(удалить), то:
Java:Map<Player, ItemStack[]> invContents = new HashMap<Player, ItemStack[]>();//инвентарь Map<Player, ItemStack[]> armContents = new HashMap<Player, ItemStack[]>();//броня public void removeAll(Player pl) { if(invContents.containsKey(pl))//Если запись была, invContents.remove(pl); //заменяем на новую if(armContents.containsKey(pl)) armContents.remove(pl); invContents.put(pl, pl.getInventory().getContents()); armContents.put(pl, pl.getInventory().getArmorContents()); pl.getInventory().clear();//очищаем инвентарь } //Возвращаем вещи public void giveAll(Player pl) { if(invContents.containsKey(pl)) { pl.getInventory().setContents(invContents.get(pl)); invContents.remove(pl); } if(armContents.containsKey(pl)) { pl.getInventory().setArmorContents(armContents.get(pl)); armContents.remove(pl); } }
Ты имеешь ввиду не класть в мапу объект игрока, а его имя или UUID?Не стоит так делать.
Вообще-то особой разницы нет. И он имеет ввиду нечто другое.Ты имеешь ввиду не класть в мапу объект игрока, а его имя или UUID?
Кто то писал, что объект игрока часто меняется поэтому он будет не актуальнымВообще-то особой разницы нет. И он имеет ввиду нечто другое.
О имел ввиду, что не стоит давать готовый код.Ты имеешь ввиду не класть в мапу объект игрока, а его имя или UUID?
спасибо огромное))Если под "взять" подразумевается "изъять"(удалить), то:
Java:Map<Player, ItemStack[]> invContents = new HashMap<Player, ItemStack[]>();//инвентарь Map<Player, ItemStack[]> armContents = new HashMap<Player, ItemStack[]>();//броня public void removeAll(Player pl) { if(invContents.containsKey(pl))//Если запись была, invContents.remove(pl); //заменяем на новую if(armContents.containsKey(pl)) armContents.remove(pl); invContents.put(pl, pl.getInventory().getContents()); armContents.put(pl, pl.getInventory().getArmorContents()); pl.getInventory().clear();//очищаем инвентарь } //Возвращаем вещи public void giveAll(Player pl) { if(invContents.containsKey(pl)) { pl.getInventory().setContents(invContents.get(pl)); invContents.remove(pl); } if(armContents.containsKey(pl)) { pl.getInventory().setArmorContents(armContents.get(pl)); armContents.remove(pl); } }