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

Стартап ///

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

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

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

    Баллы:
    66
    ///
     
    Последнее редактирование: 21 апр 2020
  2. NyanGuyMF

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

    Баллы:
    76
    Как вариант - сохранять в кэш обработанныйt объекты onHit event (например, время выполнения и игрока) и проверять в onProjectileHitEvent с приоритетом @EventHandler(priority = EventPriority.LOWEST), совпадают ли события: если да, то event.setCancelled(true), в ином случае - ничего :D
     
  3. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Объясни что должно в конце получиться. Судя по коду выше, это можно записать и так
    PHP:

    @EventHandler
    public void onProjectileHitEvent(ProjectileHitEvent e) {
       if(!(
    e.getEntity().getShooter() instanceof Player)) return;
       
    Player player = (Playere.getEntity().getShooter();
       if(
    e.getHitBlock() != nullp.sendMessage("Вы попали в блок!");
       if(
    e.getHitEntity().equals(p)) p.sendMessage("Вы попали в себя!");
    }
     
    Последнее редактирование: 20 дек 2018
  4. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Так ты сделать не сможешь. Оба зарегистрированные события будут выполнятся. Вероятнее всего ProjectileHitEvent выполнится перед EntityDamageByEntityEvent, если стрела попадет в существо. Возможно второе событие не выполнится, если хит будет отменен. Опять таки Cool_boy тебе скинул решение по идее с одним событием. Что не так?

    * Не идет учет изменения кода ядра и т.п. хакингов *
     
  5. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    ProjectileHitEvent
    Ты получаешь стрелу (отсюда ее свойства включая коорды), можешь получить того кто стрелял, и того, куда попала стрела (существо или блок).
     
  6. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    PHP:
    Entity entity e.getHitEntity();
    if(
    entity != null && entity instanceof Player) {
    Player hit = (Playerentity;
    hit.getName(); //ЗОЧЕМ 2 ИВЕНТА!!11!1!
    }
     
  7. alexandrage

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

    Баллы:
    173
    Вангую что он динозавр, где еще не было getHitBlock(). От сюда и ипет свой мозг.
    P.s при instanceof нет смысла проверять не null.
     
  8. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Потом же бросит NPE потом, если не проверить
     
  9. alexandrage

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

    Баллы:
    173
    [​IMG]
    Условие не пройдет же.
     
  10. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Проверил спецификацию. Действительно.
    Тепер буду знать :good:
     
  11. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Ну тогда твой костыль во втором посте выглядит рабочим. Только как это должно работать? Игрок стреляет себя - попадает в список, потом стреляет в блок - выходит из него?
     
  12. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ого, 500 строк кода) Наверное много времени понадобится чтоб перенести все на новую версию)
     
  13. alexandrage

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

    Баллы:
    173
    Ну вот смирись и переходи. Там много чего полезного добавили. Сэкономишь кучу времени и сил.
     
  14. alexandrage

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

    Баллы:
    173
    Тогда сам.
     
  15. alexandrage

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

    Баллы:
    173
    Нет конечно. Уже 3тий день мучаешься из за динозавра. Мог бы успеть перейти на нормальную версию.
     
  16. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Если ты будешь всегда идти в ногу со временем, у тебя будет намного меньше проблем, уж поверь, не пожалеешь.
     
Статус темы:
Закрыта.

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