Search in sources :

Example 1 with Wither

use of org.bukkit.entity.Wither in project RedProtect by FabioZumbi12.

the class RPEntityListener method onCreatureSpawn.

@EventHandler
public void onCreatureSpawn(CreatureSpawnEvent event) {
    if (event.isCancelled()) {
        return;
    }
    Entity e = event.getEntity();
    if (e == null) {
        return;
    }
    RedProtect.get().logger.debug("Spawn monster " + event.getEntityType().name());
    if (e instanceof Wither && event.getSpawnReason().equals(SpawnReason.BUILD_WITHER)) {
        Location l = event.getLocation();
        Region r = RedProtect.get().rm.getTopRegion(l);
        if (r != null && !r.canSpawnWhiter()) {
            event.isCancelled();
            return;
        }
    }
    if (e instanceof Monster) {
        Location l = event.getLocation();
        Region r = RedProtect.get().rm.getTopRegion(l);
        if (r != null && !r.canSpawnMonsters()) {
            RedProtect.get().logger.debug("Cancelled spawn of monster " + event.getEntityType().name());
            event.setCancelled(true);
        }
    }
    if (e instanceof LivingEntity && (!(e instanceof Monster) && !(e instanceof Player)) && (RedProtect.get().version >= 180 && !(e instanceof ArmorStand)) && !(e instanceof Hanging)) {
        Location l = event.getLocation();
        Region r = RedProtect.get().rm.getTopRegion(l);
        if (r != null && !r.canSpawnPassives()) {
            RedProtect.get().logger.debug("Cancelled spawn of animal " + event.getEntityType().name());
            event.setCancelled(true);
        }
    }
}
Also used : Wither(org.bukkit.entity.Wither) LivingEntity(org.bukkit.entity.LivingEntity) Entity(org.bukkit.entity.Entity) LivingEntity(org.bukkit.entity.LivingEntity) Player(org.bukkit.entity.Player) ArmorStand(org.bukkit.entity.ArmorStand) Hanging(org.bukkit.entity.Hanging) Monster(org.bukkit.entity.Monster) Region(br.net.fabiozumbi12.RedProtect.Bukkit.Region) Location(org.bukkit.Location) EventHandler(org.bukkit.event.EventHandler)

Example 2 with Wither

use of org.bukkit.entity.Wither in project Prism-Bukkit by prism.

the class PrismEntityEvents method onEntityChangeBlock.

/**
 * EntityChangeBlockEvent.
 * @param event EntityChangeBlockEvent
 */
// TODO: This is a mess. Please, for the love of god, revisit and fix.
@Deprecated
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onEntityChangeBlock(final EntityChangeBlockEvent event) {
    final String entity = MiscUtils.getEntityName(event.getEntity());
    // Technically I think that I really should name it "entity-eat" for
    // better consistency and
    // in case other mobs ever are made to eat. But that's not as fun
    Material to = event.getTo();
    Material from = event.getBlock().getType();
    if (from == Material.GRASS && to == Material.DIRT) {
        if (event.getEntityType() != EntityType.SHEEP) {
            return;
        }
        if (!Prism.getIgnore().event("sheep-eat", event.getBlock())) {
            return;
        }
        RecordingQueue.addToQueue(ActionFactory.createBlock("sheep-eat", event.getBlock(), entity));
    } else if (to == Material.AIR ^ from == Material.AIR && event.getEntity() instanceof Enderman) {
        if (from == Material.AIR) {
            if (!Prism.getIgnore().event("enderman-place", event.getBlock())) {
                return;
            }
            BlockState state = event.getBlock().getState();
            state.setType(to);
            RecordingQueue.addToQueue(ActionFactory.createBlock("enderman-place", state, entity));
        } else {
            if (!Prism.getIgnore().event("enderman-pickup", event.getBlock())) {
                return;
            }
            BlockState state = event.getBlock().getState();
            state.setBlockData(event.getBlockData());
            RecordingQueue.addToQueue(ActionFactory.createBlock("enderman-pickup", state, entity));
        }
    } else if (to == Material.AIR && event.getEntity() instanceof Wither) {
        if (!Prism.getIgnore().event("entity-break", event.getBlock())) {
            return;
        }
        RecordingQueue.addToQueue(ActionFactory.createBlock("block-break", event.getBlock(), event.getEntityType().name().toLowerCase()));
    }
}
Also used : Wither(org.bukkit.entity.Wither) BlockState(org.bukkit.block.BlockState) Enderman(org.bukkit.entity.Enderman) Material(org.bukkit.Material) EventHandler(org.bukkit.event.EventHandler)

Example 3 with Wither

use of org.bukkit.entity.Wither in project RedProtect by FabioZumbi12.

the class RPGlobalListener method onCreatureSpawn.

@EventHandler
public void onCreatureSpawn(CreatureSpawnEvent event) {
    RedProtect.get().logger.debug("RPGlobalListener - Is CreatureSpawnEvent event! Cancelled? " + event.isCancelled());
    if (event.isCancelled()) {
        return;
    }
    Entity e = event.getEntity();
    if (e == null) {
        return;
    }
    Location l = event.getLocation();
    Region r = RedProtect.get().rm.getTopRegion(l);
    if (r != null) {
        return;
    }
    if (e instanceof Wither && event.getSpawnReason().equals(SpawnReason.BUILD_WITHER) && !RPConfig.getGlobalFlagBool(e.getWorld().getName() + ".spawn-wither")) {
        event.setCancelled(true);
        return;
    }
    if (e instanceof Monster && !RPConfig.getGlobalFlagBool(e.getWorld().getName() + ".spawn-monsters")) {
        if (event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.NATURAL) || event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.SPAWNER) || event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.CHUNK_GEN) || event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.DEFAULT)) {
            event.setCancelled(true);
            return;
        }
    }
    if ((e instanceof Animals || e instanceof Villager || e instanceof Golem) && !RPConfig.getGlobalFlagBool(e.getWorld().getName() + ".spawn-passives")) {
        if (event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.NATURAL) || event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.SPAWNER) || event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.CHUNK_GEN) || event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.DEFAULT)) {
            event.setCancelled(true);
        }
    }
}
Also used : Wither(org.bukkit.entity.Wither) Golem(org.bukkit.entity.Golem) Entity(org.bukkit.entity.Entity) LivingEntity(org.bukkit.entity.LivingEntity) Animals(org.bukkit.entity.Animals) Monster(org.bukkit.entity.Monster) Villager(org.bukkit.entity.Villager) Region(br.net.fabiozumbi12.RedProtect.Bukkit.Region) Location(org.bukkit.Location) EventHandler(org.bukkit.event.EventHandler)

Example 4 with Wither

use of org.bukkit.entity.Wither in project modules-extra by CubeEngine.

the class ListenerDeath method onEntityDeath.

@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onEntityDeath(EntityDeathEvent event) {
    // TODO handle when there is no reference on lookup of dependent actions
    DeathKill killAction = this.newAction(DeathKill.class, event.getEntity().getWorld());
    if (killAction != null) {
        // TODO check config for killer type
        killAction.setLocation(event.getEntity().getLocation());
        EntityDamageEvent cause = event.getEntity().getLastDamageCause();
        if (cause == null) {
            killAction.otherKiller = DamageCause.CUSTOM;
        } else if (cause instanceof EntityDamageByEntityEvent) {
            Entity damager = ((EntityDamageByEntityEvent) cause).getDamager();
            if (damager instanceof Player) {
                killAction.playerKiller = new PlayerSection((Player) damager);
            } else if (damager instanceof Projectile) {
                killAction.projectile = true;
                if (((Projectile) damager).getShooter() instanceof Entity) {
                    if (((Projectile) damager).getShooter() instanceof Player) {
                        killAction.playerKiller = new PlayerSection((Player) ((Projectile) damager).getShooter());
                    } else {
                        killAction.entityKiller = new EntitySection((Entity) ((Projectile) damager).getShooter());
                    }
                } else {
                    killAction.entityKiller = new EntitySection(damager);
                }
            } else {
                killAction.entityKiller = new EntitySection(damager);
            }
        } else {
            killAction.otherKiller = cause.getCause();
        }
        this.logAction(killAction);
    }
    Reference<DeathKill> reference = this.reference(killAction);
    LivingEntity killed = event.getEntity();
    if (killed instanceof Player) {
        DeathPlayer action = this.newAction(DeathPlayer.class, killed.getWorld());
        if (action != null) {
            action.killer = reference;
            action.setPlayer((Player) killed);
            this.logAction(action);
        }
        if (this.isActive(DeathDrop.class, event.getEntity().getWorld())) {
            Reference<DeathPlayer> deathRef = this.reference(action);
            for (ItemStack itemStack : event.getDrops()) {
                PlayerDeathDrop dropAction = newAction(PlayerDeathDrop.class);
                dropAction.item = itemStack;
                dropAction.death = deathRef;
                this.logAction(dropAction);
            }
        }
        return;
    }
    Class<? extends EntityDeathAction> actionType;
    if (killed instanceof Wither || killed instanceof EnderDragon) {
        actionType = DeathBoss.class;
    } else if (killed instanceof Animals) {
        if (killed instanceof Tameable && ((Tameable) killed).isTamed()) {
            actionType = DeathPet.class;
        } else {
            actionType = DeathAnimal.class;
        }
    } else if (killed instanceof Villager) {
        actionType = DeathNpc.class;
    } else if (killed instanceof Monster) {
        actionType = DeathMonster.class;
    } else {
        actionType = DeathOther.class;
    }
    EntityDeathAction action = this.newAction(actionType, killed.getWorld());
    if (action != null) {
        action.setKilled(killed);
        action.setLocation(killed.getLocation());
        action.killer = reference;
        this.logAction(action);
    }
    Reference<EntityDeathAction> deathRef = this.reference(action);
    if (this.isActive(DeathDrop.class, event.getEntity().getWorld())) {
        for (ItemStack itemStack : event.getDrops()) {
            DeathDrop dropAction = newAction(DeathDrop.class);
            dropAction.item = itemStack;
            dropAction.death = deathRef;
            this.logAction(dropAction);
        }
    }
}
Also used : LivingEntity(org.bukkit.entity.LivingEntity) Entity(org.spongepowered.api.entity.Entity) PlayerSection(org.cubeengine.module.log.action.block.player.ActionPlayerBlock.PlayerSection) LivingEntity(org.bukkit.entity.LivingEntity) EnderDragon(org.bukkit.entity.EnderDragon) Monster(org.bukkit.entity.Monster) Villager(org.bukkit.entity.Villager) EntitySection(org.cubeengine.module.log.action.block.entity.ActionEntityBlock.EntitySection) EntityDamageEvent(org.bukkit.event.entity.EntityDamageEvent) Wither(org.bukkit.entity.Wither) Player(org.spongepowered.api.entity.player.Player) Tameable(org.bukkit.entity.Tameable) Projectile(org.bukkit.entity.Projectile) Animals(org.bukkit.entity.Animals) EntityDamageByEntityEvent(org.bukkit.event.entity.EntityDamageByEntityEvent) ItemStack(org.spongepowered.api.item.inventory.ItemStack) EventHandler(org.bukkit.event.EventHandler)

Example 5 with Wither

use of org.bukkit.entity.Wither in project Citizens2 by CitizensDev.

the class WitherTrait method run.

@Override
public void run() {
    if (npc.getEntity() instanceof Wither) {
        Wither wither = (Wither) npc.getEntity();
        NMS.setWitherCharged(wither, charged);
    }
}
Also used : Wither(org.bukkit.entity.Wither)

Aggregations

Wither (org.bukkit.entity.Wither)5 EventHandler (org.bukkit.event.EventHandler)4 LivingEntity (org.bukkit.entity.LivingEntity)3 Monster (org.bukkit.entity.Monster)3 Region (br.net.fabiozumbi12.RedProtect.Bukkit.Region)2 Location (org.bukkit.Location)2 Animals (org.bukkit.entity.Animals)2 Entity (org.bukkit.entity.Entity)2 Villager (org.bukkit.entity.Villager)2 Material (org.bukkit.Material)1 BlockState (org.bukkit.block.BlockState)1 ArmorStand (org.bukkit.entity.ArmorStand)1 EnderDragon (org.bukkit.entity.EnderDragon)1 Enderman (org.bukkit.entity.Enderman)1 Golem (org.bukkit.entity.Golem)1 Hanging (org.bukkit.entity.Hanging)1 Player (org.bukkit.entity.Player)1 Projectile (org.bukkit.entity.Projectile)1 Tameable (org.bukkit.entity.Tameable)1 EntityDamageByEntityEvent (org.bukkit.event.entity.EntityDamageByEntityEvent)1