Войти или зарегистрироваться

Помогите Каналы чата

DigitalMisha

Активный участник
Пользователь
Баллы
58
Как можно отправлять сообщение не всем игрокам, а только выборочно?
У меня уже есть такой код:
Код:
e.getRecipients().stream().filter((s) ->
    getSidePlayer(s).getSide().equals(ws)
)
Но как применить это к оригинальному списку, я не знаю.

1.
Код:
e.getRecipients().stream()
- я получаю список получателей и создаю поток для его обработки.
2.
Код:
.filter
- метод для фильтрации потока. Возвращает поток(!) с уже отфильтрованным списком.
3.
Код:
(s) -> getSidePlayer().getSide().equals(ws)
- предикат(интерфейс(в данном случае реализованный лямбдой) который принимает одно значение и возвращает boolean) который удостоверяется что получатель находится на стороне(во фракции) отправителя.
 
Не *******йся, используй итераторы.
 
Код из MinigamesAPI:
Код:
    private Map<String, Object> serializeLocation(Location loc){
        Map<String, Object> map = new HashMap<String, Object>();
       
        map.put("x", loc.getX());
        map.put("y", loc.getY());
        map.put("z", loc.getZ());
        map.put("w", loc.getWorld().getName());
        return map;
    }
   
    private static Location deserializeLocation(ConfigurationSection section){
        return new Location(
                Bukkit.getWorld(section.getString("w")),
                section.getDouble("x"),
                section.getDouble("y"),
                section.getDouble("z"));
    }
Использование:
Код:
config.createSection("path.to.loc", serializeLocation(loc));
loc = deserializeLocation(section.getConfigurationSection(config.getConfigurationSection("path.to.loc")));
 
Код из MinigamesAPI:
Код:
    private Map<String, Object> serializeLocation(Location loc){
        Map<String, Object> map = new HashMap<String, Object>();
      
        map.put("x", loc.getX());
        map.put("y", loc.getY());
        map.put("z", loc.getZ());
        map.put("w", loc.getWorld().getName());
        return map;
    }
  
    private static Location deserializeLocation(ConfigurationSection section){
        return new Location(
                Bukkit.getWorld(section.getString("w")),
                section.getDouble("x"),
                section.getDouble("y"),
                section.getDouble("z"));
    }
Использование:
Код:
config.createSection("path.to.loc", serializeLocation(loc));
loc = deserializeLocation(section.getConfigurationSection(config.getConfigurationSection("path.to.loc")));
Ты забыл pitch и yaw.
 
Мне они были не нужны, так что я их не сохраняю. А если ТС нужно, то дополнить легко.
Обычно тогда сериализуют/десериализуют вектор тогда, и имя мира хранится в отдельной секции. Вообще имя мира стоит хранить 1 раз для всей арены, один чёрт почти всегда все части арены в одном мире находятся.
 
Обычно тогда сериализуют/десериализуют вектор тогда, и имя мира хранится в отдельной секции.
Я решил сделать так, за имя секции у меня другое отвечает. (название арены, в данном случае)
 
Назад
Верх