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

Помогите Определить координаты взгляда

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

Статус темы:
Закрыта.
  1. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    Как же я, наверное, задрал...
    Подскажите, как узнать координаты блока, на который направлен взгляд с помощью getEyePosition();
     
    Последнее редактирование: 2 дек 2017
  2. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    getLineOfSight() не подходит?
     
  3. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    Сейчас гляну...
     
  4. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    UPD: Насколько я понял, это направление по линии взгляда - что-то вроде стрельбы, кидания эндерперла и яйца. Полезно, это тоже искал.
     
  5. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    getTargetBlock
     
  6. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    Так и попробовал, зачёркивается. Нашёл тему с решением, пробую.
     
  7. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    Код:
    @EventHandler
        public void interact(PlayerInteractEvent event) {
            Action a = event.getAction();
            if(a == Action.RIGHT_CLICK_AIR || a == Action.RIGHT_CLICK_BLOCK) {
                Player p = event.getPlayer();
                ItemStack item = p.getInventory().getItemInMainHand();
                if (event.getHand() == EquipmentSlot.HAND && item.getType() == Material.STICK) {
                    p.getWorld().strikeLightning(p.getTargetBlock((Set<Material>)null, 600).getEyeLocation());
                    return;
                }
            }
        }
    
    говорит, getEyeLocation() не подходит для типа "блок"
    P.S. - да, знаю, руки бы мне за "a" и "e" оторвать...
     
  8. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Попробуй-ка (Set<Material>)null заменить на просто null, так получше будет.

    А как извлечь локацию из блока нужно смотреть в доках, а не на форум строчить
     
  9. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    Если без указания, то не получается. Об этом написано тут.
    Кстати, можно было и написать, а не послать меня неопределённо куда.
     
  10. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    Код:
    Location playerLoc = player.getEyeLocation();
            player.sendMessage((Object)ChatColor.RED + "Your X Eye Coordinates : " + (Object)ChatColor.GOLD + playerLoc.getX());
            player.sendMessage((Object)ChatColor.RED + "Your Y Eye Coordinates : " + (Object)ChatColor.GOLD + playerLoc.getY());
            player.sendMessage((Object)ChatColor.RED + "Your Z Eye Coordinates : " + (Object)ChatColor.GOLD + playerLoc.getZ());
            player.getWorld().strikeLightningEffect(playerLoc);
    
    вот так не работает. Ну, в смысле, работает, но бьёт почему-то именно в место, откуда я и вызываю это командой.
    То есть это определяет не место взгляда, а место игрока. Как быть?
     
  11. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    вОтлично. Всё пашет.
    Код:
    @EventHandler
        public void interact(PlayerInteractEvent event) {
            Action a = event.getAction();
            if(a == Action.RIGHT_CLICK_AIR || a == Action.RIGHT_CLICK_BLOCK) {
                Player p = event.getPlayer();
                ItemStack item = p.getInventory().getItemInMainHand();
                if (event.getHand() == EquipmentSlot.HAND && item.getType() == Material.STICK) {
                    Block targetBlock = p.getTargetBlock((Set<Material>)null, 50);
                    p.sendMessage((Object)ChatColor.RED + "Your X Eye Coordinates : " + (Object)ChatColor.GOLD + targetBlock.getX());
                    p.sendMessage((Object)ChatColor.RED + "Your Y Eye Coordinates : " + (Object)ChatColor.GOLD + targetBlock.getY());
                    p.sendMessage((Object)ChatColor.RED + "Your Z Eye Coordinates : " + (Object)ChatColor.GOLD + targetBlock.getZ());
                }
            
            }
        
        }
    
    Теперь вопрос - как присвоить Location loc = (координаты этого блока)
     
    Последнее редактирование: 3 дек 2017
  12. TheZefirrkka

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

    Баллы:
    76
    targetBlock.getLocation() ?
     
  13. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    у меня не работает
     
  14. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    UPD: Да ё* твою мать, ща бы в написании сделать ошибку. Красава, шо сказать :)
     
Статус темы:
Закрыта.

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