package minefantasy.mf2.entity.mob;
import minefantasy.mf2.config.ConfigMobs;
import minefantasy.mf2.entity.EntityDragonBreath;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.init.Blocks;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EntityDamageSourceIndirect;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class FrostBreath extends DragonBreath
{
public FrostBreath(String name)
{
super(name);
}
@Override
public DamageSource getDamageSource(EntityDragonBreath breath, EntityLivingBase shooter)
{
return shooter == null ? new DamageSource("frostblastBase") : (new EntityDamageSourceIndirect("frostblast", breath, shooter));
}
@Override
@SideOnly(Side.CLIENT)
public String getTexture(EntityDragonBreath instance)
{
return "textures/projectile/dragonbreath_frost";
}
public void onHitEntity(Entity target, EntityDragonBreath instance)
{
super.onHitEntity(target, instance);
if(target instanceof EntityLivingBase)
{
((EntityLivingBase)target).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 100, 2));
}
}
@Override
public float modifyDamage(float dam)
{
return dam;
}
@Override
public void hitBlock(World world, EntityDragonBreath instance, int x, int y, int z, boolean impact)
{
Block hit = world.getBlock(x, y, z);
if(!world.isRemote && (impact || instance.rand.nextInt(20) == 0))
{
if(ConfigMobs.dragonGriefGeneral && world.isAirBlock(x, y+1, z))
{
if(hit.isSideSolid(world, x, y, z, ForgeDirection.UP))
{
world.setBlock(x, y+1, z, Blocks.snow_layer);
}
if(!world.getGameRules().getGameRuleBooleanValue("mobGriefing"))return;
if(hit == Blocks.water || hit == Blocks.flowing_water)
{
world.setBlock(x, y, z, Blocks.ice);
}
if(hit == Blocks.water || hit == Blocks.lava)
{
world.setBlock(x, y, z, Blocks.obsidian);
}
if(hit == Blocks.water || hit == Blocks.flowing_lava)
{
world.setBlock(x, y, z, Blocks.cobblestone);
}
}
}
}
}