GT5-Unofficial/main/java/gregtech/common/entities/GT_Entity_Arrow_Potion.java
2015-10-14 22:33:33 -04:00

72 lines
2 KiB
Java

package gregtech.common.entities;
import java.util.Random;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;
public class GT_Entity_Arrow_Potion
extends GT_Entity_Arrow
{
public GT_Entity_Arrow_Potion(World aWorld)
{
super(aWorld);
}
public GT_Entity_Arrow_Potion(World aWorld, double aX, double aY, double aZ)
{
super(aWorld, aX, aY, aZ);
}
public GT_Entity_Arrow_Potion(World aWorld, EntityLivingBase aEntity, float aSpeed)
{
super(aWorld, aEntity, aSpeed);
}
public void writeEntityToNBT(NBTTagCompound aNBT)
{
super.writeEntityToNBT(aNBT);
aNBT.setIntArray("mPotions", this.mPotions);
}
public void readEntityFromNBT(NBTTagCompound aNBT)
{
super.readEntityFromNBT(aNBT);
setPotions(aNBT.getIntArray("mPotions"));
}
public boolean breaksOnImpact()
{
return true;
}
public void setPotions(int... aPotions)
{
if (aPotions != null) {
this.mPotions = aPotions;
}
}
public int[] getPotions()
{
return this.mPotions;
}
private int[] mPotions = new int[0];
public int[] onHitEntity(Entity aHitEntity, Entity aShootingEntity, ItemStack aArrow, int aRegularDamage, int aMagicDamage, int aKnockback, int aFireDamage, int aHitTimer)
{
if ((aHitEntity instanceof EntityLivingBase)) {
for (int i = 3; i < this.mPotions.length; i += 4) {
if (aHitEntity.worldObj.rand.nextInt(100) < this.mPotions[i]) {
((EntityLivingBase)aHitEntity).addPotionEffect(new PotionEffect(this.mPotions[(i - 3)], this.mPotions[(i - 2)], this.mPotions[(i - 1)], false));
}
}
}
return super.onHitEntity(aHitEntity, aShootingEntity, aArrow, 1, aMagicDamage, aKnockback, aFireDamage, aHitTimer);
}
}