From 10a7c3a52b9e261b569c4edf4c201c4f8514facc Mon Sep 17 00:00:00 2001 From: Timo Ley Date: Sat, 22 Jun 2019 00:19:38 +0200 Subject: [PATCH] Added api --- .../infinity/api/AbilityAdderHandler.java | 41 +++++++++++++++++++ .../anvil/infinity/api/IAbilityAdder.java | 12 ++++++ .../java/anvil/infinity/api/StoneAbility.java | 15 +++++++ .../anvil/infinity/items/ItemMindStone.java | 2 + .../anvil/infinity/items/ItemPowerStone.java | 3 ++ .../infinity/items/ItemRealityStone.java | 3 ++ .../anvil/infinity/items/ItemSoulStone.java | 2 + .../anvil/infinity/items/ItemSpaceStone.java | 3 ++ .../anvil/infinity/items/ItemTimeStone.java | 3 ++ 9 files changed, 84 insertions(+) create mode 100644 src/main/java/anvil/infinity/api/AbilityAdderHandler.java create mode 100644 src/main/java/anvil/infinity/api/IAbilityAdder.java create mode 100644 src/main/java/anvil/infinity/api/StoneAbility.java diff --git a/src/main/java/anvil/infinity/api/AbilityAdderHandler.java b/src/main/java/anvil/infinity/api/AbilityAdderHandler.java new file mode 100644 index 0000000..7ca58a2 --- /dev/null +++ b/src/main/java/anvil/infinity/api/AbilityAdderHandler.java @@ -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 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; + } + } + +} diff --git a/src/main/java/anvil/infinity/api/IAbilityAdder.java b/src/main/java/anvil/infinity/api/IAbilityAdder.java new file mode 100644 index 0000000..8baf0eb --- /dev/null +++ b/src/main/java/anvil/infinity/api/IAbilityAdder.java @@ -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 addStoneAbilities(EntityLivingBase entity, EnumInfinityStone stone); + +} diff --git a/src/main/java/anvil/infinity/api/StoneAbility.java b/src/main/java/anvil/infinity/api/StoneAbility.java new file mode 100644 index 0000000..ed5f972 --- /dev/null +++ b/src/main/java/anvil/infinity/api/StoneAbility.java @@ -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; + } +} diff --git a/src/main/java/anvil/infinity/items/ItemMindStone.java b/src/main/java/anvil/infinity/items/ItemMindStone.java index 0ceebbc..be644bf 100644 --- a/src/main/java/anvil/infinity/items/ItemMindStone.java +++ b/src/main/java/anvil/infinity/items/ItemMindStone.java @@ -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); } diff --git a/src/main/java/anvil/infinity/items/ItemPowerStone.java b/src/main/java/anvil/infinity/items/ItemPowerStone.java index 1602412..e800928 100644 --- a/src/main/java/anvil/infinity/items/ItemPowerStone.java +++ b/src/main/java/anvil/infinity/items/ItemPowerStone.java @@ -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); } diff --git a/src/main/java/anvil/infinity/items/ItemRealityStone.java b/src/main/java/anvil/infinity/items/ItemRealityStone.java index 548a961..82d449d 100644 --- a/src/main/java/anvil/infinity/items/ItemRealityStone.java +++ b/src/main/java/anvil/infinity/items/ItemRealityStone.java @@ -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); } diff --git a/src/main/java/anvil/infinity/items/ItemSoulStone.java b/src/main/java/anvil/infinity/items/ItemSoulStone.java index fa344ea..461b47d 100644 --- a/src/main/java/anvil/infinity/items/ItemSoulStone.java +++ b/src/main/java/anvil/infinity/items/ItemSoulStone.java @@ -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); } diff --git a/src/main/java/anvil/infinity/items/ItemSpaceStone.java b/src/main/java/anvil/infinity/items/ItemSpaceStone.java index 381672b..9ab0da7 100644 --- a/src/main/java/anvil/infinity/items/ItemSpaceStone.java +++ b/src/main/java/anvil/infinity/items/ItemSpaceStone.java @@ -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); } diff --git a/src/main/java/anvil/infinity/items/ItemTimeStone.java b/src/main/java/anvil/infinity/items/ItemTimeStone.java index fab02a6..f38f90e 100644 --- a/src/main/java/anvil/infinity/items/ItemTimeStone.java +++ b/src/main/java/anvil/infinity/items/ItemTimeStone.java @@ -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); }