Помогите Рефлексия [Решено(Оооо дааа)]

А как он ходить будет?
А вообще синусы косинусы все дела. Питч и вай назначить игроку.
Да не, буду костылить. Если итеракт с одной из пушек в ноу пвп, то до упора вверх уводить камеру игрока.
 
Не так уж и плохо, но ивенты будут получше.
 
В этом поле сидит следующие: http://joxi.ru/KAx9lykCMbDa7r
Это мод.
А, не заметил тип, сорян.

https://github.com/TheQmaks/ReflectionAPI/blob/master/qmaks/Reflection.java
Код:
Entity owner = getField(entity.getClass(), entity, "owner");

Profit.
В этом поле сидит следующие: http://joxi.ru/KAx9lykCMbDa7r
Это мод.
И я знаю, что это мод. Делал под него модификации разные.
 
А, не заметил тип, сорян.

https://github.com/TheQmaks/ReflectionAPI/blob/master/qmaks/Reflection.java
Код:
Entity owner = getField(entity.getClass(), entity, "owner");

Profit.

И я знаю, что это мод. Делал под него модификации разные.
Ок. java.lang.NoSuchFieldException: owner
Java:
    @EventHandler
    public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
         Entity entity = event.getDamager();
         Entity attacker = getField(entity.getClass(), entity, "owner");
    }
Угадайте, где выскочила ошибка выше? Понимаешь, что в Bukkit Entity нет нужного нам поля, я повторюсь ещё раз, это мод. Всё не так просто. Да и тем более, нам нужно чтобы к нам вернулось оригинальный Entity майнакрафта.
 
Ок. java.lang.NoSuchFieldException: owner
Java:
    @EventHandler
    public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
    Entity entity = event.getDamager();
    Entity attacker = getField(entity.getClass(), entity, "owner");
    }
Угадайте, где выскочила ошибка выше? Понимаешь, что в Bukkit Entity нет нужного нам поля, я повторюсь ещё раз, это мод.
Причем тут...Если мы в entity получаем EntityBullet, тогда все профит.

Java:
    @EventHandler
    public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
       Entity entity = event.getDamager();
       if(entity instanceof EntityBullet) {
          Entity attacker = getField(entity.getClass(), entity, "owner");
       }
    }

Сам бы уже давно сделал...
 
Причем тут...Если мы в entity получаем EntityBullet, тогда все профит.

Java:
    @EventHandler
    public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
       Entity entity = event.getDamager();
       if(entity instanceof EntityBullet) {
          Entity attacker = getField(entity.getClass(), entity, "owner");
       }
    }

Сам бы уже давно сделал...
А прикол в том, что я стрелял только пулями. Там ничего другого не могло вылезти. Он его не получил.
 
А прикол в том, что я стрелял только пулями. Там ничего другого не могло вылезти. Он его не получил.
Видишь ли, если бы в баките не обрабатывались модовские ентити, то их существование на серверной стороне было бы невозможным.
 
BA0vEgYSJZadMm.png

zANV9x3IBydXQA.png
 
Entity entity = event.getDamager(); Тут уже твой игрок.
Вот так кастуй и все.
Java:
        if(event.getDamager().getType() == EntityType.PLAYER) {
            Player entity = (Player) event.getDamager();
        }
Если таки ивент срабатывает, те не нужны рефлексии.
И да, еще на нул getDamager проверяй.
Собстно сама пуля тут event.getEntity();
Java:
        Entity entity = event.getDamager();
        if (entity != null && entity.getType() == EntityType.PLAYER) {
            Player pl = (Player) event.getDamager();
            Bukkit.broadcastMessage(CHAT_PREFIX + "[Debug] attacker is player");
        } else {
            Bukkit.broadcastMessage(CHAT_PREFIX + "[Debug] attacker is not player");
        }
5a4e8a5a09.png
 
Назад
Верх