Начнем пожалуй новую тему про яву. Со временем я буду пополнять этот пост. Некоторые строки я буду удалять, т.к. это займет слишком много места. (через пару минут будет готово) 
 Разумеется многие строки повторяются, поэтому рассматривать я буду их только 1 раз, пользуйтесь поиском. 
 Я не буду использовать code, т.к. в нем недоступны цвета текста  
 
 Разумеется я знаю далеко не все и могу ошибатся, также я оставляю строки без комментария, если они мне не понятны, дополняйте, критикуйте, все это приветствуется.  Начнем с двигателя. (на примере einvagen 110 gt) 
 Блок: 
 ************************************************************************ 
 package java.game.parts.engines.Einvagen_Duhen_Ishima_Focer; //собственно адрес нашего двигателя с точностью до папки, если хотим сделать свой движок, меняем адрес на свой. 
 import java.util.*; //импортируемые явы-родители и не только. 
 ... 
 public class Einvagen_110_GT_block extends Block_Inline_OHC // Einvagen_110_GT_block - уникальное имя нашей детали, точно таким же должно быть имя этой явы, т.е. Einvagen__110_GT_block.java //Block_Inline_OHC - ява-родитель, т.е. чтобы не прописывать каждой детали все ее свойства, это делается в явах-родителях, Block_Inline_OHC тоже ссылается на другого родителя и в конце концов это сводится обычно к part.java в котором прописаны универсальные свойства деталей. В принципе в обычном моддинге это неважно. 
 { 
   public Einvagen_110_GT_block( int id ) // не забываем и эту строку изменить, если делаем свою деталь на основе этой. 
   { 
    super( id ); 
    name = "Einvagen 110 GT/GTK block"; // имя нашей детали в игре. 
    description = "";// описание детали в игре, правда где - не понятно. 
    brand_new_prestige_value = 55.70; // престиж детали, прибавляется к престижу машины, при установке детали в машину 
     
    value = tHUF2USD(60); // цена детали, чтобы узнать истинную цену в игре, умножте это значение примерно на 5 
    setMaxWear(kmToMaxWear(210000.0)); // ресурс детали 
    bore = 80.0; // по-моему объем двигателя, но он зависит не только от значения в блоке.. 
    crankshaft_slot_ID = 40; // слоты для деталей блока, Raxat сказал не трогать их, чтож я ему верю. 
    crankshaft_bearing_slot_ID = 97; 
    transmission_slot_ID = 1; 
    oil_pan_slot_ID = 37; 
    cylinder_head_slot_ID = 47; 
    rpm_idle = 850.0; // холостые обороты двигателя, также могут быть заданы в яве модели автомобиля. 
    time_spark_min    = sparkAngleTo4cycleTime(315.0); // понятия не имею 
    time_spark_inc    = sparkAngleTo4cycleTime(355.0)-time_spark_min; 
    time_spark_RPM0    = 2250; 
    time_spark_RPM1    = 5500; 
    RPM_limit    = 6500; // красная линия, она же отсечка оборотов двигателя. 
    cylinders    = 4; // кол-во цилиндров в двигателе, это и самый простой читерский способ увеличить мощность. 
    check4warnings(); 
   } 
   public void updatevariables() 
   { 
    super.updatevariables(); 
    getCar_LocalVersion(); 
    if (the_car) 
    { 
     SfxTable tab; 
     if (tab = the_car.getSfxTable(0)) 
     { 
      tab.clear(); 
      tab.addItem(new ResourceRef(parts.engines.Einvagen_Duhen_Ishima_Focer:0x000000A2r), 1500.0,  500.0, 6500.0, 0.42, 0.52); // звук двигателя и его соответсвие оборотам, т.е. как я понял данный звук (по адресу 0x000000A2 в рпк двигателя) соответствует оборотам 1500, 500 и 6000 , значения 0.42 и 0.52 не понятны .. вероятно громкость или еще чего, я не проверял. 
      tab.addItem(new ResourceRef(parts.engines.Einvagen_Duhen_Ishima_Focer:0x000000A9r), 5000.0, 3000.0,18000.0, 0.62, 1.00);     
     } 
 .... 
     } 
    } 
   } 
   public void addStockParts( Descriptor desc ) // собственно здесь мы прописываем адреса для деталей, которые будут установлены в машине при покупке, здесь - в блоке двигателя, соответсвенно, если на деталь ставятся другие детали, то она тоже будет содержать эти строки 
   { 
    super.addStockParts( desc ); 
    getCar_LocalVersion(); 
    if (the_car.make == the_car.MAKE_EINVAGEN) //если машина einvagen 
    { 
     if (the_car.model == Einvagen_models.MODEL_110_GT) //если модель 110 GT 
     { 
      addPart( parts.engines.Einvagen_Duhen_Ishima_Focer:0x000000D3r, "Einvagen_110_GT_crankshaft", desc ); // то добавляем деталь 0x000000D3 т.е. Einvagen_110_GT_crankshaft 
      .... 
     } 
    } 
   } 
   public String isDynoable() // здесь написано условие, при котором машина может завестись. 
   { 
    Part p; // наш блок назовем p 
    p = partOnSlot( 14 );// ..находящаяся в 14 слоте 
    if (!p) // если ее нету в 14 слоте 
     return "the engine is missing the alternator."; // то создаем окошко с надписью the engine is missing the alternator. 
    return super.isDynoable(); // в противном случае все нормально. 
   } 
 } 
 ************************************************************************ 
 распредвалы на примере exhaust camshaft, он же выпускной распредвал 
 ************************************************************************ 
 public class Einvagen_110_GT_exhaust_camshaft extends DOHC_Camshaft 
 { 
 public Einvagen_110_GT_exhaust_camshaft( int id ) 
 { 
 ... 
 static_input_lobe_separation	= 265.0; // пока не знаю, за что отвечает, но влияет на крутящий момент. 
 static_input_lift_in_open	= 0.0; // =13.5 в intake camshaf	t - отвечает за высоту подъема впускного клапана, увеличивая это значение можно повысить мощность. 
 static_input_lift_in_close	= 0.0; // вероятно высота закрытого впускного клапана. 
 static_input_lift_out_open	= 13.5; // отвечает за высоту подъема выпускного клапана, увеличивая это значение можно повысить мощность. 
 static_input_lift_out_close	= 0.0; // вероятно высота закрытого выпускного клапана. 
 static_input_time_in_duration	= 0.0; 
 static_input_time_out_duration	= 195.0; 
 advance_positive_peak		= +15.0;// настройки вала в тюнинг меню, максимальное и .. 
 advance_negative_peak		= -15.0; //.. минимальное значение 
 advance_minimum_step		= 1.0; // шаг ползунка в тюнинг меню 
 advance				= 0.0; // значение по умолчанию (после покупки) 
 ... 
 maxRPM = 10000.0;// максимальные обороты двигателя, при которых работает эта деталь. 
 inertia = kgToInertia(4.0); // инерция детали, соответственно уменьшая инерцию, можно добиться более чувствительного двигателя, увеличивая - комфортность, например при трогании с места или переключении передач. 
 } 
 } 
 ************************************************************************ 
 intake manifold он же грубо говоря инжектор 
 public class Einvagen_110_GT_intake_manifold extends IntakeManifold 
 { 
 public Einvagen_110_GT_intake_manifold( int id ) 
 { 
 ... 
 efficiency = 0.80;// эффективность детали, изменяя это значение можно изменить мощность/момент двигателя, в этой детали не делайте это значение выше 0.99, т.к. появятся глюки. 
 } 
 public void updatevariables() 
 { 
 mixture_ratio = 1.0; 
 max_fuel_consumption = 0.0; // потребление топлива, да да .. инвиктус хотели много чего интересного сделать, но .. значение естественно ни на что не влияет. 
 max_air_consumption = 0.150; // расход воздуха 
 mixture_H = 1.0; 
 time_burn = 0.1; 
 .... 
 ************************************************************************ 
 transmission она же коробка передач. 
 ************************************************************************ 
 public class Faktun_Group_Tran6_transmission extends Transmission 
 { 
 public Faktun_Group_Tran6_transmission( int id ) 
 { 
 ... 
 gears		= 6;// количество передач 
 ratio[0]	= 0; // видимо передаточное число нейтралки ))) 
 ratio[1]	= 3.550; // передаточные числа других передач 
 ratio[2]	= 2.510; 
 ratio[3]	= 1.760; 
 ratio[4]	= 1.210; 
 ratio[5]	= 0.930; 
 ratio[6]	= 0.750; 
 ratio[7]	=-4.000; // передаточное число заднего хода 
 end_ratio	= 4.087; // главное передаточное число 
 starter_torque	= 60.0; // крутящий момент стартера 
 adjustable_gears = 1+2+4; // forward gears, reversing gear, end ratio // изменяемые в тюнинг меню передаточные числа, т.е. все. 
 amount_of_oil_needed = 0.0;// internally lubricated // бугага, инвиктус хотели сделать масло в коробке, но ... 
 best_lubrication_sliction=0.99; // видимо тоже тема с маслом, отсутствие трения при максимальном кол-ве масла ... 
 worst_lubrication_sliction=0.85; // и довольно напряжное, если масла нету. 
 drive_type = DT_FWD; // DT_FWD - переднеприводная коробка, DT_RWD - заднеприводная коробка, а еще есть вроде DT_CWD - cross wheel drive, уж не знаю что инвиктус имели в виду .. не похоже на полный привод. 
 drive_front_min = 0.25; // минимальный привод на передние колеса (можно установить 0, чтобы коробка работала полностью как заднеприводная) все ниженаписанное, можно регулировать в тюнинг-меню. 
 drive_front_max = 0.75; // максимальный передний привод (можно установить 1, чтобы коробка была полностью переднеприводной) 
 def_drive_front = 0.50; // по умолчанию крутящий момент идет поровну на обе оси, т.е. полноприводная машина 
 drive_front = def_drive_front; 
 diff_lock_min = 0.10; // минимальное значение блокировки дифференциала (можно установить 0, чтобы блокировка дифференциала отсутствовала) 
 diff_lock_max = 0.75; // максимальное значение блокировки дифференциала (можно установить 1, чтобы полностью заблокировать дифференциал в тюнинг меню) 
 def_diff_lock = 0.25; // значение по умолчанию 
 diff_lock = def_diff_lock; 
 } 
 ************************************************************************ 
 fuel rail она же топливная рельса с форсунками 
 ************************************************************************ 
 public class Einvagen_PerPro_GTA_fuel_rail extends FuelInjectorSystem 
 { 
 public Einvagen_PerPro_GTA_fuel_rail( int id ) 
 { 
 ... 
 max_fuel_consumption	= 0.02; // максимальное потребление топлива, т.к. бензин неограничен, ни на что не влияет. 
 default_mixture_ratio	= 14.5; // смесь воздуха к топливу по умолчанию (14.5 частей воздуха на 1 часть топлива.) 
 default_fuel_type	= FT_GAS_95; // тип топлива, возможные значения: FT_GAS_95, FT_GAS_98, FT_GAS_100, FT_METHANOL, FT_DIESEL. 
 mixture_ratio		= default_mixture_ratio; 
 fuel_type		= default_fuel_type; 
 calcStuffs(); 
 check4warnings(); 
 } 
 } 
 ************************************************************************ 
 turbocharger он же турбонаддув 
 ************************************************************************ 
 public class Shimutshibu_RC_MWFCR22W12_turbocharger extends TurboCharger 
 { 
 public Shimutshibu_RC_MWFCR22W12_turbocharger( int id ) 
 { 
 ... 
 calculateOptandRange (4500.0, 8750.0); // диапазон оборотов двигателя, на которых работает эта турбина, завязано со значением ... 
 P_turbo_max	= 4.00; // вот с этим значением, т.е. если вы устанавливаете большой диапазон (например от 100 до 10000 rpm, то вам понадобится увеличить значение p_turbo_max, в противном случае особого эффекта не будет, или же если диапазон оборотов будет не очень высок, например от 5500 до 7000, то это значение лучше уменьшить, т.к. будет резкий скачок мощности в этом диапазоне, что затруднит управление автомобилем) 
 default_P_turbo_waste	= 1.25; 
 P_turbo_waste	= default_P_turbo_waste; 
 max_waste	= 2.0; // максимальное давление турбины в тюнинг меню, также завязано с p_turbo_max 
 min_waste	= 0.75; // минимальное давление турбины в тюнинг меню 
 } 
 Продолжение завтра 