diff --git a/src/main/java/WayofTime/bloodmagic/api/Constants.java b/src/main/java/WayofTime/bloodmagic/api/Constants.java index 1361bee8..da8eb8f9 100644 --- a/src/main/java/WayofTime/bloodmagic/api/Constants.java +++ b/src/main/java/WayofTime/bloodmagic/api/Constants.java @@ -67,6 +67,8 @@ public class Constants public static final String CONTAINED_BLOCK_META = "containedBlockMeta"; public static final String PREVIOUS_INPUT = "previousInput"; + + public static final String LIVING_ARMOUR = "livingArmour"; } public static class Mod diff --git a/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java b/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java index 4ffe0342..20918938 100644 --- a/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java +++ b/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java @@ -1,11 +1,16 @@ package WayofTime.bloodmagic.item.armour; -import WayofTime.bloodmagic.BloodMagic; -import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.registry.ModItems; import net.minecraft.entity.Entity; +import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.livingArmour.LivingArmour; +import WayofTime.bloodmagic.registry.ModItems; + +import com.google.common.collect.Multimap; public class ItemLivingArmour extends ItemArmor { @@ -36,9 +41,38 @@ public class ItemLivingArmour extends ItemArmor } } + @Override + public Multimap getAttributeModifiers(ItemStack stack) + { + if (this == ModItems.livingArmourChest) + { + LivingArmour armour = getLivingArmour(stack); + + return armour.getAttributeModifiers(); + } + + return super.getAttributeModifiers(stack); + } + @Override public String getUnlocalizedName(ItemStack stack) { return super.getUnlocalizedName(stack) + names[armorType]; } + + public LivingArmour getLivingArmour(ItemStack stack) + { + if (!stack.hasTagCompound()) + { + stack.setTagCompound(new NBTTagCompound()); + } + + NBTTagCompound tag = stack.getTagCompound(); + NBTTagCompound livingTag = tag.getCompoundTag(Constants.NBT.LIVING_ARMOUR); + + LivingArmour livingArmour = new LivingArmour(); + livingArmour.readFromNBT(livingTag); + + return livingArmour; + } } diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java index 536742eb..4688c902 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java @@ -4,6 +4,7 @@ import java.lang.reflect.Constructor; import java.util.HashMap; import java.util.Map.Entry; +import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -12,10 +13,26 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler; import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.api.livingArmour.StatTracker; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; + public class LivingArmour { - public HashMap trackerMap = new HashMap(); - public HashMap upgradeMap = new HashMap(); + public HashMap trackerMap = new HashMap(); + public HashMap upgradeMap = new HashMap(); + + public Multimap getAttributeModifiers() + { + HashMultimap modifierMap = HashMultimap.create(); + + for (Entry entry : upgradeMap.entrySet()) + { + LivingArmourUpgrade upgrade = entry.getValue(); + modifierMap.putAll(upgrade.getAttributeModifiers()); + } + + return modifierMap; + } /** * Ticks the upgrades and stat trackers, passing in the world and player as