How to check if an entity is on fire?

Discussion in 'Plugin Development' started by frozenpoptartmc, Sep 1, 2012.

Thread Status:
Not open for further replies.
  1. Offline

    frozenpoptartmc

    Hello :p
    I want to create a "pyro" class for a game I'm working on.
    Pyros have bows with flame enchantments on them and a diamond axe.
    Is it possible to check if the player is on fire when the pyro hits them with a diamond axe?
     
  2. Offline

    jamietech

    You could try LivingEntity.getFireTicks != 0
     
  3. Offline

    MrMag518

    Check the damage cause for fire & firetick, if it's a LivingEntity.
     
  4. Offline

    frozenpoptartmc

    Code:
    LivingEntity.getFireTicks != 0
    
    with what event?
    then what would i do after that? :p
     
  5. Offline

    jamietech

    EntityDamageByEntityEvent?
    What do you want to do after that?
     
  6. Offline

    frozenpoptartmc

    Check if it was getting hit by a diamond axe, then set the entity that is on fire's health to 0.
     
  7. Offline

    MrMag518

    Code:java
    1.  
    2. @EventHandler
    3. public void checkDamage(EntityDamageEvent event) {
    4. if(event.getEntity() instanceof Player) {
    5. if(event.getCause() == DamageCause.FIRE || event.getCause() == DamageCause.FIRE_TICK) {
    6. // Now you can do things.
    7. }
    8. }
    9. }
    10. }
    11.  
     
  8. Offline

    frozenpoptartmc

    It doesn't check if the player is being hit by a diamond axe, though.
     
  9. Offline

    jamietech

    ITC no-one reads.
    OP, hold on 5 minutes.

    Code:java
    1. @EventHandler
    2. public void onDamage(EntityDamageByEntityEvent event) {
    3. if (event.getDamager() instanceof Player) { // Is the damager a player?
    4. Player player = (Player) event.getDamager(); // Cast damager to player
    5. if (player.getItemInHand().getType() == Material.DIAMOND_AXE && event.getEntity().getFireTicks() != 0) { // Is the damager hitting with a diamond axe and is the entity hit burning?
    6. if (event.getEntity() instanceof Player) { // Is the entity a player?
    7. Player hurt = (Player) event.getEntity(); // Cast entity to player
    8. hurt.damage(9001); // Ensure death
    9. } else {
    10. event.getEntity().playEffect(EntityEffect.DEATH); // Fake death
    11. event.getEntity().remove(); // Remove from world
    12. }
    13. }
    14. }
    15. }


    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 28, 2016
  10. Offline

    MrMag518

    Code:java
    1.  
    2. @EventHandler
    3. public void checkDamage(EntityDamageByEntityEvent event) {
    4. if(event.getDamager() instanceof Player && event.getEntity() instanceof Player)
    5. {
    6. Player victim = (Player)event.getEntity();
    7. Player damager = (Player)event.getDamager();
    8. if(damager.getInventory().getItemInHand().getType() == Material.DIAMOND_AXE)
    9. {
    10. if(victim.getFireTicks() > 0)
    11. {
    12. // Now do things.
    13. }
    14. }
    15. }
    16. }
    17.  


    If that doesn't work, try:
    Code:java
    1.  
    2. if(event.getDamager() instanceof Player && event.getEntity() instanceof Player)
    3. {
    4. final Player victim = (Player)event.getEntity();
    5. Player damager = (Player)event.getDamager();
    6. if(damager.getInventory().getItemInHand().getType() == Material.DIAMOND_AXE)
    7. {
    8. Bukkit.getServer().getScheduler().scheduleAsyncDelayedTask(plugin, new Runnable() {
    9. @Override
    10. public void run() {
    11. if(victim.getFireTicks() > 0)
    12. {
    13. // Now do things.
    14. }
    15. }
    16. }, 10);
    17. }
    18. }
    19.  
     
Thread Status:
Not open for further replies.

Share This Page