package minefantasy.mf2.entity.mob; import minefantasy.mf2.config.ConfigMobs; import minefantasy.mf2.entity.EntityDragonBreath; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Blocks; 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 FireBreath extends DragonBreath { public FireBreath(String name) { super(name); } @Override public DamageSource getDamageSource(EntityDragonBreath breath, EntityLivingBase shooter) { return shooter == null ? new DamageSource("fireblastBase").setFireDamage() : (new EntityDamageSourceIndirect("fireblast", breath, shooter)).setFireDamage(); } @Override @SideOnly(Side.CLIENT) public String getTexture(EntityDragonBreath instance) { return "textures/projectile/dragonbreath_fire"; } public void onHitEntity(Entity target, EntityDragonBreath instance) { super.onHitEntity(target, instance); if(target instanceof EntityLivingBase) { target.setFire(5); } } @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(!world.isRemote && world.isAirBlock(x, y+1, z)) { if(ConfigMobs.dragonGriefFire && hit.isSideSolid(world, x, y, z, ForgeDirection.UP) && hit.isFlammable(world, x, y+1, z, ForgeDirection.UP)) { world.setBlock(x, y+1, z, Blocks.fire); } if(!world.getGameRules().getGameRuleBooleanValue("mobGriefing"))return; if(ConfigMobs.dragonGriefGeneral && hit == Blocks.ice) { world.setBlock(x, y, z, Blocks.water); } if(ConfigMobs.dragonGriefGeneral && hit.getMaterial() == Material.glass) { world.playSoundEffect(x+0.5D, y+0.5D, z+0.5D, "dig.glass", 1.0F, 1.0F); world.setBlockToAir(x, y, z); } } } } }