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

Помогите Проверка, что игрок не двигается в событии PlayerMoveEvent

Тема в разделе "Разработка плагинов для новичков", создана пользователем Lisenochek, 1 сен 2016.

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

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Всем привет. В выше сказанном ивенте я пытался проверить, стоит ли игрок, но тщетно. Пробовал идеей @Mr_RoboMan, но так же тщетно. Пытался также попробовать проверить его скорость, но опять же провал. Есть ли у вас варианты решения этой проблемы?
     
  2. Хостинг MineCraft
    <
  3. Mr_RoboMan

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

    Баллы:
    123
    Эм... т.е., ты ловишь PlayerMoveEvent, и ты хочешь узнать двинулся ли он, или повернул голову?
    Если так, то получаешь x1,x2,y1,y2,z1,z2 (координаты ОТ и координаты ДО), и если (x1 != x2 || y1 != y2 || z1 != z2) то значит игрок реально подвинулся.
     
  4. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Что-то сделал, но проверка не работает.

    Код:
        @EventHandler
        public static void fireEffect(PlayerMoveEvent e) {
    
            Player p = e.getPlayer();
    
            BukkitRunnable run = new BukkitRunnable() {
    
                @Override
                public void run() {
                   
                    double x1 = p.getLocation().getX();
                    double x2 = p.getLocation().getX();
                   
                    double y1 = p.getLocation().getY();
                    double y2 = p.getLocation().getY();
                   
                    double z1 = p.getLocation().getZ();
                    double z2 = p.getLocation().getZ();
    
                    if(x1 != x2 || y1 != y2 || z1 != z2) {
    
                        if (l.fireEffect.contains(p)) {
    
                            BukkitRunnable startEffect = new BukkitRunnable() {
    
                                @Override
                                public void run() {
    
                                    ParticleEffect.LAVA.display(0, 0, 0, 5, 5, p.getLocation(), 10);
                                }
                            };
                            startEffect.runTaskTimer(plugin, 1, 500);
                        }
                    }
                }
            };
            run.runTaskTimer(plugin, 2, 2);
        }
     
  5. 0x1EE7C0DE

    0x1EE7C0DE Участник Пользователь

    Баллы:
    36
    Код:
    if(event.getFrom().distance(event.getTo())>0)
    {
    // Игрок сдвинулся
    }
    
    Писал без IDE, мог где-то допустить ошибку
     
  6. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Вот мой thread-safe MovingPlayersCatcher.
    Регистрируешь его как листенер.
    Когда тебе удобно (по таймеру, например) получаешь список игроков через .getMovedPlayersAsync().
    Список внутри сбрасывается и наполняется новыми игроками, которые подвигались.
     
  7. Vlundik

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

    Баллы:
    78
    Для эффектов самое оно
    Код:
        public boolean isXYZmoving(Location from, Location to) {
            return from.getBlockX() != to.getBlockX() || from.getBlockY() != to.getBlockY() || from.getBlockZ() != to.getBlockZ();
        }
     
  8. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Вай какой костыль... P.s и телепорт != мове.[DOUBLEPOST=1474428896,1474428416][/DOUBLEPOST]
    :good:
     
  9. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Для цели отловить тех, у кого предположительно поменялся список регионов WG, в которых игрок находится, самое оно =)
     

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