package com.thexfactor117.losteclipse.items.jewelry; import java.util.UUID; import com.thexfactor117.levels.leveling.Rarity; import com.thexfactor117.losteclipse.LostEclipse; import com.thexfactor117.losteclipse.items.base.ItemLEBauble; import com.thexfactor117.losteclipse.util.EnumAttributeModifierOperations; import baubles.api.BaubleType; import baubles.api.IBauble; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.init.SoundEvents; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; public class ItemGoldenRingHealth extends ItemLEBauble implements IBauble { private static double multiplier = 0.2F; public ItemGoldenRingHealth(String name, Rarity rarity) { super(name, rarity); } @Override public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isSelected) { if (!world.isRemote) { NBTTagCompound nbt = stack.getTagCompound(); if (nbt != null) { if (nbt.getString("UUID") == null) { nbt.setString("UUID", UUID.randomUUID().toString()); } } else { nbt = new NBTTagCompound(); stack.setTagCompound(nbt); nbt.setString("UUID", UUID.randomUUID().toString()); } } } @Override public void onEquipped(ItemStack stack, EntityLivingBase entity) { if (entity.getEntityWorld().isRemote) entity.playSound(SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, 0.1F, 1.3f); else { NBTTagCompound nbt = stack.getTagCompound(); if (nbt != null) { AttributeModifier maxHealth = new AttributeModifier(UUID.fromString(nbt.getString("UUID")), "maxHealth", multiplier, EnumAttributeModifierOperations.ADD_PERC_VAL_TO_SUM.ordinal()); LostEclipse.LOGGER.info("UUID: " + maxHealth.getID()); if (entity.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).getModifier(UUID.fromString(nbt.getString("UUID"))) == null) { entity.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).applyModifier(maxHealth); LostEclipse.LOGGER.info("Max health: " + entity.getMaxHealth()); } } } } @Override public void onUnequipped(ItemStack stack, EntityLivingBase entity) { if (!entity.getEntityWorld().isRemote) { NBTTagCompound nbt = stack.getTagCompound(); if (nbt != null) { AttributeModifier maxHealth = new AttributeModifier(UUID.fromString(nbt.getString("UUID")), "maxHealth", multiplier, EnumAttributeModifierOperations.ADD_PERC_VAL_TO_SUM.ordinal()); if (entity.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).getModifier(UUID.fromString(nbt.getString("UUID"))) != null) { entity.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).removeModifier(maxHealth); } } } } @Override public BaubleType getBaubleType(ItemStack stack) { return BaubleType.RING; } }