// Path: src/main/java/derpatiel/progressivediff/api/DifficultyModifier.java
// public abstract class DifficultyModifier {
// 
//     public abstract int getMaxInstances();
//     public void handleUpkeepEvent(int numInstances, EntityLiving entity){}
//     public void handleDamageEvent(LivingAttackEvent event){}
//     public void handleSpawnEvent(int numInstances, EntityLiving entity){}
//     public abstract int costPerChange();
//     public abstract double getWeight();
//     public abstract String getIdentifier();
//     public boolean validForEntity(EntityLiving entity){
//         return true;
//     }
// }


import com.google.common.collect.Lists;
import derpatiel.progressivediff.api.DifficultyModifier;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.IAttributeInstance;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.config.Property;
import java.util.List;
import java.util.function.Function;
        this.selectionWeight = selectionWeight;
    }

    @Override
    public int getMaxInstances() {
        return maxAddedHealth;
    }

    @Override
    public void handleSpawnEvent(int numInstances, EntityLiving entity) {
        IAttributeInstance maxHealthAttribute = entity.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH);
        maxHealthAttribute.setBaseValue(maxHealthAttribute.getBaseValue() + numInstances);
        entity.setHealth(entity.getMaxHealth());
    }

    @Override
    public int costPerChange() {
        return diffCostPerHealth;
    }

    @Override
    public double getWeight() {
        return selectionWeight;
    }

    @Override
    public String getIdentifier() {
        return IDENTIFIER;
    }

// Path: src/main/java/derpatiel/progressivediff/api/DifficultyModifier.java
// public abstract class DifficultyModifier {
// 
//     public abstract int getMaxInstances();
//     public void handleUpkeepEvent(int numInstances, EntityLiving entity){}
//     public void handleDamageEvent(LivingAttackEvent event){}
//     public void handleSpawnEvent(int numInstances, EntityLiving entity){}
//     public abstract int costPerChange();
//     public abstract double getWeight();
//     public abstract String getIdentifier();
//     public boolean validForEntity(EntityLiving entity){
//         return true;
//     }
// }


// Path: src/main/java/derpatiel/progressivediff/modifiers/AddHealthModifier.java
import com.google.common.collect.Lists;
import derpatiel.progressivediff.api.DifficultyModifier;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.IAttributeInstance;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.config.Property;
import java.util.List;
import java.util.function.Function;

        this.selectionWeight = selectionWeight;
    }

    @Override
    public int getMaxInstances() {
        return maxAddedHealth;
    }

    @Override
    public void handleSpawnEvent(int numInstances, EntityLiving entity) {
        IAttributeInstance maxHealthAttribute = entity.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH);
        maxHealthAttribute.setBaseValue(maxHealthAttribute.getBaseValue() + numInstances);
        entity.setHealth(entity.getMaxHealth());
    }

    @Override
    public int costPerChange() {
        return diffCostPerHealth;
    }

    @Override
    public double getWeight() {
        return selectionWeight;
    }

    @Override
    public String getIdentifier() {
        return IDENTIFIER;
    }

    public static Function<Configuration, List<DifficultyModifier>> getFromConfig = config -> {