CMI provides option to drop custom monster heads when you kill entity. To customize dropped heads check out customHeads.yml in main CMI plugin folder.

This is defined by percentage amount in general. Like in example you can have 5% to drop sheep head but only 1% to drop creeper head when killing one. 

  creeper:
DropChance: 1.0
sheep:
DropChance: 5.0

In addition to this you can define by how much you want to lower chance for each player after they got head for this type of mob. This is helpful in preventing exploiting while killing hundreds of mobs to farm heads. Keep in mind that this limitation will reset to original state after each server restart.

In this example player has 5% to get sheep head and after each instance they got one, chance to get next one will go down by 50% from previous one, so if initial chance was 5%, second one will be 2.5%, next 1.25%, then 0.625% and so on.

  sheep:
DropChance: 5.0
LowerWithEachDrop: 50.0

You can have as many custom heads as you want. There is no hard limit on this one, tho recommendation would be to keep it in reasonable numbers. To add new head simple add new text line which would contain texture string.  You can find custom head texture string at any site which has database set for it. As an example of one: https://minecraft-heads.com/.

Custom head texture line should start with number which will define chance of dropping that head in particular. So you can have some more rare heads then others for same entity type. Example

    - 100:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzI2NTIwODNmMjhlZDFiNjFmOWI5NjVkZjFhYmYwMTBmMjM0NjgxYzIxNDM1OTUxYzY3ZDg4MzY0NzQ5ODIyIn19fQ==

In this case head has 100% chance to be picked if random algorithm checks it before others. In case it would have less then 100%, lets say its only 10%. Then algorithm will try to roll “dice” and check if we can pick this head. If not, then it will move to another random head in the list and will try to pick it. So to avoid not dropping head at all even tho player should, keep atleast one head in list for particular mob type with 100% chance.

Optionally you can add custom head custom name by inserting into texture string. Example:

    - 100:&2Custom Head Name:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjZhNDExMmRmMWU0YmNlMmE1ZTI4NDE3ZjNhYWZmNzljZDY2ZTg4NWMzNzI0NTU0MTAyY2VmOGViOCJ9fX0=

In this case you will have head with Custom Head Name as a item name. its completely optional and if not defined then default name will be used.

And last option is to define criteria for particular head. Format should be like c-[criteria1],[criteria2],[criteria3] This can range from simple check if creature was tamed or not, if creature is in particular color or particular villager type. Example:

  creeper:
DropChance: 2.0
LowerWithEachDrop: 50.0
Heads:
- 100:c-unpowered:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjQyNTQ4MzhjMzNlYTIyN2ZmY2EyMjNkZGRhYWJmZTBiMDIxNWY3MGRhNjQ5ZTk0NDQ3N2Y0NDM3MGNhNjk1MiJ9fX0=
- 100:c-powered:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTNmMTcyZDI5Y2Y5NGJjODk1NjA4YjdhNWRjMmFmMGRlNDljNzg4ZDViZWNiMTYwNWYxZjUzNDg4YTAxNzBiOCJ9fX0=

This will have 2% chance to drop creeper head. But depending on creeper type, if its powered or not, it will drop one or another head. 

Multiple criteria can be used. In example

    - 100:c-baby,tamed,angry:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTk1Y2JiNGY3NWVhODc2MTdmMmY3MTNjNmQ0OWRhYzMyMDliYTFiZDRiOTM2OTY1NGIxNDU5ZWExNTMxNyJ9fX0=

Which will only drop head if entity was baby wolf which was in angry mode. !?!Who would kill a killer baby wolf!?!

All possible criteria options:

Only drops head if killed entity was tamed.

Will only drop head if creature can be tamed but was not at moment it died

Only drops head if creature was in baby state. This doesn’t apply for slime or magma cubes. They have different criteria.

Will only drop head if entity can have age states and is in adult one. This will not work for creatures like creepers which doesn’t have age states. 

Drops head if wolf was in angry mode when it was killed

Drops head when wolf was in passive mode

Used to drop head only if entity is red cat. Use only for ocelots. 

Used to drop head only if entity is siamese cat. Use only for ocelots. 

Used to drop head only if entity is wild cat. Use only for ocelots. 

Used to drop head only if entity is black cat. Use only for ocelots. 

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Color indication of entities like Sheep, shulker boxes or similar entities which has this color indicator.

Only applies for sheep which has name as jeb_ which creates rainbow sheep

Horse type indicator

Horse type indicator

Horse type indicator

Size1 Size2 Size3 Size4 …. Size10

Can be used to identify slime and magma cube sizes. 

Only drops head if creeper was powered

Only drops for regular creeper

Villager type

Villager type

Villager type

Villager type

Villager type

Villager type

Villager type

Loot bonus

Optionally you can have extra chance when using weapon with looting enchantment on it. This can add extra variation and will increase worth of weapons with this enchantment. 
By default only 3 levels will be checked as vanilla enchantment can only have 3 levels. If you need more then this add extra lines in customHeads.yml file which should look something like

LootMobBonus:
Enabled: true
Lvl1: 5.0
Lvl2: 15.0
Lvl3: 30.0
Lvl4: 35.0
Lvl5: 40.0
Lvl6: 45.0

Keep in mind that this value doesn’t add raw drop chance, but increases current one by particular amount. So if you have head drop chance at 1% and you have looting 3 enchantment, then final chance will be 1.3%