71 lines
2 KiB
Java
71 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);
|
|
}
|
|
}
|