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

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

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

  1. Автор темы
    DigitalMisha

    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) который удостоверяется что получатель находится на стороне(во фракции) отправителя.
     
  2. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Не *******йся, используй итераторы.
     
  3. Автор темы
    DigitalMisha

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

    Баллы:
    58
    Даже если использовать итераторы. Как полученное применить к сообщению?
     
  4. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    getRecipients() возвращает оригинальный список.
     
  5. Автор темы
    DigitalMisha

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

    Баллы:
    58
    При его изменении оригинальный разве поменяется?
    И еще вопрос: как считать Location из конфига?
     
  6. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Сериализировать и десериализировать её.
     
  7. Автор темы
    DigitalMisha

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

    Баллы:
    58
    Спасибо, сейчас попробую.
     
  8. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Код из 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")));
     
  9. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Ты забыл pitch и yaw.
     
  10. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Мне они были не нужны, так что я их не сохраняю. А если ТС нужно, то дополнить легко.
     
  11. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Обычно тогда сериализуют/десериализуют вектор тогда, и имя мира хранится в отдельной секции. Вообще имя мира стоит хранить 1 раз для всей арены, один чёрт почти всегда все части арены в одном мире находятся.
     
  12. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Я решил сделать так, за имя секции у меня другое отвечает. (название арены, в данном случае)
     

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