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

Помогите Не работает setY

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

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

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

    Баллы:
    68
    Имя в Minecraft:
    fynjy1111
    e.setCancelled(true); работает, а setY нет
    Код:
    @EventHandler
       public void onMove(PlayerMoveEvent e) {
           Location loc = e.getPlayer().getLocation();
           double x = loc.getX();
           double y = loc.getY();
           double z = loc.getZ();
           if (loc.getWorld().getEnvironment() == World.Environment.NETHER && loc.getY() >= 128.0D) {
               //e.setCancelled(true);
               loc.setY(126);
           }
       }
    
     
  2. Хостинг MineCraft
    <
  3. veyn12

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

    Баллы:
    68
    Имя в Minecraft:
    Veynique
    Писал от руки с телефона, могут быть ошибки, проверь
    PHP:
    Player p e.getPlayer();
    p.teleport(loc.add(0,126,0));
     
  4. Автор темы
    anton3312578859

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

    Баллы:
    68
    Имя в Minecraft:
    fynjy1111
    спасибо, но меня телепортирует в обычный мир, поэтому вот что я нашёл по запросу "player.teleport" в яндексе:
    Код:
    Location location = new Location(world, x, y, z);
    player.teleport(location);
    
     
  5. veyn12

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

    Баллы:
    68
    Имя в Minecraft:
    Veynique
    Можно и так, просто мир получи по локации игрока и телепортируй
     
  6. BrokenFG

    BrokenFG Активный участник

    Баллы:
    61
    Имя в Minecraft:
    BrokenFG
    Это так не работает. От изменения объекта локации, которые ты получил у игрока ты ничего не изменишь, т.к. метод player.getLocation() возвращает копию локации игрока. В твоем случае надо либо телепортировать игрока на локацию которую ты изменил, либо пользоваться методом этого ивента:
    Код:
    @EventHandler
       public void onMove(PlayerMoveEvent e) {
          Location loc = e.getPlayer().getLocation();
          double x = loc.getX();
          double y = loc.getY();
          double z = loc.getZ();
          if (loc.getWorld().getEnvironment() == World.Environment.NETHER && loc.getY() >= 128.0D) {
              loc.setY(126);
              e.setTo(loc);
          }
       }
    
     
  7. Автор темы
    anton3312578859

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

    Баллы:
    68
    Имя в Minecraft:
    fynjy1111
    Понял, огромное спасибо!
     

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