package io.gitlab.jfronny.combit.config; import me.sargunvohra.mcmods.autoconfig1u.ConfigData; import me.sargunvohra.mcmods.autoconfig1u.annotation.Config; import me.sargunvohra.mcmods.autoconfig1u.annotation.ConfigEntry.Category; import me.sargunvohra.mcmods.autoconfig1u.annotation.ConfigEntry.Gui.TransitiveObject; import me.sargunvohra.mcmods.autoconfig1u.shadowed.blue.endless.jankson.Comment; import java.util.HashSet; @Config(name = "Combit") public class Cfg implements ConfigData { @Comment(value = "Allows modifying/removing the attack delay and related things") @Category("attackDelay") @TransitiveObject public AttackDelay attackDelay = new AttackDelay(); @Comment(value = "Allows disabling invulnerability frames") @Category("invulnerability") @TransitiveObject public Invulnerability invulnerability = new Invulnerability(); @Override public void validatePostLoad() throws ValidationException { if (attackDelay == null) attackDelay = new AttackDelay(); if (invulnerability == null) invulnerability = new Invulnerability(); if (attackDelay.cooldownProgressOverride < 0) attackDelay.cooldownProgressOverride = -0.1f; if (attackDelay.cooldownProgressOverride > 1) attackDelay.cooldownProgressOverride = 1; if (attackDelay.cooldownProgressPerTickOverride < 0) attackDelay.cooldownProgressPerTickOverride = -0.1f; if (attackDelay.cooldownProgressPerTickOverride > 1) attackDelay.cooldownProgressPerTickOverride = 1; if (attackDelay.axeAttackDamageFactor < 0) attackDelay.axeAttackDamageFactor = 0; if (attackDelay.axeAttackDamageFactor > 2) attackDelay.axeAttackDamageFactor = 2; if (invulnerability.attackCancelThreshold < 0) invulnerability.attackCancelThreshold = -0.1f; if (invulnerability.attackCancelThreshold > 1) invulnerability.attackCancelThreshold = 1; if (invulnerability.knockbackCancelThreshold < 0) invulnerability.knockbackCancelThreshold = -0.1f; if (invulnerability.knockbackCancelThreshold > 1) invulnerability.knockbackCancelThreshold = 1; if (invulnerability.attackExcludedEntities == null) { invulnerability.attackExcludedEntities = new HashSet<>(); invulnerability.attackExcludedEntities.add("minecraft:slime"); invulnerability.attackExcludedEntities.add("tconstruct:blueslime"); invulnerability.attackExcludedEntities.add("thaumcraft:thaumslime"); } if (invulnerability.dmgReceiveExcludedEntities == null) { invulnerability.dmgReceiveExcludedEntities = new HashSet<>(); } if (invulnerability.damageSrcWhitelist == null) { invulnerability.damageSrcWhitelist = new HashSet<>(); invulnerability.damageSrcWhitelist.add("inFire"); invulnerability.damageSrcWhitelist.add("lava"); invulnerability.damageSrcWhitelist.add("cactus"); invulnerability.damageSrcWhitelist.add("lightningBolt"); invulnerability.damageSrcWhitelist.add("inWall"); invulnerability.damageSrcWhitelist.add("hotFloor"); invulnerability.damageSrcWhitelist.add("outOfWorld"); } } }