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

Помогите Странно работает двойной прыжок

Тема в разделе "Разработка плагинов для новичков", создана пользователем l_Slime_l, 22 май 2020.

  1. alexandrage

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

    Баллы:
    173
    И так тоже делал.
     
  2. Автор темы
    l_Slime_l

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

    Баллы:
    76


    Вот код, не обращайте внимания на то, что ивенты в главном классе, это тестовый плагин. Скопировал ваш код, только звук добавил при двойном прыжке, координату Y изменил с 0.5 до 0.8 (с 0.5 проблема тоже была), и добавил PlayerVelocityEvent для дебага так сказать.
    PHP:
    public class DoubleJump extends JavaPlugin implements Listener {
        
        private 
    Map<StringVectorv;
        
        @
    Override
        
    public void onEnable() {
            
    this.= new HashMap<StringVector>();
            
    Bukkit.getPluginManager().registerEvents(thisthis);
        }

        @
    EventHandler
        
    public void on(PlayerJoinEvent e) {
            
    Player p e.getPlayer();
            
    this.v.put(p.getName(), new Vector(000));
        }

        @
    EventHandler
        
    public void on(PlayerQuitEvent e) {
            
    this.v.remove(e.getPlayer().getName());
        }

        @
    EventHandler
        
    public void on(PlayerToggleFlightEvent e) {
            
    Player p e.getPlayer();
            if (
    e.isFlying() && e.getPlayer().getGameMode() != GameMode.CREATIVE) {
                
    p.setVelocity(new Vector(-this.v.get(p.getName()).getX(), 0.8D, -this.v.get(p.getName()).getZ()));
                
    p.playSound(p.getLocation(), Sound.ENTITY_BAT_TAKEOFF11);
                
    e.setCancelled(true);
            }
            
    p.setAllowFlight(false);
        }

        @
    EventHandler
        
    public void on(PlayerMoveEvent e) {
            
    Player p e.getPlayer();
            
    this.v.put(p.getName(), e.getFrom().toVector().subtract(e.getTo().toVector()));
            if (
    p.isOnGround()) {
                
    p.setAllowFlight(true);
            }
        }
        
        @
    EventHandler
        
    public void onVelocity(PlayerVelocityEvent e) {
            
    Player p e.getPlayer();
            
            
    p.sendMessage(e.getVelocity().toString());
        }

    }
     
  3. alexandrage

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

    Баллы:
    173
    Так там велосити еще шлет при ударе о землю не? Тогда это абсалютная норма. Попробуй шедурером через тик отправлять. Я то думал реально какой то баг...
     
  4. alexandrage

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

    Баллы:
    173
    Код:
        @EventHandler
        public void on(PlayerToggleFlightEvent e) {
            Player p = e.getPlayer();
            if (e.isFlying() && e.getPlayer().getGameMode() != GameMode.CREATIVE) {
                p.setAllowFlight(false);
                new Scheduler(p, v.get(p.getName())).runTaskLater(main, 2);
                e.setCancelled(true);
            }
        }
    С задержкой пошаманишь если не сработает.
     
  5. Автор темы
    l_Slime_l

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

    Баллы:
    76
    Всмысле "там велосити еще шлет при ударе о землю"? Пробовал через тик подбрасывать игрока, тоже такая проблема, через 2 тика - реже, но тоже случается. А есть вариант без задержек исправить?
     
  6. alexandrage

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

    Баллы:
    173
    Не думаю. Это скорее клиентсайд и ничего с этим ты не сделаешь.
     
  7. Автор темы
    l_Slime_l

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

    Баллы:
    76
    Как-то раньше играл на серверах с таким двойным прыжком и проблемы не замечал, странно.
     
  8. alexandrage

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

    Баллы:
    173
    Из за пинга может и не замечал. Как раз накинет сверху 50-150 мс.
     

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