Ir para conteúdo
  • 0

[Resolvido] [Ajuda] Evento para selecionar e matar os mobs de uma determinada area


mabazi

Pergunta

6 respostass a esta questão

Posts Recomendados

@EventHandler
public void onEntityDeath(EntityDeathEvent e) {
  // Verifica se foi um jogador que matou
  if (e.getEntity().getKiller() != null) {
    
    // Pega todas as entidades num raio de 5 blocos (não tenho certeza), 
    // que no caso seria 1/2 do valor informado.
    // https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Entity.html#getNearbyEntities(double,%20double,%20double)
    List<Entity> nearby = e.getEntity().getNearbyEntities(10, 10, 10);
    
    // Percorre todas as entidades que foram encontradas
    for (Entity entity : nearby) {
      // Verifica se a entidade é uma entidade viva (você não pode matar um Item '-')
      if (entity instanceof LivingEntity) {
        LivingEntity livingEntity = (LivingEntity) entity;
        
        // Da um dano 2 vezes maior que a vida da entidade, só pra garantir. (Matar ela)
        livingEntity.damage(livingEntity.getMaxHealth() * 2, e.getEntity().getKiller());
      }
    }
  }
}

No caso, se você quisesse matar apenas entidades do mesmo tipo que a entidade que foi morta, bastaria adicionar "&& entity.getType() == e.getEntity().getType()"

ali onde está o "if (entity instanceof LivingEntity) {"

Link para o comentário
Compartilhar em outros sites

@EventHandler
public void onEntityDeath(EntityDeathEvent e) {
  // Verifica se foi um jogador que matou
  if (e.getEntity().getKiller() != null) {
    
    // Pega todas as entidades num raio de 5 blocos (não tenho certeza), 
    // que no caso seria 1/2 do valor informado.
    // https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Entity.html#getNearbyEntities(double,%20double,%20double)
    List<Entity> nearby = e.getEntity().getNearbyEntities(10, 10, 10);
    
    // Percorre todas as entidades que foram encontradas
    for (Entity entity : nearby) {
      // Verifica se a entidade é uma entidade viva (você não pode matar um Item '-')
      if (entity instanceof LivingEntity) {
        LivingEntity livingEntity = (LivingEntity) entity;
        
        // Da um dano 2 vezes maior que a vida da entidade, só pra garantir. (Matar ela)
        livingEntity.damage(livingEntity.getMaxHealth() * 2, e.getEntity().getKiller());
      }
    }
  }
}

No caso, se você quisesse matar apenas entidades do mesmo tipo que a entidade que foi morta, bastaria adicionar "&& entity.getType() == e.getEntity().getType()"

ali onde está o "if (entity instanceof LivingEntity) {"

 

 l4OcszK.png

Link para o comentário
Compartilhar em outros sites

Qual versão do bukkit c ta usando?

 

Tenta mudar o

 

LivingEntity livingEntity ...w

 

pra

 

Damageable livingEntity = (Damageable) entity;

ja resolvi com 

 
livingEntity.damage(1000, e.getEntity().getKiller());
 
que da 1000 em cada mas acho que futuramente vou ter que usar um contra pra n funcionar em wither e enderdragon
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...