/** * This class was created by <Vazkii>. It's distributed as * part of the Botania Mod. Get the Source Code in github: * https://github.com/Vazkii/Botania * * Botania is Open Source and distributed under the * Botania License: http://botaniamod.net/license.php * * File Created @ [Mar 29, 2015, 7:56:27 PM (GMT)] */ package vazkii.botania.common.item.relic; import java.util.List; import java.util.UUID; import javax.annotation.Nonnull; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.item.IRelic; import vazkii.botania.common.item.equipment.bauble.ItemBauble; public abstract class ItemRelicBauble extends ItemBauble implements IRelic { Achievement achievement; private final ItemRelic dummy = new ItemRelic("dummy") { // Delegate for relic stuff @Override protected boolean shouldRegister() { return false; } }; public ItemRelicBauble(String name) { super(name); } @Override public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean held) { if(entity instanceof EntityPlayer) dummy.updateRelic(stack, (EntityPlayer) entity); } @Override public void onWornTick(ItemStack stack, EntityLivingBase player) { super.onWornTick(stack, player); if(player instanceof EntityPlayer) { EntityPlayer ePlayer = (EntityPlayer) player; dummy.updateRelic(stack, ePlayer); if(dummy.isRightPlayer(ePlayer, stack)) onValidPlayerWornTick(stack, ePlayer); } } @SideOnly(Side.CLIENT) @Override public void addHiddenTooltip(ItemStack par1ItemStack, EntityPlayer player, List<String> stacks, boolean par4) { super.addHiddenTooltip(par1ItemStack, player, stacks, par4); dummy.addBindInfo(stacks, par1ItemStack, player); } public void onValidPlayerWornTick(ItemStack stack, EntityPlayer player) {} @Override public boolean canEquip(ItemStack stack, EntityLivingBase player) { return player instanceof EntityPlayer && dummy.isRightPlayer((EntityPlayer) player, stack); } @Override public void bindToUsername(String playerName, ItemStack stack) { dummy.bindToUsername(playerName, stack); } @Override public String getSoulbindUsername(ItemStack stack) { return dummy.getSoulbindUsername(stack); } @Override public void bindToUUID(UUID uuid, ItemStack stack) { dummy.bindToUUID(uuid, stack); } @Override public UUID getSoulbindUUID(ItemStack stack) { return dummy.getSoulbindUUID(stack); } @Override public boolean hasUUID(ItemStack stack) { return dummy.hasUUID(stack); } @Override public Achievement getBindAchievement() { return achievement; } @Override public void setBindAchievement(Achievement achievement) { this.achievement = achievement; } @Nonnull @Override public EnumRarity getRarity(ItemStack stack) { return BotaniaAPI.rarityRelic; } @Override public int getEntityLifespan(ItemStack itemStack, World world) { return Integer.MAX_VALUE; } }