本篇教程由作者设定使用 CC BY-NC-ND 协议。
第二期GTCE>CEu教程来了。继续上期的部分。
GTCEuWiki
继续上期的材料部分
材料
成分
components(MaterialStack[] components)
设置材料的成分部分。
componentsMaterialStacks-表示此材料成分的数组。
下一个例子:
#loader gregtech
import mods.gregtech.material.MaterialBuilder;
import mods.gregtech.material.Material;
var cursed_chemistry_material = MaterialBuilder(32004, "cursed_chemistry_material")
.fluid()
.color(0x00FF00) //纯红
.components([<material:silver> * 3, <material:nitrogen> * 6, <material:carbon> * 2]) //设置组成
.build(); //构建
材料Flags
MaterialFlags指关于材料的附加小属性,有很多不同的好用的Flags。
所有材料都可用的MaterialFlags:
"no_unification":使材料完全禁用它的统一功能(这意味着没有自动生成的配方了)。
"decomposition_requires_hydrogen":分解配方需要氢气作为额外的输入,数量等于输入金额,将电解机电压设置为 EV。
"decomposition_by_electrolyzing":启用电解机分解配方生成。
"decomposition_by_centrifuging":启用离心机离心配方生成。
"disable_decomposition":禁用此材料和所有将其作为成分的材料的分解配方生成。
"explosive":使材料成为某种爆炸物
"flammable":使材料成分易燃品
"generate_plate":生成板?
DustProperty材质的可用MaterialFlags:
"generate_plate":为此材料生成一个板,如果它只有一个DustProperty,将添加一个压缩机配方,如果它有IngotProperty,将添加卷板机配方,如果他有材料块,将生成切割机配方。
"generate_rod":为这种材料生成材料杆。
"generate_frame":为此材料生成一个金属框架,需要前置"generate_rod"。
"generate_gear":为此材料生成材料齿轮,需要"generate_plate"和"generate_rod"。
"generate_long_rod":为这种材料生成材料长杆,需要"generate_rod"。
"exclude_block_crafting_recipes":避免创建无序配方以使粉可以合成块。禁止通过模头/模具挤压和合金熔炼得到材料块
"exclude_plate_compressor_recipe": 禁止在压缩机中形成材料粉的材料板,需要"generate_plate"。
"exclude_block_crafting_by_hand_recipes":禁止创建无序配方以使粉合成材料块,反之亦然。
"mortar_grindable":所有材料都可以通过研钵研磨成他的材料粉形式。
材质的可用 MaterialFlags IngotProperty:
"no_working":使除了粉碎或熔炼以外的任何方式都无法合成时,这用于涂层材料。
"no_smashing":使材料无法被一般金属技术加工,例如弯曲板
"no_smelting":使材料无法被熔炼
"blast_furnace_calcite_double":使此材料在高炉中熔炼其矿石方解石以获得 2 倍产物。
"blast_furnace_calcite_triple":使此材料在高炉中加热其矿石方解石以获得 3 倍产物。
"generate_foil":为这种材料生成一个材料箔,需要"generate_plate"。
"generate_bolt_screw":为此材料生成螺栓和螺丝,需要"generate_rod"。
"generate_ring":为此材料生成一个材料环,需要"generate_rod"。
"generate_spring":为此材料生成弹簧。需要"generate_long_rod"。
"generate_spring_small":为此材料生成一个小弹簧,需要"generate_rod"。
"generate_small_gear":为这种材料生成一个小齿轮,需要"generate_plate"和"generate_rod"。
"generate_fine_wire":为这种材料生成细线,需要"generate_foil"。
"generate_rotor":为此材料生成转子。需要"generate_bolt_screw","generate_ring"和"generate_plate"。
"generate_dense":为这种材料生成一个致密的板,需要"generate_plate"。
"generate_round":为这种材料生成一个滚珠。
GemProperty材料的可用 MaterialFlags:
"crystallizable":如果这种材料可以在高压釜中结晶。
"generate_lens":为此材质生成一个透镜,需要"generate_plate"。
OreProperty材料的可用 MaterialFlags:
"high_sifter_output":如果在筛选机中处理粉碎的纯净矿石时该材料具有更多的输出。
添加Flags
flags(string[] names)
将 MaterialFlags 添加到此材料。
names- 特定 MaterialFlags 名称的字符串数组。
例子:
#loader gregtech
import mods.gregtech.material.MaterialBuilder;
import mods.gregtech.material.Material;
var specialSteelFlagged = MaterialBuilder(32005, "special_steel_flagged") //名称
.fluid("gas", false) //gas和方块
.ingot() //锭粉材料
.color(0x0000FF) //纯蓝
.iconSet("shiny") //材料集iconset为shiny
.flags(["generate_plate", "generate_foil"]) //添加Flags
.toolStats(10, 3, 256, 21) //工具
.blastTemp(2900) //EBF温度
.ore() //矿石
.addOreByproducts(<material:gold>, <material:copper>) //副产物
.cableProperties(128, 2, 4, false) //材料线缆
.build(); //构建
元素
Element用于将材料指定为元素,CEu 有元素周期表,所以你可能不需要太在意具体的数值。
Elements.add(long protons, long neutrons, long halfLifeSeconds, String decayTo, String name, String symbol, boolean isIsotope) 添加
添加一个新元素。
protons- 质子数量
neutrons- 中子数量
halfLifeSeconds- 此材料的半衰期时间(以秒为单位),-1用于稳定材料,也就永远不会衰变。
decayTo- 表示它衰减后得到的元素的字符串,用 '&' 字符分隔。
name- 元素名称
symbol- 元素的缩写,例如氧O,铁Fe。
Wiki给出的元素周期表的表格,一共135种:
质子prontons | 中子neutrons | 半衰期时间halfLifeSeconds | 衰变后元素decayTo | 名称name | 缩写symbol | 同位素isIsotope |
1 | 0 | -1 | null | "Hydrogen" | "H" | false |
1 | 1 | -1 | "H" | "Deuterium" | "D" | true |
1 | 2 | -1 | "D" | "Tritium" | "T" | true |
2 | 2 | -1 | null | "Helium" | "He" | false |
2 | 1 | -1 | "H&D" | "Helium-3" | "He-3" | true |
3 | 4 | -1 | null | "Lithium" | "Li" | false |
4 | 5 | -1 | null | "Beryllium" | "Be" | false |
5 | 5 | -1 | null | "Boron" | "B" | false |
6 | 6 | -1 | null | "Carbon" | "C" | false |
7 | 7 | -1 | null | "Nitrogen" | "N" | false |
8 | 8 | -1 | null | "Oxygen" | "O" | false |
9 | 9 | -1 | null | "Fluorine" | "F" | false |
10 | 10 | -1 | null | "Neon" | "Ne" | false |
11 | 11 | -1 | null | "Sodium" | "Na" | false |
12 | 12 | -1 | null | "Magnesium" | "Mg" | false |
13 | 13 | -1 | null | "Aluminium" | "Al" | false |
14 | 14 | -1 | null | "Silicon" | "Si" | false |
15 | 15 | -1 | null | "Phosphorus" | "P" | false |
16 | 16 | -1 | null | "Sulfur" | "S" | false |
17 | 18 | -1 | null | "Chlorine" | "Cl" | false |
18 | 22 | -1 | null | "Argon" | "Ar" | false |
19 | 20 | -1 | null | "Potassium" | "K" | false |
20 | 20 | -1 | null | "Calcium" | "Ca" | false |
21 | 24 | -1 | null | "Scandium" | "Sc" | false |
22 | 26 | -1 | null | "Titanium" | "Ti" | false |
23 | 28 | -1 | null | "Vanadium" | "V" | false |
24 | 28 | -1 | null | "Chrome" | "Cr" | false |
25 | 30 | -1 | null | "Manganese" | "Mn" | false |
26 | 30 | -1 | null | "Iron" | "Fe" | false |
27 | 32 | -1 | null | "Cobalt" | "Co" | false |
28 | 30 | -1 | null | "Nickel" | "Ni" | false |
29 | 34 | -1 | null | "Copper" | "Cu" | false |
30 | 35 | -1 | null | "Zinc" | "Zn" | false |
31 | 39 | -1 | null | "Gallium" | "Ga" | false |
32 | 40 | -1 | null | "Germanium" | "Ge" | false |
33 | 42 | -1 | null | "Arsenic" | "As" | false |
34 | 45 | -1 | null | "Selenium" | "Se" | false |
35 | 45 | -1 | null | "Bromine" | "Br" | false |
36 | 48 | -1 | null | "Krptom" | "Kr" | false |
37 | 48 | -1 | null | "Rubidium" | "Rb" | false |
38 | 49 | - | n | "Strontium" | "Sr" | f |
39 | 50 | - | n | "Yttrium" | "Y" | f |
40 | 51 | - | n | "Zirconium" | "Zr" | f |
41 | 53 | - | n | "Niobium" | "Nb" | f |
42 | 53 | - | n | "Molybdenum" | "Mo" | f |
43 | 55 | - | n | "Techneium" | "Tc" | f |
44 | 57 | - | n | "Ruthenium" | "Ru" | f |
45 | 58 | - | n | "Rhodium" | "Rh" | f |
46 | 60 | - | n | "Palladium" | "Pd" | f |
47 | 60 | -1 | n | "Silver" | "Ag" | false |
48 | 64 | - | n | "Cadmium" | "Cd" | f |
49 | 65 | - | n | "Indium" | "In" | f |
50 | 68 | - | n | "Tin" | "Sn" | f |
51 | 70 | - | n | "Antimony" | "Sb" | f |
52 | 75 | - | n | "Tellurium" | "Te" | f |
53 | 74 | - | n | "Iodine" | "I" | f |
54 | 77 | - | n | "Xenon" | "Xe" | f |
55 | 77 | - | n | "Caesium" | "Cs" | f |
56 | 81 | - | n | "Barium" | "Ba" | f |
57 | 81 | -1 | null | "Lanthanum" | "La" | false |
58 | 82 | - | n | "Cerium | "Ce" | f |
59 | 81 | - | n | "Praseodymium" | "Pr" | f |
60 | 84 | - | n | "Neodymium" | "Nd" | f |
61 | 83 | - | n | "Promethium" | "Pm" | f |
62 | 88 | - | n | "Samarium" | "Sm" | f |
63 | 88 | - | n | "Europium | "Eu" | f |
64 | 93 | - | n | "Gadolinium" | "Gd" | f |
65 | 93 | - | n | "Terbium" | "Tb" | f |
66 | 96 | - | n | "Dysprosium" | "Dy" | f |
67 | 97 | -1 | null | "Holmium" | "Ho" | false |
68 | 99 | - | n | "Erbium" | "Er" | f |
69 | 99 | - | n | "Thulium" | "Tm" | f |
70 | 103 | - | n | "Ytterbium" | "Yb" | f |
71 | 103 | - | n | "Lutetium" | "Lu" | f |
72 | 106 | - | n | "Hafnium" | "Hf" | f |
73 | 107 | - | n | "Tantalum" | "Ta" | f |
74 | 109 | - | n | "Tungsten" | "W" | f |
75 | 111 | - | n | "Rhenium" | "Re" | f |
76 | 114 | - | n | "Osmium" | "Os" | f |
77 | 115 | -1 | null | "Iridium" | "Ir" | false |
78 | 117 | - | n | "Platinum" | "Pt" | f |
79 | 117 | - | n | "Gold" | "Au" | f |
80 | 120 | - | n | "Mercury" | "Hg" | f |
81 | 123 | - | n | "Thallium" | "Tl" | f |
82 | 125 | - | n | "Lead" | "Pb" | f |
83 | 125 | - | n | "Bismuth" | "Bi" | f |
84 | 124 | - | n | "Polonium" | "Po" | f |
85 | 124 | - | n | "Astatine" | "At" | f |
86 | 134 | - | n | "Radon" | "Rn" | f |
87 | 134 | -1 | null | "Francium" | "Fr" | false |
88 | 136 | - | n | "Radium" | "Ra" | f |
89 | 136 | - | n | "Actinium" | "Ac" | f |
90 | 140 | - | n | "Thorium" | "Th" | f |
91 | 138 | - | n | "Protactinium" | "Pa" | f |
92 | 146 | - | n | "Uranium" | "U" | f |
92 | 146 | - | n | "Uranium-238" | "U-238" | f |
92 | 143 | - | n | "Uranium-235" | "U-235" | true |
93 | 144 | - | n | "Neptunium" | "Np" | f |
94 | 152 | - | n | "Plutonium" | "Pu" | f |
94 | 145 | -1 | null | "Plutonium-239" | "Pu-239" | false |
94 | 149 | - | n | "Plutonium-241" | "Pu-241" | true |
95 | 150 | - | n | "Americium" | "Am" | |
96 | 153 | - | n | "Curium" | "Cm" | |
97 | 152 | - | n | "Berkelium" | "Bk" | |
98 | 153 | - | n | "Californium" | "Cf" | |
99 | 153 | - | n | "Einsteinium" | "Es" | |
100 | 157 | - | n | "Fermium" | "Fm" | |
101 | 157 | - | n | "Mendelevium" | "Md" | |
102 | 157 | - | n | "Nobelium" | "No" |
103 | 159 | -1 | null | "Lawrencium" | "Lr" | false |
104 | 161 | - | n | "Rutherfordium" | "Rf" | f |
105 | 163 | - | n | "Dubnium" | "Db" | f |
106 | 165 | - | n | "Seaborgium" | "Sg" | f |
107 | 163 | - | n | "Bohrium" | "Bh" | f |
108 | 169 | - | n | "Hassium" | "Hs" | f |
109 | 167 | - | n | "Meitnerium" | "Mt" | f |
110 | 171 | - | n | "Darmstadtium" | "Ds" | f |
111 | 169 | - | n | "Roentgenium" | "Rg" | f |
112 | 173 | - | n | "Copernicium" | "Cn" | f |
113 | 171 | -1 | null | "Nihonium" | "Nh" | false |
114 | 175 | - | n | "Flerovium" | "Fl" | f |
115 | 173 | - | n | "Moscovium" | "Mc" | f |
116 | 177 | - | n | "Livermorium" | "Lv" | f |
117 | 177 | - | n | "Tennessine" | "Ts" | f |
118 | 176 | - | n | "Oganesson" | "Og" | f |
119 | 178 | - | n | "Tritanium" | "Tr" | f |
120 | 180 | - | n | "Duranium" | "Dr" | f |
125 | 198 | - | n | "Trinium" | "Ke" | f |
174 | 352 | 140 | n | "Naquadah" | "Nq" | true |
174 | 354 | 140 | null | "NaquadahEnriched" | "Nq+" | true |
174 | 348 | 140 | n | "Naquadria" | "Nq" | true |
0 | 1000 | -1 | n | "Neutronium" | "Nt" | false |
750 | 1000 | -1 | n | "Adamantium" | "Ad" | false |
850 | 900 | -1 | n | "Vibranium" | "Vb" | false |
550 | 670 | -1 | n | "Taranium" | "Tn" | false |
元素材料例子
#loader gregtech
import mods.gregtech.material.MaterialBuilder;
import mods.gregtech.material.Material;
import mods.gregtech.material.Elements;
var CEu = Elements.add(999, 999, -1, null, "GTCEu", "CEu", false); // create a new element.
var element_material = MaterialBuilder(32006, "element_material").element("GTCEu").build();
var Au = Elements.get("Gold"); // get an existing element.
var element_material = MaterialBuilder(32007, "element_material").element("Gold").build();
元素例子
#loader gregtech
#priority 10000
import mods.gregtech.material.MaterialBuilder;
import mods.gregtech.material.Material;
val red_iron = MaterialBuilder(32000, "red_iron")
.ingot().fluid()
.color(0xF7B29B)
.flags(["generate_plate", "generate_rod", "generate_gear", "decomposition_by_centrifuging"])
.components([<material:iron> * 1, <material:redstone> * 1])
.cableProperties(32, 2, 1)
.build();
val glowing_redstone = MaterialBuilder(32001, "glowing_redstone")
.dust()
.color(0x774D05).iconSet("bright")
.flags(["decomposition_by_centrifuging"])
.components([<material:glowstone> * 1, <material:redstone> * 1])
.build();
val rare_iron = MaterialBuilder(32002, "rare_iron")
.ingot().fluid()
.color(0x6AE26E).iconSet("bright")
.flags(["generate_plate", "generate_rod", "generate_gear", "disable_decomposition"])
.components([<material:iron> * 1, <material:rare_earth> * 1])
.cableProperties(8, 2, 1)
.build();
val obsidian_steel = MaterialBuilder(32003, "obsidian_steel")
.ingot().fluid()
.color(0x414751).iconSet("metallic")
.flags(["generate_plate", "generate_rod", "disable_decomposition"])
.components([<material:steel> * 1, <material:obsidian> * 1])
.build();
val silicon_steel = MaterialBuilder(32004, "silicon_steel")
.ingot().fluid()
.color(0xB2C0C1).iconSet("shiny")
.flags(["generate_plate", "generate_rod", "generate_gear", "decomposition_by_centrifuging"])
.components([<material:steel> * 1, <material:silicon> * 1])
.build();
val rare_gold = MaterialBuilder(32005, "rare_gold")
.ingot().fluid()
.color(0x755C40)
.flags(["generate_plate", "disable_decomposition"])
.components([<material:gold> * 1, <material:rare_earth> * 1])
.build();
材料获取与修改
MaterialRegistry.get(String materialName)
materialName 使用材料的注册名来获取材料。
MaterialRegistry.getAllMaterials()
获取所有已注册的材料
还有许多材料细节的Getter,例如:
getChemicalFormula()
获取材料的化学式。
materialRGB
获取材质RGB颜色。
radioactive
返回材料是否具有放射性。
protons
返回材料中的质子数
neutrons
返回材料中的中子数
mass
返回材料中的总质量
averageProtons
返回质子数量除以材料中成分的总量
averageNeutrons
返回中子数量除以材料中成分的总量
averageMass
返回质量量除以材料中成分的总量
blastTemperature
返回材料的高炉温度
camelCaseName
获取材料的 camelCaseName。
返回材质未本地化名称的字符串的驼峰形式,即“my_material”的名称返回“myMaterial”。
unlocalizedName
返回材质未本地化名称的字符串
localizedName
返回材质本地化(翻译)名称的字符串
name
返回材料的名称。
Setter:
setFormula(String formula, @Optional boolean withFormatting)
设置此材质的化学式和工具提示。
formula 化学式 字符串
@Optional withFormatting- 是否对公式和Tooltip应用数字格式(下标等)
addFlags(String[] names)
向此材质添加其他标志。
names- 要添加的标志字符串数组
setMaterialRGB(int materialRGB)
设置此材质的颜色。
materialRGB 要设置的RGB颜色。
例子:
#loader gregtech
import mods.gregtech.material.MaterialRegistry;
import mods.gregtech.material.Material;
var gold = MaterialRegistry.get("gold");
var name = gold.name; // "gold"
var color = gold.materialRGB; // 0xFFE650
gold.setFormula("(Au)2Au", true); //设置化学式
var formula = gold.getChemicalFormula(); // "(Au)2Au"
gold.addFlags("generate_long_rod", "generate_gear"); //添加金杆金齿轮。
加热线圈
添加一个新的方块加热线圈。
HeatingCoils.add(IBlockState state, String name, int temperature, int level, int discount, int tier, Material material)。
例子:
import mods.gregtech.blocks.HeatingCoils;
//使用Minecraft的泥土注册一个加热线圈。
// 1400开尔文(K)温度
// Level 2 (32 * 2 平行(?)多方块熔炉)
// Discount 4 (16 / 4 EU/t 烧制一个物品)
// Tier 3 ()用于热解炉和石油裂化机的 折扣 (?)
// Material null (用于泥土块在JEI里的名称。)
HeatingCoils.add(<blockstate:minecraft:dirt:variant=dirt,snowy=false>, "dirt", 1400, 2, 4, 3, null);
//使用橡木木板注册
//1900K温度
// Level 1 (32 * 1)
// Discount 2 (16/2 EU/t 每个物品)
// Tier 3 (热解炉与裂化塔)
// Material Silver (在JEI里的名称)
HeatingCoils.add(<blockstate:minecraft:planks:variant=oak>, "planks", 1900, 1, 2, 3, <material:silver>);
删除现有的加热线圈:
HeatingCoils.remove(IBlockState state)
例子:
import mods.gregtech.blocks.HeatingCoils;
//很容易会破坏基本MOD的进度,一定要有办法绕过这一个被删除的线圈!别让玩家卡关!
//删除白铜线圈方块。
HeatingCoils.remove(<blockstate:gregtech:wire_coil:variant=cupronickel,active=false>);
机器和RecipeMap
GTCEu 将所有配方存储在一个名为RecipeMap的东西中,可以添加或从中删除,要使用或检索RecipeMaps,您需要导入相应的包:
import mods.gregtech.recipe.RecipeMap.
RecipeMaps 使用名称定义,也使用名称检索。
例子:
import mods.gregtech.recipe.RecipeMap;
//首选方法
val alloy_smelter as RecipeMap = <recipemap:alloy_smelter>;
//替代方案
val alloy_smelter_alternate as RecipeMap = RecipeMap.getByName("alloy_smelter");
推荐将这些变量设置为全局变量Global,这样在所有的脚本中都可以使用。
GTCEu的RecipeMap列表:
机器名称 | RecipeMap名称 | 输入 | 输出 | 流体输入 | 流体输出 |
合金炉 | alloy_smelter | 1 - 2 | 1 | 0 | 0 |
电弧炉 | arc_furnace | 1 | 1 - 4 | 1 | 0 - 1 |
组装机 | assembler | 1 - 9 | 1 | 0 - 1 | 0 |
装配线 | assembly_line | 4 - 16 | 1 | 0 - 4 | 0 |
高压釜 | autoclave | 1 - 2 | 1 - 2 | 1 | 0 - 1 |
卷板机 | bender | 2 | 1 | 0 | 0 |
酿造室 | brewery | 1 | 0 | 1 | 1 |
装罐机 | canner | 1 - 2 | 1 - 2 | 0 - 1 | 0 - 1 |
离心机 | centrifuge | 0 - 2 | 0 - 6 | 0 - 1 | 0 - 6 |
化学浸洗器 | chemical_bath | 1 | 1 - 6 | 1 | 0 - 1 |
化学反应釜 | chemical_reactor | 0 - 2 | 0 - 2 | 0 - 3 | 0 - 2 |
电路组装机 | circuir_assembler | 1 - 6 | 1 | 0 - 1 | 0 |
焦炉 | coke_oven可乐炉 | 1 | 0 - 1 | 0 | 0 - 1 |
压缩机 | compressor | 1 | 1 | 0 | 0 |
石油裂化机 | cracker | 0 - 1 | 0 | 2 | 1 - 2 |
板材切割机 | cutter | 1 | 1 - 2 | 0 - 1 | 0 |
蒸馏塔 | distillation_tower | 0 | 0 - 1 | 1 | 1 - 12 |
蒸馏室 | distillery | 1 | 0 - 1 | 1 | 1 |
电力高炉 | electric_blast_furnace | 1 - 3 | 1 - 3 | 0 - 1 | 0 - 1 |
电炉 | electric_furnace | 1 | 1 | 0 | 0 |
电解机 | electrolyzer | 0 - 2 | 0 - 6 | 0 - 1 | 0 - 6 |
电磁选矿机 | electromagnetic_separator | 1 | 1 - 3 | ||
提取机 | extractor | 0 - 1 | 0 - 1 | 0 | 0 - 1 |
压模机 | extruder | 2 | 1 | 0 | 0 |
发酵槽 | fermenter | 0 - 1 | 0 - 1 | 1 | 1 |
流体加热器 | fluid_heater | 1 | 0 | 1 | 1 |
流体固化器 | fluid_solidifier | 1 | 1 | 1 | 0 |
锻造锤 | forge_hammer | 1 | 1 | 0 | 0 |
冲压机床 | forming_press | 2 - 6 | 1 | 0 | 0 |
核聚变反应堆 | fusion_reactor | 0 | 0 | 2 | 1 |
集气器 | gas_collector | 1 | 0 | 0 | 1 |
聚爆压缩机 | implosion_compressor | 2 - 3 | 1 - 2 | 0 | 0 |
大型化学反应釜 | large_chemical_reactor | 0 - 3 | 0 - 3 | 0 - 5 | 0 - 4 |
精密激光蚀刻机 | laser_engraver | 2 | 1 | 0 | 0 |
车床 | lathe | 1 | 1 - 2 | 0 | 0 |
研磨机 | macerator | 1 | 1 - 4 | 0 | 0 |
质量发生器 | mass_fabricator | 0 - 1 | 0 | 0 - 1 | 1 - 2 |
搅拌机 | mixer | 0 - 6 | 0 - 1 | 0 - 2 | 0 - 1 |
洗矿厂 | ore_washer | 1 - 2 | 1 - 3 | 0 - 1 | 0 |
打包机 | packer | 1 - 2 | 1 - 2 | 0 | 0 |
两级磁化机 | polarizer | 1 | 1 | 0 | 0 |
土高炉 | primitive_blast_furnace | 2 - 3 | 1 - 3 | 0 | 0 |
热解炉 | pyrolyse_oven | 2 | 0 - 1 | 0 - 1 | 1 |
复制机 | replicator | 1 | 0 - 1 | 1 - 2 | 0 - 1 |
碎岩机 | rock_breaker | 1 | 1 - 4 | 0 | 0 |
扫描仪 | scanner | 0 - 2 | 1 | 0 - 1 | 0 |
筛选器 | sifter | 1 | 0 - 6 | 0 | 0 |
热力离心机 | thermal_centrifuge | 1 | 1 - 3 | 0 | 0 |
真空冷冻机 | vacuum_freezer | 0 - 1 | 0 - 1 | 0 - 1 | 0 - 1 |
线材轧机 | wiremill | 1 | 1 | 0 | 0 |
发电机列表:
发电机名称 | RecipeMap名称 | 输入 | 输出 | 流体输入 | 流体输出 |
燃烧发电机 | combustion_generator | 0 | 0 | 1 | 0 |
燃气轮机 | gas_tubrine | 0 | 0 | 1 | 0 |
等离子体发动机 | plasma_generator | 0 | 0 | 1 | 0 - 1 |
半流质发电机 | semi_fluid_generator | 0 | 0 | 1 | 0 |
蒸汽涡轮机 | stem_tubrine | 0 | 0 | 1 | 0 - 1 |
GTCEu添加的新机器:
Fusion Reactor :核聚变反应堆
Large Chemical Reactor :大型化学反应釜
Assembly Line :装配线
Circuit Assembler :电路组装机
Mass Fabricator :质量发生器
Replicator :复制机
Scanner :扫描仪
Gas Conllector :集气器
Rock Breaker :碎岩机
CEu删掉的机器:
微波炉:已经被CEu移除,但是由GregTech Food OptionCEu版重新添加并添加了一些新功能。
流体灌装机:现在与灌装机合并。
流体提取机:现在与提取机合并。
等离子体电弧炉:现在与电弧炉合并。
uu增幅液生成器:以前未完成,现在已移除。
热力发电机:以前未完成,现在已移除。
RecipeBuilder
RecipeBuilders 是为机器创建RecipeMap的功能,它与 CEu 的新 Material Builder 系统非常相似。
对于过去使用过 GTCE 的 RecipeBuilders 的人:PBF土高炉和焦炉不再是特殊情况,现在使用普通RecipeBuilder语法。
Get了RecipeMap的实例后,你可以使用它们的构建器来构建配方,它有点像Java的Stream<T>,具有配置配方的完整功能。
启动构建器:
my_recipeMap_variable.recipeBuilder();
//示例
<recipemap:assembler>.recipeBuilder();
这个构建器只负责做一个开头,需要其他的Setter调用才能有用。
RecipeBuilder所有调用和Setter
物品输入:
//物品输入,使用IIngredient
.inputs(IIngredient[])
//示例
.inputs(<minecraft:iron_ingot>)
.inputs(<minecraft:iron_ingot>, <ore:dustGold> * 2, <metaitem:plateTitanium>)
.inputs([<minecraft:iron_ingot>, <ore:dustGold>, <metaitem:plateTitanium> * 64])
流体输入:
//流体输入,需要的是ILiquidStack
.fluidInputs(ILiquidStack[])
//示例
.fluidInputs(<liquid:water>)
.fluidInputs(<liquid:water>, <liquid:brass> * 1296)
.fluidInputs([<liquid:water> * 288, <liquid:brass>])
物品输出:
//物品输出,只能用IItemStack
.outputs(IItemStack[])
//示例
.outputs(<minecraft:iron_ingot>)
.outputs(<minecraft:iron_ingot>, <metaitem:plateTitanium>)
.outputs([<minecraft:iron_ingot>, <metaitem:plateTitanium> * 64])
流体输出:
// ILiquidStack
.fluidOutputs(ILiquidStack[])
//示例
.fluidOutputs(<liquid:water>)
.fluidOutputs(<liquid:water>, <liquid:brass> * 1296)
.fluidOutputs([<liquid:water> * 288, <liquid:brass>])
概率物品输出:
//IItemStack 输出物品, int 基础概率, int 每级增加概率。10000就是100%,1就是0.01%。
.chancedOutput(IItemStack, 0-10000, 0-10000)
//示例
//100就是1%的基础几率,然后每一级增加0.5%
.chancedOutput(<minecraft:diamond>, 100, 50)
此方法只能用单一的IItemStack,并且会计入RecipeMap总输出量内,两个几率都可以写0,但是不要同时写。同时写就是根本没机会输出为什么要写
编程电路:
//编程电路的数字, 只有从0到32
.circuit(int)
//示例
.circuit(10)
向配方添加编程电路,需要一个int来确定编程电路的数字,从0-32。
使用此方法,配置电路会自动添加为不消耗的输入,它计入项目输入总数量,也就是机器输入的限定数量。
这也可以使用property来执行,但这种方法更简单,更易于使用。
不消耗物品的输入:
//工作于.inputs(),但是这个物品不被Recipe消耗
.notConsumable(IIngredient[])
//示例
.notConsumable(<ore:dustChrome>)
.notConsumable(<ore:dustChrome>, <minecraft:clay>)
它被记入机器输入总数量。
不消耗的流体:
//工作于.fluidInputs(),但是此流体不消耗
.notConsumable(ILiquidStack[])
//示例
.notConsumable(<liquid:aluminium> * 144)
.notConsumable(<liquid:aluminium> * 144, <liquid:water>)
记入流体输入总量。
能源使用:
//每Tick的EU输入
.EUt(int)
//示例
.EUt(512)
此方法设置配方的每个tick的 EU 使用量。
配方时间:
//int 时间,单位tick
.duration(int)
//示例
.duration(60)
此方法设置配方时间。
隐藏配方:
.hidden()
使用此方法会使此配方不会在JEI内出现。
构建并注册:
.buildAndRegister()
此方法放在最后使用,结束这个RecipeBuilder。
例子:
import mods.gregtech.recipe.RecipeMap;
//酿造室
val brewer as RecipeMap = <recipemap:brewery>;
brewer.recipeBuilder()
.inputs(<ore:ingotWroughtIron>)
.fluidInputs([<liquid:oxygen> * 500])
.outputs(<ore:ingotSteel>.firstItem)
.duration(40)
.EUt(120)
.buildAndRegister();
RecipeProperty配方属性
配方属性是一些配方具有的附加属性,允许您指定附加值。
将属性应用于配方:
.property(String name, Object value)
name指的是需要添加的属性的名称,Object value则是这个对象属性的值,例如高炉温度对应值int。
可用属性:
名称 | 值 | 描述 |
circuit | int number | 刚刚提到的向配方添加编程电路,不推荐使用这个。 |
dimension | int dimensionID | 集气器使用,配置此配方在哪个维度可用。 |
eu_to_start | int eu | 启动核聚变反应堆的启动EU。 |
explosives | IItemStack/int amount | 此配置有两个可用值,一是IItemStack,用于给此配方设置一个特殊的炸药;二是int,代表的是炸药输入量。 |
temperature | int temperature |
属性示例:
import mods.gregtech.recipe.RecipeMap;
// Electric Blast Furnace
val blast_furnace as RecipeMap = <recipemap:electric_blast_furnace>;
blast_furnace.recipeBuilder()
.inputs(<ore:ingotWroughtIron>)
.fluidInputs([<liquid:oxygen> * 500])
.outputs(<ore:ingotTitanium>.firstItem)
.property("temperature", 1000)
.duration(40)
.EUt(120)
.buildAndRegister();
检索和删除
检索和删除都通过RecipeMap本身使用。
例子:
val compressor as RecipeMap = <recipemap:compressor>;
// findRecipe(long 实际电压量, IItemStack[] inputs, ILiquidStack[] fluidInputs)
compressor.findRecipe(2, [<minecraft:redstone>], null)
//最后添加一个.remove()调用即可删除,如果不添加则会获取此配方
请注意,必须要传入正确的RecipeMap,不然CrT回抛出一个错误。
删除和添加发电机RecipeMap
例子:
<recipemap:semi_fluid_generator>.recipeBuilder()
.fluidInputs(<lliquid:lava> * 16) //流体输入
.duration(2) //时间
.EUt(32) //产能,也按找eu/tick输出
.buildAndRegister(); //构建
至于Wiki中没有提到删除的具体方法,大概和上面的findRecipe相同使用。
终端与CrT
接口:
registerDevice(deviceItemStack, deviceName)
注册自定义设备。
createAppRegistryBuilder(appName)
根据应用名称创建registryBuilder。
isDefaultApp(default)
将其设为默认应用。
battery(euTier, cost)
设置所有等级的电池要求。
battery(appTier, euTier, cost)
设置特定等级的电池要求。
device(deviceName...)
设置所有等级的设备要求。(默认可用:"scanner", "wireless", "camera", "solar_lv")
device(appTier, device...)
设置特定等级的设备要求。
upgrade(upgradeItemStack...)
为所有等级设置升级要求。
upgrade(appTier, upgradeItemStack...)
设置特定等级的升级要求。
build()
完成并注册。
例子:
import mods.gregtech.TerminalRegistry;
TerminalRegistry.registerDevice(<ore:ingotIron>.firstItem, "ingot_iron");
TerminalRegistry.createAppRegistryBuilder("ore_prospector")
.isDefaultApp(true)
.battery(1, 500)
.battery(3, 3, 1000)
.device("camera", "wireless")
.device(4, "ingot_iron")
.upgrade(<minecraft:apple> * 9)
.upgrade(2, <minecraft:apple> * 9, <minecraft:grass> * 12)
.build();
游戏内演示:
自定义设备
电池,设备和升级
第二篇就到这里了,如果对你有帮助的话,可以点点推荐吗?(不要脸)