Search in sources :

Example 1 with BuffEffectManaRegen

use of am2.buffs.BuffEffectManaRegen in project ArsMagica2 by Mithion.

the class TileEntityBlackAurem method updateEntity.

@Override
public void updateEntity() {
    if (worldObj.isRemote) {
        this.rotation += this.rotationIncrement;
    } else {
        surroundingCheckTicks++;
    }
    if (worldObj.isRemote || ticksSinceLastEntityScan++ > 25) {
        updateNearbyEntities();
        ticksSinceLastEntityScan = 0;
    }
    Iterator<EntityLivingBase> it = cachedEntities.iterator();
    while (it.hasNext()) {
        EntityLivingBase ent = it.next();
        if (ent.isDead) {
            it.remove();
            continue;
        }
        MovingObjectPosition mop = this.worldObj.rayTraceBlocks(Vec3.createVectorHelper(xCoord + 0.5, yCoord + 1.5, zCoord + 0.5), Vec3.createVectorHelper(ent.posX, ent.posY + ent.getEyeHeight(), ent.posZ), false);
        if (EntityUtilities.isSummon(ent) || mop != null) {
            continue;
        }
        ent.motionY = 0;
        ent.motionX = 0;
        ent.motionZ = 0;
        double deltaX = this.xCoord + 0.5f - ent.posX;
        double deltaZ = this.zCoord + 0.5f - ent.posZ;
        double deltaY = this.yCoord - ent.posY;
        double angle = Math.atan2(deltaZ, deltaX);
        double offsetX = Math.cos(angle) * 0.1;
        double offsetZ = Math.sin(angle) * 0.1;
        double offsetY = 0.05f;
        double distanceHorizontal = deltaX * deltaX + deltaZ * deltaZ;
        double distanceVertical = this.yCoord - ent.posY;
        boolean spawnedParticles = false;
        if (distanceHorizontal < 1.3) {
            if (distanceVertical < -1.5) {
                if (worldObj.isRemote && worldObj.rand.nextInt(10) < 3) {
                    AMCore.proxy.particleManager.BoltFromPointToPoint(worldObj, xCoord + 0.5, yCoord + 1.3, zCoord + 0.5, ent.posX, ent.posY, ent.posZ, 4, 0x000000);
                }
            }
            if (distanceVertical < -2) {
                offsetY = 0;
                if (!worldObj.isRemote) {
                    if (ent.attackEntityFrom(DamageSources.darkNexus, 4)) {
                        if (ent.getHealth() <= 0) {
                            ent.setDead();
                            float power = ((int) Math.ceil((ent.getMaxHealth() * (ent.ticksExisted / 20)) % 5000)) * this.powerMultiplier;
                            PowerNodeRegistry.For(this.worldObj).insertPower(this, PowerTypes.DARK, power);
                        }
                    }
                }
            }
        }
        if (worldObj.isRemote) {
            if (!arcs.containsKey(ent)) {
                AMLineArc arc = (AMLineArc) AMCore.proxy.particleManager.spawn(worldObj, "textures/blocks/oreblocksunstone.png", xCoord + 0.5, yCoord + 1.3, zCoord + 0.5, ent);
                if (arc != null) {
                    arc.setExtendToTarget();
                    arc.setRBGColorF(1, 1, 1);
                }
                arcs.put(ent, arc);
            }
            Iterator arcIterator = arcs.keySet().iterator();
            ArrayList<Entity> toRemove = new ArrayList<Entity>();
            while (arcIterator.hasNext()) {
                Entity arcEnt = (Entity) arcIterator.next();
                AMLineArc arc = (AMLineArc) arcs.get(arcEnt);
                if (arcEnt == null || arcEnt.isDead || arc == null || arc.isDead || new AMVector3(ent).distanceSqTo(new AMVector3(xCoord, yCoord, zCoord)) > 100)
                    toRemove.add(arcEnt);
            }
            for (Entity e : toRemove) {
                arcs.remove(e);
            }
        }
        if (!worldObj.isRemote)
            ent.moveEntity(offsetX, offsetY, offsetZ);
    }
    if (surroundingCheckTicks % 100 == 0) {
        checkNearbyBlockState();
        surroundingCheckTicks = 1;
        if (!worldObj.isRemote && PowerNodeRegistry.For(this.worldObj).checkPower(this, this.capacity * 0.1f)) {
            List<EntityPlayer> nearbyPlayers = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(this.xCoord - 2, this.yCoord, this.zCoord - 2, this.xCoord + 2, this.yCoord + 3, this.zCoord + 2));
            for (EntityPlayer p : nearbyPlayers) {
                if (p.isPotionActive(BuffList.manaRegen.id))
                    continue;
                p.addPotionEffect(new BuffEffectManaRegen(600, 3));
            }
        }
    //TODO:
    /*if (rand.nextDouble() < (this.getCharge() / this.getCapacity()) * 0.01){
					int maxSev = (int)Math.ceil((this.getCharge() / this.getCapacity()) * 2) + rand.nextInt(2);
					IllEffectsManager.instance.ApplyRandomBadThing(this, IllEffectSeverity.values()[maxSev], BadThingTypes.DARKNEXUS);
				}*/
    }
    super.callSuperUpdate();
}
Also used : Entity(net.minecraft.entity.Entity) ArrayList(java.util.ArrayList) BuffEffectManaRegen(am2.buffs.BuffEffectManaRegen) AMLineArc(am2.particles.AMLineArc) AMVector3(am2.api.math.AMVector3) MovingObjectPosition(net.minecraft.util.MovingObjectPosition) EntityLivingBase(net.minecraft.entity.EntityLivingBase) Iterator(java.util.Iterator) EntityPlayer(net.minecraft.entity.player.EntityPlayer)

Example 2 with BuffEffectManaRegen

use of am2.buffs.BuffEffectManaRegen in project ArsMagica2 by Mithion.

the class TileEntityCelestialPrism method updateEntity.

@Override
public void updateEntity() {
    if (surroundingCheckTicks++ % 100 == 0) {
        checkNearbyBlockState();
        surroundingCheckTicks = 1;
        if (!worldObj.isRemote && PowerNodeRegistry.For(this.worldObj).checkPower(this, this.capacity * 0.1f)) {
            List<EntityPlayer> nearbyPlayers = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(this.xCoord - 2, this.yCoord, this.zCoord - 2, this.xCoord + 2, this.yCoord + 3, this.zCoord + 2));
            for (EntityPlayer p : nearbyPlayers) {
                if (p.isPotionActive(BuffList.manaRegen.id))
                    continue;
                p.addPotionEffect(new BuffEffectManaRegen(600, 1));
            }
        }
    }
    if (onlyChargeAtNight == isNight()) {
        PowerNodeRegistry.For(this.worldObj).insertPower(this, PowerTypes.LIGHT, 0.25f * powerMultiplier);
        if (worldObj.isRemote) {
            if (particleCounter++ % 180 == 0) {
                particleCounter = 1;
                AMCore.proxy.particleManager.RibbonFromPointToPoint(worldObj, xCoord + worldObj.rand.nextFloat(), yCoord + (worldObj.rand.nextFloat() * 2), zCoord + worldObj.rand.nextFloat(), xCoord + worldObj.rand.nextFloat(), yCoord + (worldObj.rand.nextFloat() * 2), zCoord + worldObj.rand.nextFloat());
            }
        }
    }
    super.callSuperUpdate();
}
Also used : EntityPlayer(net.minecraft.entity.player.EntityPlayer) BuffEffectManaRegen(am2.buffs.BuffEffectManaRegen)

Example 3 with BuffEffectManaRegen

use of am2.buffs.BuffEffectManaRegen in project ArsMagica2 by Mithion.

the class ItemManaPotion method onEaten.

@Override
public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) {
    par1ItemStack = new ItemStack(Items.glass_bottle);
    ExtendedProperties.For(par3EntityPlayer).setCurrentMana(ExtendedProperties.For(par3EntityPlayer).getCurrentMana() + getManaRestored());
    ExtendedProperties.For(par3EntityPlayer).forceSync();
    if (!par2World.isRemote) {
        par3EntityPlayer.addPotionEffect(new BuffEffectManaRegen(getManaRegenDuration(), getManaRegenLevel()));
    }
    return par1ItemStack;
}
Also used : BuffEffectManaRegen(am2.buffs.BuffEffectManaRegen) ItemStack(net.minecraft.item.ItemStack)

Example 4 with BuffEffectManaRegen

use of am2.buffs.BuffEffectManaRegen in project ArsMagica2 by Mithion.

the class TileEntityObelisk method updateEntity.

@Override
public void updateEntity() {
    surroundingCheckTicks++;
    if (isActive()) {
        if (surroundingCheckTicks % 100 == 0) {
            checkNearbyBlockState();
            surroundingCheckTicks = 1;
            if (!worldObj.isRemote && PowerNodeRegistry.For(this.worldObj).checkPower(this, this.capacity * 0.1f)) {
                List<EntityPlayer> nearbyPlayers = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(this.xCoord - 2, this.yCoord, this.zCoord - 2, this.xCoord + 2, this.yCoord + 3, this.zCoord + 2));
                for (EntityPlayer p : nearbyPlayers) {
                    if (p.isPotionActive(BuffList.manaRegen.id))
                        continue;
                    p.addPotionEffect(new BuffEffectManaRegen(600, 2));
                }
            }
        }
        float powerAmt = PowerNodeRegistry.For(worldObj).getPower(this, PowerTypes.NEUTRAL);
        float powerAdded = inventory[0] != null ? ObeliskFuelHelper.instance.getFuelBurnTime(inventory[0]) * (powerBase * powerMultiplier) : 0;
        float chargeThreshold = Math.max(this.getCapacity() - powerAdded, this.getCapacity() * 0.75f);
        if (burnTimeRemaining <= 0 && powerAmt < chargeThreshold) {
            burnTimeRemaining = ObeliskFuelHelper.instance.getFuelBurnTime(inventory[0]);
            if (burnTimeRemaining > 0) {
                setMaxBurnTime(burnTimeRemaining);
                if (this.inventory[0].getItem().hasContainerItem(this.inventory[0]))
                    this.inventory[0] = new ItemStack(this.inventory[0].getItem().getContainerItem());
                else
                    InventoryUtilities.decrementStackQuantity(this, 0, 1);
                sendCookUpdateToClients();
            }
        }
        if (burnTimeRemaining > 0) {
            burnTimeRemaining--;
            PowerNodeRegistry.For(worldObj).insertPower(this, PowerTypes.NEUTRAL, powerBase * powerMultiplier);
            if (burnTimeRemaining % 20 == 0)
                sendCookUpdateToClients();
        }
    } else {
        surroundingCheckTicks = 1;
    }
    if (worldObj.isRemote) {
        lastOffsetY = offsetY;
        offsetY = (float) Math.max(Math.sin(worldObj.getTotalWorldTime() / 20f) / 5, 0.25f);
        if (burnTimeRemaining > 0)
            burnTimeRemaining--;
    }
    super.updateEntity();
}
Also used : EntityPlayer(net.minecraft.entity.player.EntityPlayer) BuffEffectManaRegen(am2.buffs.BuffEffectManaRegen) ItemStack(net.minecraft.item.ItemStack)

Aggregations

BuffEffectManaRegen (am2.buffs.BuffEffectManaRegen)4 EntityPlayer (net.minecraft.entity.player.EntityPlayer)3 ItemStack (net.minecraft.item.ItemStack)2 AMVector3 (am2.api.math.AMVector3)1 AMLineArc (am2.particles.AMLineArc)1 ArrayList (java.util.ArrayList)1 Iterator (java.util.Iterator)1 Entity (net.minecraft.entity.Entity)1 EntityLivingBase (net.minecraft.entity.EntityLivingBase)1 MovingObjectPosition (net.minecraft.util.MovingObjectPosition)1