CapabilitiesEvents.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package me.km.capabilities;
  2. import java.util.List;
  3. import me.km.KajetansMod;
  4. import net.minecraft.item.ItemArmor;
  5. import net.minecraft.item.ItemStack;
  6. import net.minecraft.util.ResourceLocation;
  7. import net.minecraft.util.text.TextFormatting;
  8. import net.minecraftforge.common.capabilities.CapabilityManager;
  9. import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
  10. import net.minecraftforge.event.AttachCapabilitiesEvent;
  11. import net.minecraftforge.event.entity.player.ItemTooltipEvent;
  12. import net.minecraftforge.fml.relauncher.Side;
  13. import net.minecraftforge.fml.relauncher.SideOnly;
  14. public class CapabilitiesEvents
  15. {
  16. public static final ResourceLocation DEFENSE_CAP = new ResourceLocation(KajetansMod.MODID, "defense");
  17. public static void init()
  18. {
  19. CapabilityManager.INSTANCE.register(IDefense.class, new DefenseStorage(), ItemDefenseStats.class);
  20. }
  21. @SubscribeEvent
  22. public void attachDefenseData(AttachCapabilitiesEvent<ItemStack> e)
  23. {
  24. if(e.getObject().getItem() instanceof ItemArmor)
  25. {
  26. e.addCapability(DEFENSE_CAP, new DefenseProvider());
  27. }
  28. }
  29. @SideOnly(Side.CLIENT)
  30. @SubscribeEvent
  31. public void showingTooltip(ItemTooltipEvent e)
  32. {
  33. ItemStack stack = e.getItemStack();
  34. if(stack.hasCapability(DefenseProvider.DEFENSE_CAP, null))
  35. {
  36. IDefense defense = stack.getCapability(DefenseProvider.DEFENSE_CAP, null);
  37. int magic = defense.getMagicDefense();
  38. if(magic != 0)
  39. {
  40. List<String> list = e.getToolTip();
  41. String s = TextFormatting.BLUE + " +";
  42. for(int i = 0; i < list.size(); i++)
  43. {
  44. if(list.get(i).startsWith(s))
  45. {
  46. list.add(i, TextFormatting.BLUE + " +" + magic + " Magic Armor");
  47. break;
  48. }
  49. }
  50. }
  51. }
  52. }
  53. }