Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

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

Discussion in 'Разработка плагинов для новичков' started by DigitalMisha, Jul 29, 2014.

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

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

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

    1.
    Code:
    e.getRecipients().stream()
    - я получаю список получателей и создаю поток для его обработки.
    2.
    Code:
    .filter
    - метод для фильтрации потока. Возвращает поток(!) с уже отфильтрованным списком.
    3.
    Code:
    (s) -> getSidePlayer().getSide().equals(ws)
    - предикат(интерфейс(в данном случае реализованный лямбдой) который принимает одно значение и возвращает boolean) который удостоверяется что получатель находится на стороне(во фракции) отправителя.
     
  2. Хостинг MineCraft
    <
  3. Shevchik

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

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

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

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

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

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

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

    Trophy Points:
    58
    При его изменении оригинальный разве поменяется?[DOUBLEPOST=1406645078,1406643734][/DOUBLEPOST]И еще вопрос: как считать Location из конфига?
     
  7. serega6531

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

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

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

    Trophy Points:
    58
    Спасибо, сейчас попробую.
     
  9. serega6531

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

    Trophy Points:
    173
    Skype:
    shkurovs
    Код из MinigamesAPI:
    Code:
        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"));
        }
    Использование:
    Code:
    config.createSection("path.to.loc", serializeLocation(loc));
    loc = deserializeLocation(section.getConfigurationSection(config.getConfigurationSection("path.to.loc")));
     
  10. Shevchik

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

    Trophy Points:
    173
    Имя в Minecraft:
    _Shevchik_
    Ты забыл pitch и yaw.
     
  11. serega6531

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

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

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

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

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

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

Share This Page