Example usage for net.minecraftforge.event.world ExplosionEvent.Detonate getWorld

List of usage examples for net.minecraftforge.event.world ExplosionEvent.Detonate getWorld

Introduction

In this page you can find the example usage for net.minecraftforge.event.world ExplosionEvent.Detonate getWorld.

Prototype

public World getWorld() 

Source Link

Usage

From source file:de.ellpeck.actuallyadditions.mod.blocks.BlockShockSuppressor.java

@SubscribeEvent
public void onExplosion(ExplosionEvent.Detonate event) {
    World world = event.getWorld();
    if (!world.isRemote) {
        List<BlockPos> affectedBlocks = event.getAffectedBlocks();
        List<Entity> affectedEntities = event.getAffectedEntities();

        int rangeSq = TileEntityShockSuppressor.RANGE * TileEntityShockSuppressor.RANGE;
        int use = TileEntityShockSuppressor.USE_PER;

        for (TileEntityShockSuppressor suppressor : TileEntityShockSuppressor.SUPPRESSORS) {
            if (!suppressor.isRedstonePowered) {
                BlockPos supPos = suppressor.getPos();

                List<Entity> entitiesToRemove = new ArrayList<Entity>();
                List<BlockPos> posesToRemove = new ArrayList<BlockPos>();

                for (BlockPos pos : affectedBlocks) {
                    if (pos.distanceSq(supPos) <= rangeSq) {
                        posesToRemove.add(pos);
                    }/*from   w w  w .j  av a  2  s  .  c  o m*/
                }
                for (Entity entity : affectedEntities) {
                    if (entity.getPositionVector().squareDistanceTo(supPos.getX(), supPos.getY(),
                            supPos.getZ()) <= rangeSq) {
                        entitiesToRemove.add(entity);
                    }
                }

                Collections.shuffle(entitiesToRemove);
                Collections.shuffle(posesToRemove);

                for (BlockPos pos : posesToRemove) {
                    if (suppressor.storage.getEnergyStored() >= use) {
                        suppressor.storage.extractEnergyInternal(use, false);
                        affectedBlocks.remove(pos);
                    } else {
                        break;
                    }
                }
                for (Entity entity : entitiesToRemove) {
                    if (suppressor.storage.getEnergyStored() >= use) {
                        suppressor.storage.extractEnergyInternal(use, false);
                        affectedEntities.remove(entity);
                    } else {
                        break;
                    }
                }
            }
        }
    }
}

From source file:de.sanandrew.mods.turretmod.event.ExplosionEventHandler.java

License:Creative Commons License

@SubscribeEvent
public void onExplosion(ExplosionEvent.Detonate event) {
    float radius = event.getExplosion().size;
    AxisAlignedBB aabb = new AxisAlignedBB(-radius, -radius, -radius, radius, radius, radius).grow(24.0D)
            .offset(event.getExplosion().getPosition());

    for (EntityLivingBase living : event.getWorld().getEntitiesWithinAABB(EntityLivingBase.class, aabb,
            CHK_ENTITY::test)) {/*from  ww  w. j a va  2  s. c  o  m*/
        ShieldHandler.onExplosion((ITurretInst) living, aabb, event.getAffectedBlocks(),
                event.getAffectedEntities());
    }
}

From source file:vazkii.botania.common.item.equipment.bauble.ItemGoddessCharm.java

License:Open Source License

@SubscribeEvent
public static void onExplosion(ExplosionEvent.Detonate event) {
    Explosion e = event.getExplosion();//from w w  w.ja  va 2  s  .  c om
    Vec3d vec = e.getPosition();
    List<EntityPlayer> players = event.getWorld().getEntitiesWithinAABB(EntityPlayer.class,
            new AxisAlignedBB(vec.xCoord, vec.yCoord, vec.zCoord, vec.xCoord, vec.yCoord, vec.zCoord).expand(8,
                    8, 8));

    for (EntityPlayer player : players) {
        IInventory inv = BaublesApi.getBaubles(player);
        ItemStack charm = inv.getStackInSlot(6);
        if (charm != null && charm.getItem() instanceof ItemGoddessCharm
                && ManaItemHandler.requestManaExact(charm, player, COST, true)) {
            event.getAffectedBlocks().clear();
            return;
        }
    }
}