/******************************************************************************* * Copyright (c) 2013 Aroma1997. * All rights reserved. This program and other files related to this program are * licensed with a extended GNU General Public License v. 3 * License informations are at: * https://github.com/Aroma1997/CompactWindmills/blob/master/license.txt ******************************************************************************/ package aroma1997.compactwindmills; import java.util.List; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; /** * * @author Aroma1997 * */ public class ItemRotor extends Item implements IItemRotor { private int tierMin; private int tierMax; private float efficiency; private boolean isInfinite; private RotorType type; public ItemRotor(RotorType type) { super(); setMinMaxTier(type.typeMin, type.typeMax); setEfficiency(type.efficiency); setMaxDamage(type.maxDamage); setUnlocalizedName(type.getUnlocalizedName()); setTextureName(type.getTextureName()); setCreativeTab(CompactWindmills.creativeTabCompactWindmills); setMaxStackSize(1); setNoRepair(); this.type = type; } @SuppressWarnings({"rawtypes", "unchecked"}) @Override public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { if (! isInfinite) { int leftOverTicks = par1ItemStack.getMaxDamage() - par1ItemStack.getItemDamage(); par3List.add(StatCollector.translateToLocalFormatted("info.compactwindmills:tooltip.ticksleft", "" + leftOverTicks)); int hours = leftOverTicks / 72000; int minutes = leftOverTicks % 72000 / 1200; int seconds = leftOverTicks % 1200 / 20; par3List.add("(" + StatCollector.translateToLocalFormatted("info.compactwindmills:tooltip.timeleft", "" + hours, "" + minutes, "" + seconds) + ")"); } else { par3List.add(StatCollector.translateToLocal("info.compactwindmills:tooltip.infinite")); } par3List.add(StatCollector.translateToLocalFormatted("info.compactwindmills:tooltip.efficiency", (int) (((IItemRotor) par1ItemStack.getItem()).getEfficiency() * 100) + " %")); } @Override public boolean doesRotorFitInWindmill(WindType type) { return type.ordinal() <= tierMax && type.ordinal() >= tierMin; } @Override public float getEfficiency() { return efficiency; } @Override public int getMaxTier() { return tierMax; } @Override public int getMinTier() { return tierMin; } @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister iconRegister) { super.registerIcons(iconRegister); } public ItemRotor setEfficiency(float efficiency) { this.efficiency = efficiency; return this; } public ItemRotor setMinMaxTier(WindType type) { tierMin = type.ordinal(); tierMax = type.ordinal(); return this; } public ItemRotor setMinMaxTier(WindType typeMin, WindType typeMax) { tierMin = typeMin.ordinal(); tierMax = typeMax.ordinal(); return this; } @Override public boolean isInfinite() { return isInfinite; } @SideOnly(Side.CLIENT) @Override public ResourceLocation getRenderTexture() { return new ResourceLocation(type.getRenderTexture()); } @Override public ItemRotor setMaxDamage(int maxDamage) { super.setMaxDamage(maxDamage); if (maxDamage == 0) { isInfinite = true; } return this; } @Override public void tickRotor(ItemStack rotor, TileEntityWindmill tileEntity, World worldObj) { return; } }