Disable Mob Attack!

Discussion in 'Plugin Development' started by zDubsCrazy, Aug 10, 2014.

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

    zDubsCrazy

    How do I disable the attack of a mob in player, for example the blaze and wither boss?

    Thanks in advance.
     
  2. Offline

    CullanP


    So prevent damage from a wither and blaze? Or disable the fire spread/Wither explosions?
     
  3. Offline

    zDubsCrazy

    CullanP
    explosion of witherboss and fireball of blaze...
     
  4. Offline

    CullanP


    Do you want the damage to still happen to the player?
     
  5. Offline

    zDubsCrazy

  6. Offline

    CullanP

    Tell me how this works out for you, Make sure you make a plugin.yml for this

    Code:
    package main;
     
    import java.util.logging.Logger;
     
    import org.bukkit.entity.Blaze;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.Wither;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityChangeBlockEvent;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.entity.EntityDamageEvent;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class BlockedCmds extends JavaPlugin implements Listener {
     
    Logger log = Logger.getLogger("Minecraft");
    public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
    }
     
    public void onDisable() {}
     
    @EventHandler
    public void onEntityDamge(EntityDamageByEntityEvent event) {
    Entity entity = event.getEntity();
       if (entity instanceof Wither) {
       event.setCancelled(true);
       return;
       }
       if (entity instanceof Blaze) {
       event.setCancelled(true);
       return;
       }
    }
     
        @EventHandler
        public void onEntityChangeBlock(EntityChangeBlockEvent event) {
       Entity entity = event.getEntity();
       if (entity instanceof Wither) {
       event.setCancelled(true);
       return;
       }
       if (entity instanceof Blaze) {
       event.setCancelled(true);
       return;
       }
        }
    }
     
  7. Offline

    zDubsCrazy

    CullanP
    This disable Blaze fireball and WitherBoss explosion?
     
  8. Offline

    CullanP


    I know for sure that it will disable the damage from the mobs and the WitherBoss explosion and by disable fireball, do you mean the fire-spread? You can use worldguard to block fire-spread
     
  9. Offline

    zDubsCrazy

    CullanP
    No disabled Blaze fireball.
     
  10. Offline

    CullanP


    I'm pretty sure blaze fireball damage is disabled. Test it and tell me if it has accomplished what you want
     
  11. Offline

    zDubsCrazy

    CullanP
    What I want is prevent the shoot of fireballs of Blaze, and that WitherBoss not shoot their explosions.
     
  12. Offline

    CullanP

    Try this code. If you don't care for the block damage/mob damage then remove onEntityDamage and onEntityChangeBlock

    Code:
    package main;
     
    import java.util.logging.Logger;
     
     
    import org.bukkit.entity.Blaze;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.Wither;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityChangeBlockEvent;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.entity.ProjectileLaunchEvent;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class BlockedCmds extends JavaPlugin implements Listener {
     
    Logger log = Logger.getLogger("Minecraft");
    public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
    }
     
    public void onDisable() {}
     
    @EventHandler
    public void onEntityShoot(ProjectileLaunchEvent event) {
    Entity entity = event.getEntity();
    if (entity instanceof Wither) {
    event.setCancelled(true);
    return;
    }
    if (entity instanceof Blaze) {
    event.setCancelled(true);
    return;
    }
    }
     
    @EventHandler
    public void onEntityDamge(EntityDamageByEntityEvent event) {
    Entity entity = event.getEntity();
       if (entity instanceof Wither) {
       event.setCancelled(true);
       return;
       }
       if (entity instanceof Blaze) {
       event.setCancelled(true);
       return;
       }
    }
     
        @EventHandler
        public void onEntityChangeBlock(EntityChangeBlockEvent event) {
       Entity entity = event.getEntity();
       if (entity instanceof Wither) {
       event.setCancelled(true);
       return;
       }
       if (entity instanceof Blaze) {
       event.setCancelled(true);
       return;
       }
       }
    }
     
  13. Offline

    zDubsCrazy

    CullanP
    Thanks. l try that, I think it works.

    CullanP
    Code:java
    1. @EventHandler
    2. public void onEntityShoot(ProjectileLaunchEvent e) {
    3.  
    4. if(e.getEntity() instanceof LivingEntity) {
    5. LivingEntity entidade = (LivingEntity)e.getEntity();
    6.  
    7. if(entidade instanceof Blaze) {
    8. if(mobs.containsKey(entidade)) {
    9. e.setCancelled(true);
    10. return;
    11. }
    12. }
    13. }
    14. }

    'mobs is a HashMap, with LivingEntity, String', this not Work.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 9, 2016
  14. Offline

    CullanP

    You're right, sorry. I didn't really test the code to see if it worked. Did you get it working? :) If not then I'll change my code real quick
     
  15. Offline

    zDubsCrazy

    CullanP
    Thanks for help, but i am could alone. The error was that you were checking if the entity that was shot the fireball is the Mob that shoots. My code:

    Code:java
    1. @EventHandler
    2. public void antiTiro(ProjectileLaunchEvent e) {
    3.  
    4. if(e.getEntity() instanceof Fireball) {
    5. Fireball bola = (Fireball)e.getEntity();
    6. if(bola.getShooter() instanceof LivingEntity) {
    7. LivingEntity entidade = (LivingEntity)bola.getShooter();
    8. if(mobs.containsKey(entidade)) {
    9. e.setCancelled(true);
    10. return;
    11. }
    12. }
    13. }
    14.  
    15. if(e.getEntity() instanceof WitherSkull) {
    16. WitherSkull tiro = (WitherSkull)e.getEntity();
    17.  
    18. if(tiro.getShooter() instanceof LivingEntity) {
    19. LivingEntity entidade = (LivingEntity)tiro.getShooter();
    20. if(mobs.containsKey(entidade)) {
    21. e.setCancelled(true);
    22. return;
    23. }
    24. }
    25. }
    26.  
    27. }
     
  16. Offline

    CullanP

    As long as you are just trying to stop only the mob from firing, no need to use a hashmap or get the fireball/witherskull. Here's a simple way of doing it (Less code involved)
    Code:
    package main;
     
    import java.util.logging.Logger;
    import org.bukkit.entity.Blaze;
    import org.bukkit.entity.Wither;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.ProjectileLaunchEvent;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class BlockedCmds extends JavaPlugin implements Listener {
     
    Logger log = Logger.getLogger("Minecraft");
    public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
    }
     
    public void onDisable() {}
     
    @EventHandler
    public void onEntityShoot(ProjectileLaunchEvent e) {
            if(e.getEntity().getShooter() instanceof Blaze) {
                e.setCancelled(true);
                return;
            }
            if(e.getEntity().getShooter() instanceof Wither) {
          e.setCancelled(true);
          return;
              }
            }
        }
     
Thread Status:
Not open for further replies.

Share This Page