/******************************************************************************* * AbyssalCraft * Copyright (c) 2012 - 2017 Shinoow. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-3.0.txt * * Contributors: * Shinoow - implementation ******************************************************************************/ package com.shinoow.abyssalcraft.lib.item; import java.util.List; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.SoundEvents; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.translation.I18n; import net.minecraft.world.World; import com.shinoow.abyssalcraft.api.energy.EnergyEnum; import com.shinoow.abyssalcraft.api.energy.EnergyEnum.AmplifierType; import com.shinoow.abyssalcraft.api.energy.EnergyEnum.DeityType; import com.shinoow.abyssalcraft.api.energy.IAmplifierCharm; import com.shinoow.abyssalcraft.api.energy.IEnergyManipulator; /** * Basic implementation of an Amplifier Charm (based on metadata) * @author shinoow * */ public class ItemCharm extends ItemMetadata implements IAmplifierCharm { private DeityType deity; public ItemCharm(String name, DeityType deity) { super(name, "empty", "range", "duration", "power"); this.deity = deity; } @Override public AmplifierType getAmplifier(ItemStack stack) { switch(stack.getItemDamage()){ case 0: return null; case 1: return AmplifierType.RANGE; case 2: return AmplifierType.DURATION; case 3: return AmplifierType.POWER; default: return null; } } @Override public DeityType getDeity(ItemStack stack) { return deity; } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public void addInformation(ItemStack is, EntityPlayer player, List l, boolean B){ l.add(I18n.translateToLocal("ac.text.amplifier") + ": " + EnergyEnum.getAmplifierName(getAmplifier(is))); l.add(I18n.translateToLocal("ac.text.deity") + ": " + EnergyEnum.getDeityName(getDeity(is))); } @Override public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ){ ItemStack stack = player.getHeldItem(hand); TileEntity tile = world.getTileEntity(pos); if(tile instanceof IEnergyManipulator && !((IEnergyManipulator) tile).isActive()){ ((IEnergyManipulator) tile).setActive(getAmplifier(stack), getDeity(stack)); if(!world.isRemote) stack.shrink(1); world.playSound(player, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.PLAYERS, 0.5F, world.rand.nextFloat() - world.rand.nextFloat() * 0.2F + 1); return EnumActionResult.SUCCESS; } return EnumActionResult.PASS; } @Override public String getItemStackDisplayName(ItemStack par1ItemStack) { return I18n.translateToLocal(getUnlocalizedName() + ".name"); } }