Added api

This commit is contained in:
Timo Ley 2019-06-22 00:19:38 +02:00
parent 76e740bc26
commit 10a7c3a52b
9 changed files with 84 additions and 0 deletions

View File

@ -0,0 +1,41 @@
package anvil.infinity.api;
import lucraft.mods.lucraftcore.infinity.EnumInfinityStone;
import lucraft.mods.lucraftcore.superpowers.abilities.Ability;
import lucraft.mods.lucraftcore.util.abilitybar.EnumAbilityBarColor;
import net.minecraft.entity.EntityLivingBase;
import java.util.ArrayList;
import java.util.List;
public class AbilityAdderHandler {
static List<IAbilityAdder> abilityAdders = new ArrayList<>();
public static void register(IAbilityAdder abilityAdder) {
abilityAdders.add(abilityAdder);
}
public static void addAbilities(EnumInfinityStone stone, EntityLivingBase entity, Ability.AbilityMap abilities) {
for (IAbilityAdder abilityAdder : abilityAdders) {
for (StoneAbility ability : abilityAdder.addStoneAbilities(entity, stone)) {
abilities.put(ability.abilityName, ability.ability.setDataValue(Ability.BAR_COLOR, getStoneColor(stone)));
}
}
}
public static EnumAbilityBarColor getStoneColor(EnumInfinityStone stone) {
switch (stone) {
case MIND: return EnumAbilityBarColor.YELLOW;
case SOUL: return EnumAbilityBarColor.ORANGE;
case TIME: return EnumAbilityBarColor.GREEN;
case POWER: return EnumAbilityBarColor.PURPLE;
case SPACE: return EnumAbilityBarColor.LIGHT_BLUE;
case REALITY: return EnumAbilityBarColor.RED;
default: return EnumAbilityBarColor.WHITE;
}
}
}

View File

@ -0,0 +1,12 @@
package anvil.infinity.api;
import lucraft.mods.lucraftcore.infinity.EnumInfinityStone;
import net.minecraft.entity.EntityLivingBase;
import java.util.List;
public interface IAbilityAdder {
List<StoneAbility> addStoneAbilities(EntityLivingBase entity, EnumInfinityStone stone);
}

View File

@ -0,0 +1,15 @@
package anvil.infinity.api;
import lucraft.mods.lucraftcore.infinity.EnumInfinityStone;
import lucraft.mods.lucraftcore.superpowers.abilities.Ability;
public class StoneAbility {
public String abilityName;
public Ability ability;
public StoneAbility(String abilityName, Ability ability) {
this.abilityName = abilityName;
this.ability = ability;
}
}

View File

@ -1,6 +1,7 @@
package anvil.infinity.items;
import anvil.infinity.abilities.AbilityChangeSnap;
import anvil.infinity.api.AbilityAdderHandler;
import anvil.infinity.compat.CompatHandler;
import anvil.infinity.config.ConfigHandler;
import lucraft.mods.lucraftcore.infinity.EnumInfinityStone;
@ -41,6 +42,7 @@ public class ItemMindStone extends ItemInfinityStone {
abilities.put("telekinesis", CompatHandler.HeroesExpension.getAbilityGrabEntity(entity).setDataValue(Ability.BAR_COLOR, EnumAbilityBarColor.YELLOW));
}
AbilityAdderHandler.addAbilities(EnumInfinityStone.MIND, entity, abilities);
return super.addStoneAbilities(entity, abilities, context);
}

View File

@ -1,6 +1,7 @@
package anvil.infinity.items;
import anvil.infinity.abilities.AbilitySaturation;
import anvil.infinity.api.AbilityAdderHandler;
import anvil.infinity.compat.CompatHandler;
import anvil.infinity.config.ConfigHandler;
import lucraft.mods.lucraftcore.infinity.EnumInfinityStone;
@ -49,6 +50,8 @@ public class ItemPowerStone extends ItemInfinityStone implements IAbilityProvide
abilities.put("power_tendrils", CompatHandler.StarTech.getAbilityTendrils(entity).setDataValue(Ability.BAR_COLOR, EnumAbilityBarColor.PURPLE));
}
AbilityAdderHandler.addAbilities(EnumInfinityStone.POWER, entity, abilities);
return super.addStoneAbilities(entity, abilities, context);
}

View File

@ -1,5 +1,6 @@
package anvil.infinity.items;
import anvil.infinity.api.AbilityAdderHandler;
import anvil.infinity.compat.CompatHandler;
import anvil.infinity.config.ConfigHandler;
import lucraft.mods.lucraftcore.infinity.EnumInfinityStone;
@ -44,6 +45,8 @@ public class ItemRealityStone extends ItemInfinityStone {
abilities.put("turn_into_bubbles", CompatHandler.SpeedsterHeroes.getAbilityTurnIntoBubbles(entity).setDataValue(Ability.BAR_COLOR, EnumAbilityBarColor.RED));
}
AbilityAdderHandler.addAbilities(EnumInfinityStone.REALITY, entity, abilities);
return super.addStoneAbilities(entity, abilities, context);
}

View File

@ -2,6 +2,7 @@ package anvil.infinity.items;
import anvil.infinity.abilities.AbilityKill;
import anvil.infinity.abilities.AbilitySnap;
import anvil.infinity.api.AbilityAdderHandler;
import anvil.infinity.conditions.ICondition;
import anvil.infinity.config.ConfigHandler;
import anvil.infinity.helpers.GauntelHelper;
@ -52,6 +53,7 @@ public class ItemSoulStone extends ItemInfinityStone {
abilities.put("kill", new AbilityKill(entity, killCond).setDataValue(Ability.BAR_COLOR, EnumAbilityBarColor.ORANGE));
abilities.put("snap", new AbilitySnap(entity).setDataValue(Ability.BAR_COLOR, EnumAbilityBarColor.ORANGE));
AbilityAdderHandler.addAbilities(EnumInfinityStone.SOUL, entity, abilities);
return super.addStoneAbilities(entity, abilities, context);
}

View File

@ -1,5 +1,6 @@
package anvil.infinity.items;
import anvil.infinity.api.AbilityAdderHandler;
import anvil.infinity.compat.CompatHandler;
import anvil.infinity.helpers.GauntelHelper;
import lucraft.mods.lucraftcore.infinity.EnumInfinityStone;
@ -41,6 +42,8 @@ public class ItemSpaceStone extends ItemInfinityStone {
}
}
AbilityAdderHandler.addAbilities(EnumInfinityStone.SPACE, entity, abilities);
return super.addStoneAbilities(entity, abilities, context);
}

View File

@ -2,6 +2,7 @@ package anvil.infinity.items;
import anvil.infinity.abilities.AbilityFastForward;
import anvil.infinity.abilities.AbilityStopTime;
import anvil.infinity.api.AbilityAdderHandler;
import lucraft.mods.lucraftcore.infinity.EnumInfinityStone;
import lucraft.mods.lucraftcore.infinity.ModuleInfinity;
import lucraft.mods.lucraftcore.infinity.items.ItemInfinityStone;
@ -35,6 +36,8 @@ public class ItemTimeStone extends ItemInfinityStone {
abilities.put("fast_forward", new AbilityFastForward(entity).setDataValue(Ability.BAR_COLOR, EnumAbilityBarColor.GREEN));
abilities.put("stop_time", new AbilityStopTime(entity).setDataValue(Ability.BAR_COLOR, EnumAbilityBarColor.GREEN));
AbilityAdderHandler.addAbilities(EnumInfinityStone.TIME, entity, abilities);
return super.addStoneAbilities(entity, abilities, context);
}