package emasher.items; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import emasher.EngineersToolbox; import emasher.api.ModuleRegistry; import emasher.api.SocketModule; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.world.World; import org.lwjgl.input.Keyboard; import java.util.List; public class ItemModule extends Item { @SideOnly( Side.CLIENT ) public IIcon[] textures; public ItemModule() { super(); this.setCreativeTab( EngineersToolbox.tabModules() ); this.setHasSubtypes( true ); this.setUnlocalizedName( "socket_module" ); } @Override @SideOnly( Side.CLIENT ) public IIcon getIconFromDamage( int damage ) { return textures[damage]; } @Override public ItemStack onItemRightClick( ItemStack item, World world, EntityPlayer player ) { if( player.isSneaking() && !world.isRemote && player.capabilities.isCreativeMode ) { do { item.setItemDamage( item.getItemDamage() + 1 ); if( item.getItemDamage() == ModuleRegistry.numModules ) item.setItemDamage( 0 ); } while( ModuleRegistry.getModule( item.getItemDamage() ) == null ); } return item; } @Override public void addInformation( ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4 ) { if( Keyboard.isKeyDown( Keyboard.KEY_LSHIFT ) ) { SocketModule m = ModuleRegistry.getModule( par1ItemStack.getItemDamage() ); par3List.add( "" ); m.getToolTip( par3List ); par3List.add( "" ); m.getIndicatorKey( par3List ); for( int i = 0; i < 2; i++ ) { Object l = par3List.get( par3List.size() - 1 ); if( ( l instanceof String ) && l.equals( "" ) ) { par3List.remove( par3List.size() - 1 ); } } } else { par3List.add( EnumChatFormatting.GOLD + ( EnumChatFormatting.ITALIC + "Hold shift for info..." ) ); } } @Override public String getUnlocalizedName( ItemStack itemstack ) { return getUnlocalizedName() + "." + itemstack.getItemDamage(); } @SideOnly( Side.CLIENT ) public void getSubItems( Item item, CreativeTabs par2CreativeTabs, List list ) { for( int i = 1; i < ModuleRegistry.numModules; i++ ) { if( ModuleRegistry.getModule( i ) != null ) { list.add( new ItemStack( item, 1, i ) ); } } } @Override @SideOnly( Side.CLIENT ) public void registerIcons( IIconRegister ir ) { SocketModule m; int l; int temp; this.itemIcon = ir.registerIcon( "eng_toolbox:bg" ); textures = new IIcon[ModuleRegistry.numModules]; for( int i = 0; i < ModuleRegistry.numModules; i++ ) { m = ModuleRegistry.getModule( i ); if( m != null ) { textures[i] = ir.registerIcon( m.textureFiles[0] ); } } } }