Помогите Проблема с увеличением урона арбалету.

MarinCod

Активный участник
Пользователь
Баллы
61
Всем привет! Я хочу добавить урон арбалету. Делаю это с помощью двух Event'ов:
Код:
@EventHandler
    public void crossbowEvent(EntityDamageByEntityEvent e) {
        if (e.getEntityType() == EntityType.PLAYER && e.getDamager().hasMetadata("plusDamage") ) {
            Projectile p = (Projectile) e.getDamager();
            Player player = (Player) e.getEntity();
            player.damage(10);
        }
    }

    @EventHandler
    public void crossbowTag(ProjectileLaunchEvent e) {
        if (e.getEntityType() == EntityType.FIREWORK && e.getEntity().getShooter() instanceof Player ) {
            Player shooter = (Player) e.getEntity().getShooter();

            ItemMeta crossbowMeta = shooter.getInventory().getItemInMainHand().getItemMeta();
            if(crossbowMeta.getDisplayName().equals(ChatColor.LIGHT_PURPLE + "Мушкет")) {
                e.getEntity().setMetadata("plusDamage", new FixedMetadataValue(plugin, true));
            }
        }
    }
По задумке первый ивент должен наносить дополнительный урон, если тот, в кого попали - игрок и если у снаряда есть метадата "plusDamage". Второй же эту самую метадату задает, если снаряд - фейерверк и если он был запущен из конкретного арбалета(мушкета).

Знающие наверно уже поняли в чем проблема, но я совсем новичок и особо не понимаю в этих типах энтити, уверен, что ошибка именно в этом. Помогите пожалуйста разобраться с этими дамагерами и шутерами. Огромное спасибо)
 
Есть ошибки в консоли?
Зарегистрировал Listener?

Вместо player.damage(10); используй e.setDamage(e.getDamage()+10);
 
Вместо player.damage(10); используй e.setDamage(e.getDamage()+10);
Насколько я знаю игрок не может получить урон от 2х источников одновременно. А так как ты просто дамажиш игрока сразу после ивента то твой урон не проходит из за кд на урон. Выше mirrerror показал правильное решение но можно еще отменить ивент и выдать урон, тоже должно сработать.
 
Насколько я знаю игрок не может получить урон от 2х источников одновременно. А так как ты просто дамажиш игрока сразу после ивента то твой урон не проходит из за кд на урон. Выше mirrerror показал правильное решение но можно еще отменить ивент и выдать урон, тоже должно сработать.
Ну и вторая проблема, если арбалет в другой руке). Ведь можно ходить с мечем и арбалетом одновременно например.
 
Спасибо! Проблема и правда была в этом)
 
Назад
Верх