[1.12.2] How to use Cracttweaker to change the NTM-EX HBM's Nuclear Tech Extended Edition Minecraft Game

This tutorial is set by the author's setting without permission.

Foreword

The NTM starting from version 1.9.4 supports the use of Crafttweaker to change some machine formulas.

The official wiki see Crafttweakerwiki.md on the GitHub page

*All recipes cannot use the IINGREDIENT type, and cannot use "|" to match multiple items.(It is essentially the IINGREDIENT type)

Assembly machine

Guide package:

 Import Mods.ntm.assembler; 

Add formula: (version 1.9.7 invalid) 1.9.8 and later versions have been repaired

 mods.ntm.assembler.addrecipe (IITEMSTACK output, IItemstack [] multiple inputs, int duration tick);

MODS.NTM.ASSEMBLER.ADDRECIPE (, [*2, ], 100);

*Because the formula formula is stored using HashMap, and the key stack of the product uses the product stack instead of the formula name, the product cannot be repeated (that is, the number of items and the number, META, NBT cannot be the same), otherwise the last one will be loaded in the last one to generate this generation.Product formula.

Delete formula:

 mods.ntm.assembler.removerecipe (IITEMSTACK output); //

mods.ntm.assembler.removerecipe ();

proliferation

Guide package:

 Import Mods.ntm.BreedingReador; 

Add formula:

 mods.ntm.BreedingReactor.addRcipe (IITEMSTACK input, IItemstack output, int calories); // The heat requirements must be 1 ~ 4

mods.ntm.BreedingReactor.addrecipe (, , 2);

Delete formula:

 mods.ntm.breedingReactor.removerecipe (IITEMSTACK input);

mods.ntm.BreedingReactor.removerecipe ();

Add fuel:

 mods.ntm.BreedingReactor.addfuel (IItemstack input, int heat, int can available times); // The calories must be 1 ~ 4, and the number of usable times must be greater than equal to 1

Mods.ntm.BreedingReactor.addfuel (, 4, 3);

Delete fuel:

 mods.ntm.BreedingReactor.removefuel (IItemstack input);

mods.ntm.BreedingReactor.removefuel ();

centrifugal machine

Guide package:

 Import Mods.ntm.Centrifuge; 

Add formula:

 mods.ntm.centrifuge.addrecipe (IItemstack input, IItemstack [] multiple outputs); // The output items cannot be more than four more than four

MODS.ntm.CentrifUge.Addrecipe (, [*2, *2, *2, ]);

Delete formula:

 mods.ntm.centrifuge.removerecipe (IITEMSTACK input);

mods.ntm.centrifuge.removerecipe ();

DFC tungsten box

Guide package:

 Import Mods.ntm.dfc; 

Add formula:

 mods.ntm.dfc.addrecipe (IITEMSTACK input, IITEMSTACK output, long spk);

Mods.ntm.dfc.addRcipe (, , 100);

Delete formula:

 mods.ntm.dfc.removerecipe (IITEMSTACK input);

mods.ntm.dfc.removerecipe ();

RBMK radiation channel

Guide package:

 Import Mods.ntm.irradiationChannel; 

Add formula:

 mods.ntm.irradiationChannel.addrecipe (IITEMSTACK input, IITEMSTACK output, int neutral volume);

mods.ntm.irradiationChannel.Addrecipe (, , 100);

Delete formula:

 mods.ntm.irradiationChannel.removerecipe (IITEMSTACK input);

mods.ntm.irradiationChannel.removerecipe ();

grinder

Guide package:

 Import Mods.ntm.shredder; 

Add formula:

 mods.ntm.shredder.addrecipe (IITEMSTACK input, IITEMSTACK output); mods.ntm.shredder.addrecipe (,  AFT: Iron_ingot>); 

Delete formula:

 mods.ntm.shredder.removerecipe (IITEMSTACK input);

mods.ntm.shredder.removerecipe ();

Laser isotope separation

Guide package:

 Import Mods.ntm.silex; 

Add formula:

 mods.ntm.silex.addrecipe (int laser type, int acidification generates solution mb, int Formula consumes solution mb, iItemstack input

, Itemstack [] multiple outputs, int [] multiple output probability%);

// Laser type is 1 ~ 8, in turn, in order, in turn, microwave, microwave, infrared, visible light, ultraviolet rays, X -rays, Y -rays, Di Y rays

// The number of fluids must be less than 16000, and the number of output items stack must be less than or equal to 6.

mods.ntm.silex.addrecipe (2, 900, 100, , [, ,

, , , ], [20, 20, 20, 20, 10, 10, 10]);

*In fact, laser type input 0 is also possible, but it does not belong to any laser, the name is "La Creatura".The comment written by the author is: why do you exist?

Delete formula:

mods.ntm.silex.removerecipe (IITEMSTACK input);

mods.ntm.silex.removerecipe ();

Fuel tank

Guide package:

 Import Mods.ntm.wastedrum; 

Add formula:

 mods.ntm.wastedrum.addrecipe (IItemstack input, IItemstack output); // The number of input output items can only be 1

mods.ntm.wastedrum.addrecipe (, );

*Can't delete the recipe currently

blast furnace

Guide package:

 Import Mods.ntm.blastfurnace; 

Add formula:

 mods.ntm.blastfurnace.Addrecipe (IITEMSTACK input 1, IItemstack input 2, Iitemstack output); mods.ntm.blastfurnace.AdDDRECIP e, ); 

Delete formula: (Version 1.9.7 is invalid, other versions are not tested, see the solution at the bottom)

 mods.ntm.blastfurnace.removerecipe (IITEMSTACK input 1, IITEMSTACK input 2); // You need to match the number of items

mods.ntm.blastofurnace.removerecipe (, );

Add fuel:

 mods.ntm.blastfurnace.addfuel (IItemstack input, int burning time); // Burning time must be between 1 ~ 12800

mods.ntm.blastfurnace.addfuel (, 200);

Delete fuel:

 mods.ntm.blastfurnace.removefuel (IItemstack input);

mods.ntm.blastfurnace.removefuel ();

Chemical factory

Guide package:

 Import Mods.ntm.chempland; 

Add formula: (The template purple and black block warning, exactly the same problem as the previous assembly machine, the model cannot be loaded, the solution is free to think about it)

 mods.ntm.chemplant.addchemplandRcipe (int digital id, string formula name, IItemstack [] input, string [] fluid input, int [] input fluid amount

, Itemstack [] output, string [] fluid output, int [] output fluid volume, int duration);

mods.ntm.chplant.addchemplantRecipe (373, "test_name", null, ["steam", "il"], [800, 200]

, [], ["Water", "LAVA"], [500, 600], 100);

*Digital ID cannot be the same as the existing formula. The digital ID of the existing formula is the META value of the corresponding template (via F3+H can be viewed)

*The formula is named English letters, numbers, and lines.

*The fluid is represented by string and integer, rather than the usual iLiquidStack is quite stylish, where the string is registered as the fluid, that is, Iliquidstack represents "liquid:" in the back; the integer is the fluid amount, and the unit is MB.**化工厂的模板需要提供材质和本地化名,本地化名可以通过更改lang文件指定(格式为chem.配方名=本地化名;例:chem.KEVLAR=凯夫拉生产);材质分为两部分,The model of the JSON format and the PNG format.It is recommended to use ResourceLoader module to handle localization and material. The specific operation refer to the module tutorial here.

**but!Due to the module code problem, even if the model and sticker file in the same format as the existing formula are added, it will not be loaded.sad

Delete formula:

 mods.ntm.chemplant.removechemplandRcipe (int digital ID);

mods.ntm.chmplant.removechemplantRcipe (370);

Fluid heating

Guide package:

 Import Mods.ntm.fluidheating; 

Add formula:

*The heat TU only affects the multi -square boiler that uses the heat system, and the operating temperature of a unilateral boiler is consistent with the temperature attribute of the output fluid.(It is better to eat with Iliquiddefinition)

 // Heating formula

mods.ntm.fluidheating.addboilRecipe (string fluid input, int input fluid amount, string fluid output, int output fluid volume, int absorbing calories TU); int absorbing calories);

mods.ntm.fluidheating.addboilRecipe ("Oil", 10, "lava", 10, 800);

// cooling formula

mods.ntm.fluidheating.addcoolRcipe (string fluid input, int input fluid amount, string fluid output, int output fluid volume, int departs heat TU);

mods.ntm.fluidheating.addcoolrecipe ("lava", 10, "oil", 10, 600);

// Add heating and cooling at the same time (Entropy: Please look at me well)

mods.ntm.fluidheating.addboardCoolRecipe (String cold flow, int cold flow volume, string heat flow, int thermal flow volume, int absorbing/heat outlet TU);

mods.ntm.fluidheating.addboardCoolrecipe ("Oil", 10, "LAVA", 10, 700);

Delete formula:

 // Heating formula

mods.ntm.fluidheating.removeboilrecipe (string fluid input);

mods.ntm.fluidheating.removeboilrecipe ("Water");

// cooling formula

mods.ntm.fluidheating.removeCoolRcipe (String fluid input);

mods.ntm.fluidheating.removeCoolRcipe ("HOT_COOLANT");

fluid fuel

Guide package:

 Import Mods.ntm.fluidcombustion; 

Add formula:

 mods.ntm.fluidcombustion.addburnablefluid (string fluid input, int thermal value TU/MB);

mods.ntm.fluidCombustion.addburnableFLUID ("Water", 20);

Delete formula:

 mods.ntm.fluidcombustion.removeburnablefluid (string fluid input);

mods.ntm.fluidcombustion.removeburnablefluid ("Gasoline");

Advanced (?)

The solution of the blast furnace cannot delete the formula: (need to build a module)

The cause of the problem is speculated (not confirmed): The default formula is added to use the mineral rhetoric, and the deletion formula only detects the item stack of the formula of the formula, so it cannot find the formula to be deleted.

Solution: Delete the formula directly in the source code, and the relevant code is in src/main/java/com/hbm/inventory/difurnaceRecipes.java.

Modify the code to add the formula of the assembly machine to support the input of mines (requires basic knowledge for programming)

It is not a big problem that does not support mineral resignations, but the assembly machine cannot have a variety of formulas with the same products, which makes it difficult for some players and integrated packagers who like magic reforms to play.Because the code to be changed is relatively large, only ideas are provided here.

HBM's representation of materials is located in RECIPESCOMON, which is the material stack Astack, and two derivatives: the item stack ComparableStack and the mine resignation Oredictstack;

The CRT we need to use for the material is the material IINGREDIENT, and the IITEMSTACK, and the ore ore 矿 我们 我们 n ingredientStack.

Note that the shape is like "" is ore ore IOREDICENTRY, and the shape of "*2" is the material stack IngredientStack instead of mineral resignation.

The process of magic reform is a method of translation from the material representation method of ZS, and then translated into HBM's material representation method, and finally runs correctly on the machine.

If you want to do the modification, the type of the member in the class assembbacker.ACTIONDDDDRECIPE is changed from comparablestack [] to Astack [] to adapt to the Oredictstack type, and the original entered IITEMSTACK [] to INGREDIENTSTS ACK and IORDICENTRY type, And translate it into the ComparableStack or Odictstack of the ComparableStack or Odictstack based on the different types of the input ingredient parameter dynamic type.

It is worth noting that when translating IngredIientStack into Oredictstack, you will find that there is no suitable interface function to help you get the name of the mine.The scripts we have written such as " * 2" will be translated into an IngredientStack type composed of ioreDiCEntry and int, and IOREDICENTRY can get the name of the mine, but it is a private member, so you need to use in ForgeFunction ObfuscationRefacehelper.GetprivingValue (class, such objects, String member names) forcibly accessed.

Coo, cool!