Solved Disabling TNT being able to damage players

Discussion in 'Plugin Development' started by Tyben, Mar 26, 2015.

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

    Tyben

    Hi, I was wondering how to disable tnt from hurting players... I've already disabled block damage and the ability to place it in another class file, I just want to know how to make it so that Primed TNT doesn't hurt players. Here is my current code that I have for it right now:

    package me.tyben.NoTnt;

    import org.bukkit.entity.Entity;
    import org.bukkit.entity.TNTPrimed;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
    import org.bukkit.plugin.java.JavaPlugin;

    public class EntityDamage extends JavaPlugin implements Listener {

    @EventHandler
    public void onHurt(EntityDamageByEntityEvent event){
    Entity entity = event.getEntity();
    if (event.getCause() == DamageCause.ENTITY_EXPLOSION){
    event.setDamage(0.0);
    event.setCancelled(true);
    }

    if (entity instanceof TNTPrimed){
    event.setDamage(0.0F);
    event.setCancelled(false);
    }

    }
    }
     
  2. Offline

    Konato_K

    @Tyben getEntity returns the entity that was damaged, use getDamager instead.
     
    Tyben likes this.
  3. Offline

    Tyben

    It still hurts the player when I use getDamager()
    package me.tyben.NoTnt;

    import org.bukkit.entity.Entity;
    import org.bukkit.entity.TNTPrimed;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
    import org.bukkit.plugin.java.JavaPlugin;

    public class EntityDamage extends JavaPlugin implements Listener {

    @EventHandler
    public void onHurt(EntityDamageByEntityEvent event){
    Entity entity = event.getDamager();
    if (event.getCause() == DamageCause.ENTITY_EXPLOSION){
    event.setDamage(0.0);
    event.setCancelled(true);
    }

    if (entity instanceof TNTPrimed){
    event.setDamage(0.0F);
    event.setCancelled(true);
    }

    }
    }
     
  4. Offline

    Konato_K

    @Tyben You need to register your events
     
    Tyben likes this.
  5. Offline

    Tyben

    Thank you so much! I'm stupid when it comes to Bukkit coding sometimes, I'm still learning! Thanks for the help!
     
Thread Status:
Not open for further replies.

Share This Page