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();
}
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();
}
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;
}
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();
}
Aggregations