Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Как отследить золотые сердечки

Статус
Закрыто для дальнейших ответов.

Migel

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
Migel077
Есть эффект от гэплов поглощение, он даёт золотые сердечи, и мне для плагина нужно отслеживать когда они у игрока есть.
 
Код:
        Player player = null;
        EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
        
        if (entityPlayer.getAbsorptionHearts() > 0F){

        }
 
Есть эффект от гэплов поглощение, он даёт золотые сердечи, и мне для плагина нужно отслеживать когда они у игрока есть.
PHP:
    //Если нужно отследить сердца выданные эффектом
    @EventHandler(ignoreCancelled = true)
    public void onEntityPotionEffect(EntityPotionEffectEvent event) {
        if (event.getNewEffect().getType() != PotionEffectType.ABSORPTION) return;
        if ((event.getEntity() instanceof Player player)) return;
        //TODO Твои действия
    }
    /*
     * Если нужно отследить сердца выданные не только через эффект
     * Запускаешь через Bukkit.getScheduler().runTaskTimer(JavaPlugin, new GoldenHealthListener(), 10, 10);
     *
     * TODO будет вызывается для каждого игрока у которого есть золотые сердца раз в пол секунды
     */

    public class GoldenHealthListener implements Runnable{

        @Override
        public void run() {
            Bukkit.getOnlinePlayers()
                    .stream()
                    .filter(player -> player.getAbsorptionAmount() > 0f)
                    .forEach(player -> {
                        //TODO Твои действия
                    });
        }
    }
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх