package me.km.capabilities; import java.util.List; import me.km.KajetansMod; import me.km.items.ItemGun; import me.km.items.ItemKey; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.TextFormatting; import net.minecraftforge.common.capabilities.CapabilityManager; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.event.AttachCapabilitiesEvent; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class CapabilitiesEvents { public static final ResourceLocation DEFENSE_CAP = new ResourceLocation(KajetansMod.MODID, "defense"); public static final ResourceLocation CHEST_KEY_CAP = new ResourceLocation(KajetansMod.MODID, "chestkey"); public static final ResourceLocation GUN_LOAD_CAP = new ResourceLocation(KajetansMod.MODID, "gunload"); public static void init() { CapabilityManager.INSTANCE.register(IDefense.class, new DefenseStorage(), ItemDefenseStats.class); CapabilityManager.INSTANCE.register(IChestKey.class, new ChestKeyStorage(), ItemChestKey.class); CapabilityManager.INSTANCE.register(IGunLoad.class, new GunLoadStorage(), ItemGunLoad.class); } @SubscribeEvent public void attachDefenseData(AttachCapabilitiesEvent e) { Item item = e.getObject().getItem(); if(item instanceof ItemArmor) { e.addCapability(DEFENSE_CAP, new DefenseProvider()); } else if(item.getClass() == ItemKey.class) { e.addCapability(CHEST_KEY_CAP, new ChestKeyProvider()); } else if(item.getClass() == ItemGun.class) { e.addCapability(GUN_LOAD_CAP, new GunLoadProvider()); } } @SideOnly(Side.CLIENT) @SubscribeEvent public void showingTooltip(ItemTooltipEvent e) { ItemStack stack = e.getItemStack(); if(stack.hasCapability(DefenseProvider.DEFENSE_CAP, null)) { IDefense defense = stack.getCapability(DefenseProvider.DEFENSE_CAP, null); int magic = defense.getMagicDefense(); if(magic != 0) { List list = e.getToolTip(); String s = TextFormatting.BLUE + " +"; for(int i = 0; i < list.size(); i++) { if(list.get(i).startsWith(s)) { list.add(i, TextFormatting.BLUE + " +" + magic + " Magic Armor"); break; } } } } else if(stack.hasCapability(GunLoadProvider.GUN_LOAD_CAP, null)) { IGunLoad gunLoad = stack.getCapability(GunLoadProvider.GUN_LOAD_CAP, null); int load = gunLoad.getCurrentLoad(); if(load >= 0) { List list = e.getToolTip(); if(load == 1) { list.add(1, TextFormatting.GOLD + "" + load + " shot loaded"); } else { list.add(1, TextFormatting.GOLD + "" + load + " shots loaded"); } } } else if(stack.hasCapability(ChestKeyProvider.CHEST_KEY_CAP, null)) { IChestKey key = stack.getCapability(ChestKeyProvider.CHEST_KEY_CAP, null); List list = e.getToolTip(); if(key.getKey().isEmpty()) { list.set(0, TextFormatting.RED + list.get(0)); } else { list.set(0, TextFormatting.GREEN + list.get(0)); } } } }