CapabilitiesEvents.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package me.km.capabilities;
  2. import java.util.List;
  3. import me.km.KajetansMod;
  4. import me.km.items.ItemGun;
  5. import me.km.items.ItemKey;
  6. import net.minecraft.item.Item;
  7. import net.minecraft.item.ItemArmor;
  8. import net.minecraft.item.ItemStack;
  9. import net.minecraft.util.ResourceLocation;
  10. import net.minecraft.util.text.TextFormatting;
  11. import net.minecraftforge.common.capabilities.CapabilityManager;
  12. import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
  13. import net.minecraftforge.event.AttachCapabilitiesEvent;
  14. import net.minecraftforge.event.entity.player.ItemTooltipEvent;
  15. import net.minecraftforge.fml.relauncher.Side;
  16. import net.minecraftforge.fml.relauncher.SideOnly;
  17. public class CapabilitiesEvents
  18. {
  19. public static final ResourceLocation DEFENSE_CAP = new ResourceLocation(KajetansMod.MODID, "defense");
  20. public static final ResourceLocation CHEST_KEY_CAP = new ResourceLocation(KajetansMod.MODID, "chestkey");
  21. public static final ResourceLocation GUN_LOAD_CAP = new ResourceLocation(KajetansMod.MODID, "gunload");
  22. public static void init()
  23. {
  24. CapabilityManager.INSTANCE.register(IDefense.class, new DefenseStorage(), ItemDefenseStats.class);
  25. CapabilityManager.INSTANCE.register(IChestKey.class, new ChestKeyStorage(), ItemChestKey.class);
  26. CapabilityManager.INSTANCE.register(IGunLoad.class, new GunLoadStorage(), ItemGunLoad.class);
  27. }
  28. @SubscribeEvent
  29. public void attachDefenseData(AttachCapabilitiesEvent<ItemStack> e)
  30. {
  31. Item item = e.getObject().getItem();
  32. if(item instanceof ItemArmor)
  33. {
  34. e.addCapability(DEFENSE_CAP, new DefenseProvider());
  35. }
  36. else if(item.getClass() == ItemKey.class)
  37. {
  38. e.addCapability(CHEST_KEY_CAP, new ChestKeyProvider());
  39. }
  40. else if(item.getClass() == ItemGun.class)
  41. {
  42. e.addCapability(GUN_LOAD_CAP, new GunLoadProvider());
  43. }
  44. }
  45. @SideOnly(Side.CLIENT)
  46. @SubscribeEvent
  47. public void showingTooltip(ItemTooltipEvent e)
  48. {
  49. ItemStack stack = e.getItemStack();
  50. if(stack.hasCapability(DefenseProvider.DEFENSE_CAP, null))
  51. {
  52. IDefense defense = stack.getCapability(DefenseProvider.DEFENSE_CAP, null);
  53. int magic = defense.getMagicDefense();
  54. if(magic != 0)
  55. {
  56. List<String> list = e.getToolTip();
  57. String s = TextFormatting.BLUE + " +";
  58. for(int i = 0; i < list.size(); i++)
  59. {
  60. if(list.get(i).startsWith(s))
  61. {
  62. list.add(i, TextFormatting.BLUE + " +" + magic + " Magic Armor");
  63. break;
  64. }
  65. }
  66. }
  67. }
  68. else if(stack.hasCapability(GunLoadProvider.GUN_LOAD_CAP, null))
  69. {
  70. IGunLoad gunLoad = stack.getCapability(GunLoadProvider.GUN_LOAD_CAP, null);
  71. int load = gunLoad.getCurrentLoad();
  72. if(load >= 0)
  73. {
  74. List<String> list = e.getToolTip();
  75. if(load == 1)
  76. {
  77. list.add(1, TextFormatting.GOLD + "" + load + " shot loaded");
  78. }
  79. else
  80. {
  81. list.add(1, TextFormatting.GOLD + "" + load + " shots loaded");
  82. }
  83. }
  84. }
  85. else if(stack.hasCapability(ChestKeyProvider.CHEST_KEY_CAP, null))
  86. {
  87. IChestKey key = stack.getCapability(ChestKeyProvider.CHEST_KEY_CAP, null);
  88. List<String> list = e.getToolTip();
  89. if(key.getKey().isEmpty())
  90. {
  91. list.set(0, TextFormatting.RED + list.get(0));
  92. }
  93. else
  94. {
  95. list.set(0, TextFormatting.GREEN + list.get(0));
  96. }
  97. }
  98. }
  99. }