summaryrefslogtreecommitdiff
path: root/config/gregtech/terminal/guide/tutorials
diff options
context:
space:
mode:
authorDrNuget <drnuget@outlook.com>2024-09-01 02:09:01 +0300
committerDrNuget <drnuget@outlook.com>2024-09-01 02:09:01 +0300
commita803b2a49c8419f4999629f989ba0649a4f57d4d (patch)
tree280b816ee6afc8cecd4855cc0b33424f198e6b96 /config/gregtech/terminal/guide/tutorials
parent58b8c20b9aefe1bf1ec4c00b9f3217d770e8e525 (diff)
modify gregtech configs
Diffstat (limited to 'config/gregtech/terminal/guide/tutorials')
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/01_definition.json49
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/02_element.json78
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/03_flag.json148
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/04_icon_set.json59
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/05_create.json257
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/06_modify.json81
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/terminal/ct_terminal_01.json107
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_0_guidepage.json148
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_1_widget.json304
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_2_textbox.json256
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_3_image.json207
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/important_concepts/machine_grid.json6
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/multiblocks/forming_multiblocks.json13
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/multiblocks/large_turbine_mechanics.json13
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/multiblocks/multibock_troubleshooting.json13
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/resource_pack/emissive_texture.json135
-rw-r--r--config/gregtech/terminal/guide/tutorials/en_us/terminal/terminal_hardware.json223
-rw-r--r--config/gregtech/terminal/guide/tutorials/zh_cn/crafttweaker/terminal/ct_terminal_01.json107
-rw-r--r--config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_0_guidepage.json148
-rw-r--r--config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_1_widget.json304
-rw-r--r--config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_2_textbox.json256
-rw-r--r--config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_3_image.json207
-rw-r--r--config/gregtech/terminal/guide/tutorials/zh_cn/resource_pack/emissive_texture.json1
-rw-r--r--config/gregtech/terminal/guide/tutorials/zh_cn/terminal/terminal_hardware.json1
24 files changed, 3121 insertions, 0 deletions
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/01_definition.json b/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/01_definition.json
new file mode 100644
index 0000000..b319e88
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/01_definition.json
@@ -0,0 +1,49 @@
+{
+ "section": "CraftTweaker/Material",
+ "title": "Material Definition",
+ "stream": [
+ {
+ "type": "textbox",
+ "fontSize": 11,
+ "fontColor": -65536,
+ "content": [
+ "§lFirstly, you should know what is the Material."
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "Material is the basis of CEu. It defines to a substance and its properties. It usually takes the form of an §lelement§r or a §lchemical§r, but it can also take the form of something weird like the §lEnder Eye§r."
+ ]
+ },
+ {
+ "type": "textbox",
+ "fontSize": 11,
+ "fontColor": -16776961,
+ "content": [
+ "§lSecondly, it defines which properties?"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "The §lmaterial§r specifies whether it has a §lfluid§r state, §lplasma§r state, §ldust§r state, etc. When it has a specific state, the CEu will register the corresponding item or fluid automatically."
+ ]
+ },
+ {
+ "type": "textbox",
+ "fontSize": 11,
+ "fontColor": -16731136,
+ "content": [
+ "§lThirdly, What else does it define?"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "You can actually define its colors, flag, iconSet, cableProperties, Element, formula, components and so on. Don\u0027t worry, they are not complicated, will be introduced in other pages."
+ ]
+ }
+ ],
+ "fixed": []
+} \ No newline at end of file
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/02_element.json b/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/02_element.json
new file mode 100644
index 0000000..22f3b6a
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/02_element.json
@@ -0,0 +1,78 @@
+{
+ "section": "CraftTweaker/Material",
+ "title": "Element",
+ "stream": [
+ {
+ "type": "textbox",
+ "fontSize": 9,
+ "content": [
+ "The §lElement§r use to specify a material as an elemental and affects its chemical fomular. CEu basically has the periodic table, so you probably won\u0027t need it. \n\n§lContents:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "element",
+ "content": [
+ "1. §9Element"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "ct",
+ "content": [
+ "2. §9CT"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "element",
+ "content": [
+ "§c§lElement:§r\n §l○ §nprotons§r – Amount of Protons\n §l○ §nneutrons§r – Amount of Neutrons (I could have made mistakes with the Neutron amount calculation, please tell me if I did something wrong)\n §l○ §nhalfLifeSeconds§r – Amount of Half Life this Material has in Seconds. -1 for stable Materials\n §l○ §ndecayTo§r – String representing the Elements it decays to. Separated by an \u0027\u0026\u0027 Character\n §l○ §nname§r – Name of the Element\n §l○ §nsymbol§r – Symbol of the Element"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§lExisting elements:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "stroke": 1623820032,
+ "stroke_width": 3,
+ "fill": 1623820032,
+ "content": [
+ " §l○ §c§lH§r: 1, 0, -1, null, \"Hydrogen\", \"H\", false\n §l○ §c§lD§r: 1, 1, -1, \"H\", \"Deuterium\", \"D\", true\n §l○ §c§lT§r: 1, 2, -1, \"D\", \"Tritium\", \"T\", true\n §l○ §c§lHe§r: 2, 2, -1, null, \"Helium\", \"He\", false\n §l○ §c§lHe3§r: 2, 1, -1, \"H\u0026D\", \"Helium-3\", \"He-3\", true\n §l○ §c§lLi§r: 3, 4, -1, null, \"Lithium\", \"Li\", false\n §l○ §c§lBe§r: 4, 5, -1, null, \"Beryllium\", \"Be\", false\n §l○ §c§lB§r: 5, 5, -1, null, \"Boron\", \"B\", false\n §l○ §c§lC§r: 6, 6, -1, null, \"Carbon\", \"C\", false\n §l○ §c§lN§r: 7, 7, -1, null, \"Nitrogen\", \"N\", false\n §l○ §c§lO§r: 8, 8, -1, null, \"Oxygen\", \"O\", false\n §l○ §c§lF§r: 9, 9, -1, null, \"Fluorine\", \"F\", false\n §l○ §c§lNe§r: 10, 10, -1, null, \"Neon\", \"Ne\", false\n §l○ §c§lNa§r: 11, 11, -1, null, \"Sodium\", \"Na\", false\n §l○ §c§lMg§r: 12, 12, -1, null, \"Magnesium\", \"Mg\", false\n §l○ §c§lAl§r: 13, 13, -1, null, \"Aluminium\", \"Al\", false\n §l○ §c§lSi§r: 14, 14, -1, null, \"Silicon\", \"Si\", false\n §l○ §c§lP§r: 15, 15, -1, null, \"Phosphorus\", \"P\", false\n §l○ §c§lS§r: 16, 16, -1, null, \"Sulfur\", \"S\", false\n §l○ §c§lCl§r: 17, 18, -1, null, \"Chlorine\", \"Cl\", false\n §l○ §c§lAr§r: 18, 22, -1, null, \"Argon\", \"Ar\", false\n §l○ §c§lK§r: 19, 20, -1, null, \"Potassium\", \"K\", false\n §l○ §c§lCa§r: 20, 20, -1, null, \"Calcium\", \"Ca\", false\n §l○ §c§lSc§r: 21, 24, -1, null, \"Scandium\", \"Sc\", false\n §l○ §c§lTi§r: 22, 26, -1, null, \"Titanium\", \"Ti\", false\n §l○ §c§lV§r: 23, 28, -1, null, \"Vanadium\", \"V\", false\n §l○ §c§lCr§r: 24, 28, -1, null, \"Chrome\", \"Cr\", false\n §l○ §c§lMn§r: 25, 30, -1, null, \"Manganese\", \"Mn\", false\n §l○ §c§lFe§r: 26, 30, -1, null, \"Iron\", \"Fe\", false\n §l○ §c§lCo§r: 27, 32, -1, null, \"Cobalt\", \"Co\", false\n §l○ §c§lNi§r: 28, 30, -1, null, \"Nickel\", \"Ni\", false\n §l○ §c§lCu§r: 29, 34, -1, null, \"Copper\", \"Cu\", false\n §l○ §c§lZn§r: 30, 35, -1, null, \"Zinc\", \"Zn\", false\n §l○ §c§lGa§r: 31, 39, -1, null, \"Gallium\", \"Ga\", false\n §l○ §c§lGe§r: 32, 40, -1, null, \"Germanium\", \"Ge\", false\n §l○ §c§lAs§r: 33, 42, -1, null, \"Arsenic\", \"As\", false\n §l○ §c§lSe§r: 34, 45, -1, null, \"Selenium\", \"Se\", false\n §l○ §c§lBr§r: 35, 45, -1, null, \"Bromine\", \"Br\", false\n §l○ §c§lKr§r: 36, 48, -1, null, \"Krypton\", \"Kr\", false\n §l○ §c§lRb§r: 37, 48, -1, null, \"Rubidium\", \"Rb\", false\n §l○ §c§lSr§r: 38, 49, -1, null, \"Strontium\", \"Sr\", false\n §l○ §c§lY§r: 39, 50, -1, null, \"Yttrium\", \"Y\", false\n §l○ §c§lZr§r: 40, 51, -1, null, \"Zirconium\", \"Zr\", false\n §l○ §c§lNb§r: 41, 53, -1, null, \"Niobium\", \"Nb\", false\n §l○ §c§lMo§r: 42, 53, -1, null, \"Molybdenum\", \"Mo\", false\n §l○ §c§lTc§r: 43, 55, -1, null, \"Technetium\", \"Tc\", false\n §l○ §c§lRu§r: 44, 57, -1, null, \"Ruthenium\", \"Ru\", false\n §l○ §c§lRh§r: 45, 58, -1, null, \"Rhodium\", \"Rh\", false\n §l○ §c§lPd§r: 46, 60, -1, null, \"Palladium\", \"Pd\", false\n §l○ §c§lAg§r: 47, 60, -1, null, \"Silver\", \"Ag\", false\n §l○ §c§lCd§r: 48, 64, -1, null, \"Cadmium\", \"Cd\", false\n §l○ §c§lIn§r: 49, 65, -1, null, \"Indium\", \"In\", false\n §l○ §c§lSn§r: 50, 68, -1, null, \"Tin\", \"Sn\", false\n §l○ §c§lSb§r: 51, 70, -1, null, \"Antimony\", \"Sb\", false\n §l○ §c§lTe§r: 52, 75, -1, null, \"Tellurium\", \"Te\", false\n §l○ §c§lI§r: 53, 74, -1, null, \"Iodine\", \"I\", false\n §l○ §c§lXe§r: 54, 77, -1, null, \"Xenon\", \"Xe\", false\n §l○ §c§lCs§r: 55, 77, -1, null, \"Caesium\", \"Cs\", false\n §l○ §c§lBa§r: 56, 81, -1, null, \"Barium\", \"Ba\", false\n §l○ §c§lLa§r: 57, 81, -1, null, \"Lanthanum\", \"La\", false\n §l○ §c§lCe§r: 58, 82, -1, null, \"Cerium\", \"Ce\", false\n §l○ §c§lPr§r: 59, 81, -1, null, \"Praseodymium\", \"Pr\", false\n §l○ §c§lNd§r: 60, 84, -1, null, \"Neodymium\", \"Nd\", false\n §l○ §c§lPm§r: 61, 83, -1, null, \"Promethium\", \"Pm\", false\n §l○ §c§lSm§r: 62, 88, -1, null, \"Samarium\", \"Sm\", false\n §l○ §c§lEu§r: 63, 88, -1, null, \"Europium\", \"Eu\", false\n §l○ §c§lGd§r: 64, 93, -1, null, \"Gadolinium\", \"Gd\", false\n §l○ §c§lTb§r: 65, 93, -1, null, \"Terbium\", \"Tb\", false\n §l○ §c§lDy§r: 66, 96, -1, null, \"Dysprosium\", \"Dy\", false\n §l○ §c§lHo§r: 67, 97, -1, null, \"Holmium\", \"Ho\", false\n §l○ §c§lEr§r: 68, 99, -1, null, \"Erbium\", \"Er\", false\n §l○ §c§lTm§r: 69, 99, -1, null, \"Thulium\", \"Tm\", false\n §l○ §c§lYb§r: 70, 103, -1, null, \"Ytterbium\", \"Yb\", false\n §l○ §c§lLu§r: 71, 103, -1, null, \"Lutetium\", \"Lu\", false\n §l○ §c§lHf§r: 72, 106, -1, null, \"Hafnium\", \"Hf\", false\n §l○ §c§lTa§r: 73, 107, -1, null, \"Tantalum\", \"Ta\", false\n §l○ §c§lW§r: 74, 109, -1, null, \"Tungsten\", \"W\", false\n §l○ §c§lRe§r: 75, 111, -1, null, \"Rhenium\", \"Re\", false\n §l○ §c§lOs§r: 76, 114, -1, null, \"Osmium\", \"Os\", false\n §l○ §c§lIr§r: 77, 115, -1, null, \"Iridium\", \"Ir\", false\n §l○ §c§lPt§r: 78, 117, -1, null, \"Platinum\", \"Pt\", false\n §l○ §c§lAu§r: 79, 117, -1, null, \"Gold\", \"Au\", false\n §l○ §c§lHg§r: 80, 120, -1, null, \"Mercury\", \"Hg\", false\n §l○ §c§lTl§r: 81, 123, -1, null, \"Thallium\", \"Tl\", false\n §l○ §c§lPb§r: 82, 125, -1, null, \"Lead\", \"Pb\", false\n §l○ §c§lBi§r: 83, 125, -1, null, \"Bismuth\", \"Bi\", false\n §l○ §c§lPo§r: 84, 124, -1, null, \"Polonium\", \"Po\", false\n §l○ §c§lAt§r: 85, 124, -1, null, \"Astatine\", \"At\", false\n §l○ §c§lRn§r: 86, 134, -1, null, \"Radon\", \"Rn\", false\n §l○ §c§lFr§r: 87, 134, -1, null, \"Francium\", \"Fr\", false\n §l○ §c§lRa§r: 88, 136, -1, null, \"Radium\", \"Ra\", false\n §l○ §c§lAc§r: 89, 136, -1, null, \"Actinium\", \"Ac\", false\n §l○ §c§lTh§r: 90, 140, -1, null, \"Thorium\", \"Th\", false\n §l○ §c§lPa§r: 91, 138, -1, null, \"Protactinium\", \"Pa\", false\n §l○ §c§lU§r: 92, 146, -1, null, \"Uranium\", \"U\", false\n §l○ §c§lU238§r: 92, 146, -1, null, \"Uranium-238\", \"U-238\", false\n §l○ §c§lU235§r: 92, 143, -1, null, \"Uranium-235\", \"U-235\", true\n §l○ §c§lNp§r: 93, 144, -1, null, \"Neptunium\", \"Np\", false\n §l○ §c§lPu§r: 94, 152, -1, null, \"Plutonium\", \"Pu\", false\n §l○ §c§lPu239§r: 94, 145, -1, null, \"Plutonium-239\", \"Pu-239\", false\n §l○ §c§lPu241§r: 94, 149, -1, null, \"Plutonium-241\", \"Pu-241\", true\n §l○ §c§lAm§r: 95, 150, -1, null, \"Americium\", \"Am\", false\n §l○ §c§lCm§r: 96, 153, -1, null, \"Curium\", \"Cm\", false\n §l○ §c§lBk§r: 97, 152, -1, null, \"Berkelium\", \"Bk\", false\n §l○ §c§lCf§r: 98, 153, -1, null, \"Californium\", \"Cf\", false\n §l○ §c§lEs§r: 99, 153, -1, null, \"Einsteinium\", \"Es\", false\n §l○ §c§lFm§r: 100, 157, -1, null, \"Fermium\", \"Fm\", false\n §l○ §c§lMd§r: 101, 157, -1, null, \"Mendelevium\", \"Md\", false\n §l○ §c§lNo§r: 102, 157, -1, null, \"Nobelium\", \"No\", false\n §l○ §c§lLr§r: 103, 159, -1, null, \"Lawrencium\", \"Lr\", false\n §l○ §c§lRf§r: 104, 161, -1, null, \"Rutherfordium\", \"Rf\", false\n §l○ §c§lDb§r: 105, 163, -1, null, \"Dubnium\", \"Db\", false\n §l○ §c§lSg§r: 106, 165, -1, null, \"Seaborgium\", \"Sg\", false\n §l○ §c§lBh§r: 107, 163, -1, null, \"Bohrium\", \"Bh\", false\n §l○ §c§lHs§r: 108, 169, -1, null, \"Hassium\", \"Hs\", false\n §l○ §c§lMt§r: 109, 167, -1, null, \"Meitnerium\", \"Mt\", false\n §l○ §c§lDs§r: 110, 171, -1, null, \"Darmstadtium\", \"Ds\", false\n §l○ §c§lRg§r: 111, 169, -1, null, \"Roentgenium\", \"Rg\", false\n §l○ §c§lCn§r: 112, 173, -1, null, \"Copernicium\", \"Cn\", false\n §l○ §c§lNh§r: 113, 171, -1, null, \"Nihonium\", \"Nh\", false\n §l○ §c§lFl§r: 114, 175, -1, null, \"Flerovium\", \"Fl\", false\n §l○ §c§lMc§r: 115, 173, -1, null, \"Moscovium\", \"Mc\", false\n §l○ §c§lLv§r: 116, 177, -1, null, \"Livermorium\", \"Lv\", false\n §l○ §c§lTs§r: 117, 177, -1, null, \"Tennessine\", \"Ts\", false\n §l○ §c§lOg§r: 118, 176, -1, null, \"Oganesson\", \"Og\", false\n §l○ §c§lTr§r: 119, 178, -1, null, \"Tritanium\", \"Tr\", false\n §l○ §c§lDr§r: 120, 180, -1, null, \"Duranium\", \"Dr\", false\n §l○ §c§lKe§r: 125, 198, -1, null, \"Trinium\", \"Ke\", false\n §l○ §c§lNq§r: 174, 352, 140, null, \"Naquadah\", \"Nq\", true\n §l○ §c§lNq1§r: 174, 354, 140, null, \"NaquadahEnriched\", \"Nq+\", true\n §l○ §c§lNq2§r: 174, 348, 140, null, \"Naquadria\", \"*Nq*\", true\n §l○ §c§lNt§r: 0, 1000, -1, null, \"Neutronium\", \"Nt\", false\n §l○ §c§lAd§r: 750, 1000, -1, null, \"Adamantium\", \"Ad\", false\n §l○ §c§lVb§r: 850, 900, -1, null, \"Vibranium\", \"Vb\", false\n §l○ §c§lTn§r: 550, 670, -1, null, \"Taranium\", \"Tn\", false"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "ct",
+ "content": [
+ "§lElements.add§r: §o§nElements.add(long protons, long neutrons, long halfLifeSeconds, String decayTo, String name, String symbol, boolean isIsotope)§r \nAdd a new element.\n\n§lElements.get§r: §o§nElements.get(String name)§r \nGet the element by name."
+ ]
+ },
+ {
+ "type": "textbox",
+ "stroke": 687800320,
+ "stroke_width": 3,
+ "fill": 687800320,
+ "content": [
+ "§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0MaterialBuilder§r§5;§r§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0Material§r§5;§r§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0Elements§r§5;§r§5\n§r§5\n§r§9var§r§5 §r§0Au§r§5 §r§5\u003d§r§5 §r§0Elements§r§5.§r§0get§r§5(§r§0Au§r§5)§r§5;§r§5 §r§8// get an existing element.§r§5\n§r§9var§r§5 §r§0name§r§5 §r§5\u003d§r§5 §r§0Au§r§5.§r§0name§r§5;§r§5 §r§8// \"Gold\"§r§5\n§r§9var§r§5 §r§0symbol§r§5 §r§5\u003d§r§5 §r§0Au§r§5.§r§0symbol§r§5;§r§5 §r§8// \"Au\"§r§5\n§r§9var§r§5 §r§0protons§r§5 §r§5\u003d§r§5 §r§0Au§r§5.§r§0protons§r§5 §r§8// 79§r§5\n§r§9var§r§5 §r§0neutrons§r§5 §r§5\u003d§r§5 §r§0Au§r§5.§r§0neutrons§r§8// 117§r§5\n§r§9var§r§5 §r§0mass§r§5 §r§5\u003d§r§5 §r§0Au§r§5.§r§0mass§r§5 §r§8// 196§r§5\n§r§5\n§r§9var§r§5 §r§0CEu§r§5 §r§5\u003d§r§5 §r§0Elements§r§5.§r§0add§r§5(§r§c999§r§5,§r§5 §r§c999§r§5,§r§5 §r§5-§r§c1§r§5,§r§5 §r§cnull§r§5,§r§5 §r§2\"GTCEu\"§r§5,§r§5 §r§2\"CEu\"§r§5,§r§5 §r§cfalse§r§5)§r§5;§r§5 §r§8// create a new element.§r§5\n§r§5\n§r§9var§r§5 §r§0myMaterial§r§5 §r§5\u003d§r§5 §r§0MaterialBuilder§r§5(§r§2\"my_material\"§r§5)§r§5.§r§0element§r§5(§r§2\"CEu\"§r§5)§r§5.§r§0build§r§5(§r§5)§r§5;§r§5 §r§8// register my element.§r§5\n§r"
+ ]
+ }
+ ],
+ "fixed": []
+} \ No newline at end of file
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/03_flag.json b/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/03_flag.json
new file mode 100644
index 0000000..e739ce1
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/03_flag.json
@@ -0,0 +1,148 @@
+{
+ "section": "CraftTweaker/Material",
+ "title": "MaterialFlag",
+ "stream": [
+ {
+ "type": "textbox",
+ "fontSize": 9,
+ "content": [
+ "The §lMaterialFlag§r refers to some additional features it has.\n\nAvailable MaterialFlag are: "
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "element",
+ "content": [
+ "§r§4§ogeneric:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ " §l○ §n\"no_unification\"§r: Add to material to disable it\u0027s unification fully todo implement.\n §l○ §n\"decomposition_requires_hydrogen\"§r: Decomposition recipe requires hydrogen as additional input. Amount is equal to input amount.\n §l○ §n\"decomposition_by_electrolyzing\"§r: Enables electrolyzer decomposition recipe generation.\n §l○ §n\"decomposition_by_centrifuging\"§r: Enables centrifuge decomposition recipe generatio.\n §l○ §n\"disable_decomposition\"§r: Disables decomposition recipe generation for this material and all materials that has it as component.\n §l○ §n\"explosive\"§r: Add to material if it is some kind of explosive.\n §l○ §n\"flammable\"§r: Add to material if it is some kind of flammable."
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "ct",
+ "content": [
+ "§4§oGenerate a plate for this material If it\u0027s dust material, dust compressor recipe into plate will be generated If it\u0027s metal material, bending machine recipes will be generated If block is found, cutting machine recipe will be also generated:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§n\"generate_plate\"§r, §n\"generate_rod\"§r, §n\"generate_frame\"§r, §n\"generate_gear\"§r, §n\"generate_long_rod\"§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§4§oThis will prevent material from creating Shapeless recipes for dust to block and vice versa Also preventing extruding and alloy smelting recipes via SHAPE_EXTRUDING/MOLD_BLOCK:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§n\"exclude_block_crafting_recipes\"§r, §n\"exclude_plate_compressor_recipe\"§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§4§oThis will prevent material from creating Shapeless recipes for dust to block and vice versa:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§n\"exclude_block_crafting_by_hand_recipes\"§r, §n\"mortar_grindable\"§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§4§oAdd to material if it cannot be worked by any other means, than smashing or smelting. This is used for coated Materials:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§n\"no_working\"§r, §n\"no_smashing\"§r, §n\"no_smelting\"§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§4§oAdd this to your Material if you want to have its Ore Calcite heated in a Blast Furnace for more output. Already listed are: Iron, Pyrite, PigIron, WroughtIron:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§n\"blast_furnace_calcite_double\"§r, §n\"blast_furnace_calcite_triple\"§r, §n\"generate_foil\"§r, §n\"generate_bolt_screw\"§r, §n\"generate_ring\"§r, §n\"generate_spring\"§r, §n\"generate_spring_small\"§r, §n\"generate_small_gear\"§r, §n\"generate_fine_wire\"§r, §n\"generate_rotor\"§r, §n\"generate_dense\"§r, §n\"generate_round\"§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§4§oIf this material can be crystallized:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§n\"crystallizable\"§r, §n\"generate_lens\"§r, §n\"high_sifter_output\"§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ }
+ ],
+ "fixed": []
+} \ No newline at end of file
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/04_icon_set.json b/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/04_icon_set.json
new file mode 100644
index 0000000..f0749c2
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/04_icon_set.json
@@ -0,0 +1,59 @@
+{
+ "section": "CraftTweaker/Material",
+ "title": "MaterialIconSet",
+ "stream": [
+ {
+ "type": "textbox",
+ "fontSize": 9,
+ "content": [
+ "The §lMaterialIconSet§r will determine the appearance of the material."
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "element",
+ "content": [
+ "§rAvailable MaterialIconSet are:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§l\"NONE\", \"METALLIC\", \"DULL\", \"MAGNETIC\", \"QUARTZ\", \"DIAMOND\", \"EMERALD\", \"SHINY\", \"ROUGH\", \"FINE\", \"SAND\", \"FLINT\", \"RUBY\", \"LAPIS\", \"FLUID\", \"GAS\", \"LIGNITE\", \"OPAL\", \"GLASS\", \"WOOD\", \"GEM_HORIZONTAL\", \"GEM_VERTICAL\", \"PAPER\", \"NETHERSTAR\", \"BRIGHT\"§r."
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "ct",
+ "content": [
+ "For example, the following figure shows the appearance of ores with different Materialiconsets."
+ ]
+ },
+ {
+ "type": "image",
+ "form": "url",
+ "source": "https://user-images.githubusercontent.com/18493855/143435701-058dcfea-ea35-4976-a7ba-7901fa791e36.png",
+ "width": 190,
+ "height": 100
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ }
+ ],
+ "fixed": []
+} \ No newline at end of file
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/05_create.json b/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/05_create.json
new file mode 100644
index 0000000..feaa04e
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/05_create.json
@@ -0,0 +1,257 @@
+{
+ "section": "CraftTweaker/Material",
+ "title": "Create a Material",
+ "stream": [
+ {
+ "type": "textbox",
+ "fontSize": 9,
+ "content": [
+ "You can help create a Material by the §lMaterialBuilder§r.\n\n§lContents:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "bui",
+ "content": [
+ "1. §9MaterialBuilder"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "pro",
+ "content": [
+ "2. §9Material Properties"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "ico",
+ "content": [
+ "3. §9Material IconSet"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "com",
+ "content": [
+ "4. §9Material Component"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "fla",
+ "content": [
+ "5. §9Material Flag"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "ele",
+ "content": [
+ "6§r. §9Material Element"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§lMaterialBuilder"
+ ],
+ "ref": "bui"
+ },
+ {
+ "type": "textbox",
+ "ref": "element",
+ "content": [
+ "§o§nMaterialBuilder(String materialName)§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "stroke": 687800320,
+ "stroke_width": 3,
+ "fill": 687800320,
+ "content": [
+ "§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0MaterialBuilder§r§5;§r§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0Material§r§5;§r§5\n§r§5\n§r§9var§r§5 §r§0myMaterial§r§5 §r§5\u003d§r§5 §r§0MaterialBuilder§r§5(§r§2\"my_material\"§r§5)§r§5.§r§0build§r§5(§r§5)§r§5;§r§5\n"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "pro",
+ "content": [
+ "§lMaterial Properties"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§lcolor§r: §o§ncolor(int color)§r\nSet the Color of this Material. Defaults to 0xFFFFFF unless §ncolorAverage()§r.\n\n§lcolorAverage§r: §o§ncolorAverage(int color)§r\nColor will be a weighted average of the components of the Material.\n\n§lFluid§r: §o§nfluid(@Optional String type, @Optional boolean hasBlock)§r\nAdd a FluidProperty to this Material.\n §l○§r type – The Material.FluidType of this Material, either \"fluid\" or \"gas\".\n §l○§r hasBlock – If true, create a Fluid Block for this Material.\n\n§lplasma§r: §o§nplasma()§r \nAdd a PlasmaProperty to this Material.\n §l○§r type – The Material.FluidType of this Material, either \"fluid\" or \"gas\".\n §l○§r hasBlock – If true, create a Fluid Block for this Material.\n\n§ldust§r: §o§ndust(@Optional int harvestLevel, @Optional int burnTime)§r \nAdd a DustProperty to this Material.\n §l○§r harvestLevel – The Harvest Level of this block for Mining. If this Material also has a ToolProperty, this value will also be used to determine the tool\u0027s Mining Level.\n §l○§r burnTime – The Burn Time (in ticks) of this Material as a Furnace Fuel.\n\n§lingot§r: §o§ningot(@Optional int harvestLevel, @Optional int burnTime)§r \nAdd an IngotProperty to this Material.\n §l○§r harvestLevel – The Harvest Level of this block for Mining. If this Material also has a ToolProperty, this value will also be used to determine the tool\u0027s Mining level. If this Material already had a Harvest Level defined, it will be overridden.\n §l○§r burnTime – The Burn Time (in ticks) of this Material as a Furnace Fuel. If this Material already had a Burn Time defined, it will be overridden.\n\n§lgem§r: §o§ngem(@Optional int harvestLevel, @Optional int burnTime)§r \nAdd a GemProperty to this Material.\n §l○§r harvestLevel – The Harvest Level of this block for Mining. If this Material also has a ToolProperty, this value will also be used to determine the tool\u0027s Mining level. If this Material already had a Harvest Level defined, it will be overridden.\n §l○§r burnTime – The Burn Time (in ticks) of this Material as a Furnace Fuel. If this Material already had a Burn Time defined, it will be overridden.\n\n§ltoolStats§r: §o§ntoolStats(float speed, float damage, int durability, int enchantability)§r \nSet the stat for tools which are made from this Material.\n §l○§r speed – Speed.\n §l○§r damage – Attack damage.\n §l○§r durability – Durability of tools.\n §l○§r enchantability – Enchantability of tools.\n\n§lblastTemp§r: §o§nblastTemp(int temp)§r \nBlast Furnace Temperature of this Material. If below 1000K, Primitive Blast Furnace recipes will be also added. If above 1750K, a Hot Ingot and its Vacuum Freezer recipe will be also added.\n\nIf a Material with this Property has a Fluid, its temperature will be set to this if it is the default Fluid temperature.\n §l○§r temp – Temperature.\n\n§lore§r: §o§nore(@Optional int oreMultiplier, @Optional int byproductMultiplier, @Optional boolean emissive)§r \nAdd ore blocks of this Material.\n §l○§r oreMultiplier – Crushed Ore output amount multiplier during Maceration. Default: 1 (no multiplier).\n §l○§r byproductMultiplier – Byproducts output amount multiplier during Maceration. Default: 1 (no multiplier).\n §l○§r emissive – Should ore block use the emissive texture. Default: false.\n\nEmissive ore as follow:"
+ ]
+ },
+ {
+ "type": "image",
+ "form": "url",
+ "source": "https://user-images.githubusercontent.com/18493855/143446969-80de6354-ad12-4170-81f5-071d6c0bb7cd.png",
+ "width": 190,
+ "height": 110
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§lwashedIn§r: §o§nwashedIn(String materialName, @Optional int washedAmount)§r \n\n§lwashedIn§r: §o§nwashedIn(Material material, @Optional int washedAmount)§r \nSet washing product of this Material (must has the ore property).\n §l○§r material – material.\n §l○§r washedAmount – amount.\n\n§lseparatedInto§r: §o§nseparatedInto(String... materialNames)§r \n\n§lseparatedInto§r: §o§nseparatedInto(Material... materials)§r \nSet separated products of this Material (must has the ore property).\n §l○§r materials – separated materials.\n\n§laddOreByproducts§r: §o§naddOreByproducts(String... materialNames)§r \n\n§laddOreByproducts§r: §o§naddOreByproducts(Material... materials)§r \nSet ore byproducts of this Material (must has the ore property).\n §l○§r materials – separated materials.\n\n§loreSmeltInto§r: §o§noreSmeltInto(String materialName)§r \n\n§loreSmeltInto§r: §o§noreSmeltInto(Material material)§r \nSet smelt product of this Material (must has the ore property).\n §l○§r material – material.\n\n§lpolarizesInto§r: §o§npolarizesInto(String materialName)§r \n\n§lpolarizesInto§r: §o§npolarizesInto(Material material)§r \nSet polarizes product of this Material (must has the ore property).\n §l○§r material – material.\n\n§larcSmeltInto§r: §o§narcSmeltInto(String materialName)§r \n\n§larcSmeltInto§r: §o§narcSmeltInto(Material material)§r \nSet arcSmelt product of this Material (must has the ore property).\n §l○§r material – material.\n\n§lmacerateInto§r: §o§nmacerateInto(String materialName)§r \n\n§lmacerateInto§r: §o§nmacerateInto(Material material)§r \nSet macerate product of this Material (must has the ore property).\n §l○§r material – material.\n\n§lingotSmeltInto§r: §o§ningotSmeltInto(String materialName)§r \n\n§lingotSmeltInto§r: §o§ningotSmeltInto(Material material)§r \nSet ingotSmelt product of this Material (must has the ore property).\n §l○§r material – material.\n\n§lfluidTemp§r: §o§nfluidTemp(int temp)§r \nSet the temperature of the fluid of this Material (must has the fluid property).\n §l○§r temp – temperature.\n\n§lcableProperties§r: §o§ncableProperties(long voltage, int amperage, int loss, @Optional boolean isSuperCon)§r \nAdd a cables and wires of this Material.\n §l○§r voltage – voltage.\n §l○§r amperage – amperage.\n §l○§r loss – loss.\n §l○§r isSuperCon – isSuperCon.\n\n§lfluidPipeProperties§r: §o§nfluidPipeProperties(int maxTemp, int throughput, boolean gasProof)§r \nAdd fluid pipes of this Material.\n §l○§r maxTemp – max acceptable temperature.\n §l○§r throughput – §l//TODO§r.\n §l○§r gasProof – §l//TODO§r.\n\n§litemPipeProperties§r: §o§nitemPipeProperties(int priority, float stacksPerSec)§r \nAdd item pipes of this Material.\n §l○§r priority – Items will try to take the path with the lowest priority.\n §l○§r stacksPerSec – rate in stacks per sec.\n\n§laddDefaultEnchant§r: §o§naddDefaultEnchant(IEnchantment enchantment)§r \nAdd Default Enchant of this Material.\n §l○§r enchantment – enchantment."
+ ]
+ },
+ {
+ "type": "textbox",
+ "stroke": 687800320,
+ "stroke_width": 3,
+ "fill": 687800320,
+ "content": [
+ "§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0MaterialBuilder§r§5;§r§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0Material§r§5;§r§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0MaterialRegistry§r§5;§r§5\n§r§5\n§r§9var§r§5 §r§0gold§r§5 §r§5\u003d§r§5 §r§0MaterialRegistry§r§5(§r§2\"gold\"§r§5)§r§5\n§r§9var§r§5 §r§0copper§r§5 §r§5\u003d§r§5 §r§0MaterialRegistry§r§5(§r§2\"copper\"§r§5)§r§5\n§r§5\n§r§9var§r§5 §r§0myMaterial§r§5 §r§5\u003d§r§5 §r§0MaterialBuilder§r§5(§r§2\"my_material\"§r§5)§r§5 §r§8// name§r§5\n§r§5 §r§5 §r§5 §r§5 §r§5.§r§0color§r§5(§r§5-§r§c1§r§5)§r§5 §r§8// white§r§5\n§r§5 §r§5 §r§5 §r§5 §r§5.§r§0fluid§r§5(§r§2\"gas\"§r§5,§r§5 §r§cfalse§r§5)§r§5 §r§8// gas without block§r§5\n§r§5 §r§5 §r§5 §r§5 §r§5.§r§0dust§r§5(§r§5)§r§5 §r§8// has dust§r§5\n§r§5 §r§5 §r§5 §r§5 §r§5.§r§0ingot§r§5(§r§5)§r§5 §r§8// has ingot§r§5\n§r§5 §r§5 §r§5 §r§5 §r§5.§r§0toolStats§r§5(§r§c10§r§5,§r§5 §r§c3§r§5,§r§5 §r§c256§r§5,§r§5 §r§c21§r§5)§r§5 §r§8// tool stats§r§5\n§r§5 §r§5 §r§5 §r§5 §r§5.§r§0blastTemp§r§5(§r§c1000§r§5)§r§5 §r§8// EBF temperature§r§5\n§r§5 §r§5 §r§5 §r§5 §r§5.§r§0ore§r§5(§r§5)§r§5 §r§8// has ore blocks§r§5\n§r§5 §r§5 §r§5 §r§5 §r§5.§r§0addOreByproducts§r§5(§r§0gold§r§5,§r§5 §r§0copper§r§5)§r§5 §r§8// add byproducts§r§5\n§r§5 §r§5 §r§5 §r§5 §r§5.§r§0cableProperties§r§5(§r§c0§r§5,§r§5 §r§c2§r§5,§r§5 §r§c0§r§5,§r§5 §r§ctrue§r§5)§r§5 §r§8// add cables§r§5\n§r§5 §r§5 §r§5 §r§5 §r§5.§r§0build§r§5(§r§5)§r§5;§r§5\n"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "ico",
+ "content": [
+ "§lMaterial IconSet"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§liconSet§r: §o§niconSet(String iconSet)§r \nSet the MaterialIconSet of this Material. Defaults vary depending on if the Material has a: \n §l○§r §nGemProperty§r, it will default to §l\"GEM_VERTICAL\"§r\n §l○§r §nIngotProperty§r or §nDustProperty§r, it will default to §l\"DULL\"§r\n §l○§r §nFluidProperty§r, it will default to either §l\"FLUID\"§r or §l\"GAS\"§r, depending on the FluidType\n §l○§r §nPlasmaProperty§r, it will default to §l\"FLUID\"§r\n\nDefault will be determined by first-found Property in this order, unless specified."
+ ]
+ },
+ {
+ "type": "textbox",
+ "stroke": 687800320,
+ "stroke_width": 3,
+ "fill": 687800320,
+ "content": [
+ "§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0MaterialBuilder§r§5;§r§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0Material§r§5;§r§5\n§r§5\n§r§9var§r§5 §r§0myMaterial§r§5 §r§5\u003d§r§5 §r§0MaterialBuilder§r§5(§r§2\"my_material\"§r§5)§r§5.§r§0iconSet§r§5(§r§2\"QUARTZ\"§r§5)§r§5.§r§0build§r§5(§r§5)§r§5;§r§5\n§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "com",
+ "content": [
+ "§lComponent"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "The §lComponent§r refers to compositions of the material. \nFor example, the compositions of the §lSugar§r are §n2*Carbon§r, §n5*Water§r, and §n25*Oxygen§r. That would affect its chemical formula:"
+ ]
+ },
+ {
+ "type": "image",
+ "form": "url",
+ "source": "https://user-images.githubusercontent.com/18493855/143438573-cd2e9078-744d-4861-a00c-1e9fc5ccd32a.png",
+ "width": 110,
+ "height": 50
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§lcomponents§r: §o§ncomponents(MaterialStack[] components)§r \nSet the compositions of the material.\n §l○§r components - compositions."
+ ]
+ },
+ {
+ "type": "textbox",
+ "stroke": 687800320,
+ "stroke_width": 3,
+ "fill": 687800320,
+ "content": [
+ "§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0MaterialBuilder§r§5;§r§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0Material§r§5;§r§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0MaterialStack§r§5;§r§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0MaterialRegistry§r§5;§r§5\n§r§5\n§r§9var§r§5 §r§0carbonMaterial§r§5 §r§5\u003d§r§5 §r§0MaterialRegistry§r§5.§r§0get§r§5(§r§2\"carbon\"§r§5)§r§5;§r§5\n§r§9var§r§5 §r§0oxygenMaterial§r§5 §r§5\u003d§r§5 §r§0MaterialRegistry§r§5.§r§0get§r§5(§r§2\"oxygen\"§r§5)§r§5;§r§5\n§r§5\n§r§0val§r§5 §r§0compositions§r§5 §r§0as§r§5 §r§0MaterialStack§r§5[§r§5]§r§5 §r§5\u003d§r§5 §r§5[§r§5\n§r§5 §r§5 §r§5 §r§5 §r§5 §r§5 §r§5 §r§5 §r§0carbonMaterial§r§5 §r§5*§r§5 §r§c2§r§5,§r§5\n§r§5 §r§5 §r§5 §r§5 §r§5 §r§5 §r§5 §r§5 §r§0oxygenMaterial§r§5 §r§5*§r§5 §r§c3§r§5,§r§5\n§r§5 §r§5 §r§5 §r§5 §r§5]§r§5;§r§5\n§r§5\n§r§9var§r§5 §r§0myMaterial§r§5 §r§5\u003d§r§5 §r§0MaterialBuilder§r§5(§r§2\"my_material\"§r§5)§r§5.§r§0components§r§5(§r§0compositions§r§5)§r§5.§r§0build§r§5(§r§5)§r§5;§r§5\n§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "fla",
+ "content": [
+ "§lMaterial Flag"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§lflags§r: §o§nflags(String... names)§r \nAdd MaterialFlags to this Material.\n §l○§r names - names of specific MaterialFlags."
+ ]
+ },
+ {
+ "type": "textbox",
+ "stroke": 687800320,
+ "stroke_width": 3,
+ "fill": 687800320,
+ "content": [
+ "§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0MaterialBuilder§r§5;§r§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0Material§r§5;§r§5\n§r§5\n§r§9var§r§5 §r§0myMaterial§r§5 §r§5\u003d§r§5 §r§0MaterialBuilder§r§5(§r§2\"my_material\"§r§5)§r§5.§r§0flags§r§5(§r§2\"generate_rod\"§r§5,§r§5 §r§2\"generate_foil\"§r§5)§r§5.§r§0build§r§5(§r§5)§r§5;§r§5\n§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "ele",
+ "content": [
+ "§lElement"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§lelement§r: §o§nelement(String elementName)§r \nSet the element of this Material.\n §l○§r elementName - names of the element."
+ ]
+ },
+ {
+ "type": "textbox",
+ "stroke": 687800320,
+ "stroke_width": 3,
+ "fill": 687800320,
+ "content": [
+ "§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0MaterialBuilder§r§5;§r§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0Material§r§5;§r§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0Elements§r§5;§r§5\n§r§5\n§r§9var§r§5 §r§0CEu§r§5 §r§5\u003d§r§5 §r§0Elements§r§5.§r§0add§r§5(§r§c999§r§5,§r§5 §r§c999§r§5,§r§5 §r§5-§r§c1§r§5,§r§5 §r§cnull§r§5,§r§5 §r§2\"GTCEu\"§r§5,§r§5 §r§2\"CEu\"§r§5,§r§5 §r§cfalse§r§5)§r§5;§r§5 §r§8// create a new element.§r§5\n§r§5\n§r§9var§r§5 §r§0myMaterial§r§5 §r§5\u003d§r§5 §r§0MaterialBuilder§r§5(§r§2\"my_material\"§r§5)§r§5.§r§0element§r§5(§r§2\"CEu\"§r§5)§r§5.§r§0build§r§5(§r§5)§r§5;§r§5 §r§8// register my element.§r§5\n§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ }
+ ],
+ "fixed": []
+} \ No newline at end of file
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/06_modify.json b/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/06_modify.json
new file mode 100644
index 0000000..f9e1dee
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/material/06_modify.json
@@ -0,0 +1,81 @@
+{
+ "section": "CraftTweaker/Material",
+ "title": "Modify Existing Materials",
+ "stream": [
+ {
+ "type": "textbox",
+ "fontSize": 9,
+ "content": [
+ "You can get Materials by the §lMaterialRegistry§r."
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "element",
+ "content": [
+ "1. §9Getters"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "ct",
+ "content": [
+ "2. §9Setters"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "element",
+ "content": [
+ "§c§lGetters:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ " §l○§r §o§nMaterialRegistry.get(String materialName)§r get §nMaterial§r by name.\n\n §l○§r §o§nMaterialRegistry.getAllMaterials()§r get §nMaterial§r List.\n\n §l○§r §o§ngetChemicalFormula()§r get default formula.\n\n §l○§r §o§nmaterialRGB§r get default materialRGB.\n\n §l○§r §o§nradioactive§r get default radioactive.\n\n §l○§r §o§nprotons§r get default protons.\n\n §l○§r §o§nneutrons§r get default neutrons.\n\n §l○§r §o§nmass§r get default mass.\n\n §l○§r §o§naverageProtons§r get default averageProtons.\n\n §l○§r §o§naverageNeutrons§r get default averageNeutrons.\n\n §l○§r §o§naverageMass§r get default averageMass.\n\n §l○§r §o§nblastTemperature§r get default blastTemperature.\n\n §l○§r §o§ncamelCaseName§r get default camelCaseName.\n\n §l○§r §o§nunlocalizedName§r get default unlocalizedName.\n\n §l○§r §o§nlocalizedName§r get default localizedName.\n\n §l○§r §o§nname§r get default name."
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "ct",
+ "content": [
+ "§c§lSetters:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ " §l○§r §o§nsetFormula(String formula, @Optional boolean withFormatting)§r Set the formula of this Material.\n\n §l○§r §o§naddFlags(String... names)§r Add additional flags to this Material.\n\n §l○§r §o§nsetMaterialRGB(int materialRGB)§r Set the color of this Material.\n\n §l○§r §o§nsetFormula(String formula, @Optional boolean withFormatting)§r Set the formula of this Material."
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"
+ ]
+ },
+ {
+ "type": "textbox",
+ "stroke": 687800320,
+ "stroke_width": 3,
+ "fill": 687800320,
+ "content": [
+ "§5\n§r§8#loader gregtech§r§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0MaterialRegistry§r§5;§r§5\n§r§9import§r§5 §r§0mods§r§5.§r§0gregtech§r§5.§r§0material§r§5.§r§0Material§r§5;§r§5\n§r§5\n§r§9var§r§5 §r§0gold§r§5 §r§5\u003d§r§5 §r§0MaterialRegistry§r§5.§r§0get§r§5(§r§2\"gold\"§r§5)§r§5;§r§5\n§r§9var§r§5 §r§0name§r§5 §r§5\u003d§r§5 §r§0gold§r§5.§r§0name§r§5;§r§5 §r§8// \"gold\"§r§5\n§r§9var§r§5 §r§0color§r§5 §r§5\u003d§r§5 §r§0gold§r§5.§r§0materialRGB§r§5;§r§5 §r§8// 0xFFE650§r§5\n§r§0gold§r§5.§r§0setFormula§r§5(§r§2\"AggA\"§r§5)§r§5;§r§5 §r§8// set formula§r§5\n§r§9var§r§5 §r§0formula§r§5 §r§5\u003d§r§5 §r§0gold§r§5.§r§0getChemicalFormula§r§5(§r§5)§r§5;§r§5 §r§8// \"AggA\"§r§5\n§r§0gold§r§5.§r§0addFlag§r§5(§r§2\"generate_long_rod\"§r§5,§r§5 §r§2\"generate_gear\"§r§5)§r§5;§r§5 §r§8// add gold long rod, add gold gear§r§5\n§r"
+ ]
+ }
+ ],
+ "fixed": []
+} \ No newline at end of file
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/terminal/ct_terminal_01.json b/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/terminal/ct_terminal_01.json
new file mode 100644
index 0000000..b1cdd3a
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/crafttweaker/terminal/ct_terminal_01.json
@@ -0,0 +1,107 @@
+{
+ "section": "CraftTweaker/Terminal",
+ "title": "CraftTweaker of Terminal",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "Content:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§1§lURL:§r§n https://github.com/Gregicality/GregTech/wiki/CraftTweaker-of-Terminal"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "api",
+ "isShadow": false,
+ "content": [
+ "§4§lAPI:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "fontSize": 9,
+ "content": [
+ "1. §1registerDevice(deviceItemStack, deviceName)§0:\nRegister the custon device.\n\n2. §1createAppRegistryBuilder(appName):\n§0Create the registryBuilder according to the app name (found in the store app).\n\n3. §1isDefaultApp(default):\n§0Make it as a default app.\n\n4. §1battery(euTier, cost):\n§0Set battery requirements for all tier.\n\n5. §1battery(appTier, euTier, cost):\n§0Set battery requirements for the specific tier.\n\n6. §1device(deviceName...):\n§0Set device requirements for all tier. (available by default: \"scanner\", \"wireless\", \"camera\", \"solar_lv\").\n\n7. §1device(appTier, device...):\n§0Set device requirements for the specific tier.\n\n8. §1upgrade(upgradeItemStack...):\n§0Set upgrade requirements for all tier.\n\n9. §1upgrade(appTier, upgradeItemStack...):\n§0Set upgrade requirements for the specific tier.\n\n10. §1build():\n§0finish and register."
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "demo",
+ "space": 1,
+ "content": [
+ "\n§4§lZS Demo:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "fill": -912478525,
+ "fontSize": 9,
+ "content": [
+ "import mods.gregtech.TerminalRegistry;\n\nTerminalRegistry.registerDevice(\u003core:ingotIron\u003e.firstItem, \"ingot_iron\");\n\nTerminalRegistry.createAppRegistryBuilder(\"ore_prospector\")\n .isDefaultApp(true)\n .battery(1, 500)\n .battery(3, 3, 1000)\n .device(\"camera\", \"wireless\")\n .device(4, \"ingot_iron\")\n .upgrade(\u003cminecraft:apple\u003e * 9)\n .upgrade(2, \u003cminecraft:apple\u003e * 9, \u003cminecraft:grass\u003e * 12)\n .build();"
+ ]
+ },
+ {
+ "type": "textbox",
+ "fontSize": 9,
+ "content": [
+ "§4§lResult:\n§rCustom Device"
+ ]
+ },
+ {
+ "type": "image",
+ "form": "url",
+ "source": "https://user-images.githubusercontent.com/18493855/140280593-37922838-4a20-4e1b-9be9-73935c4c8c13.png",
+ "width": 190,
+ "height": 120
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "Register Battery, Device, and Upgrade"
+ ]
+ },
+ {
+ "type": "image",
+ "form": "url",
+ "source": "https://user-images.githubusercontent.com/18493855/140280587-84dc8f67-6dde-472f-9ed8-6a4c5e71abc4.png",
+ "width": 190,
+ "height": 120
+ },
+ {
+ "type": "image",
+ "form": "url",
+ "source": "https://user-images.githubusercontent.com/18493855/140280590-d4700a88-5780-4e0f-95f8-130e82f4634a.png",
+ "width": 190,
+ "height": 120
+ }
+ ],
+ "fixed": [
+ {
+ "type": "textbox",
+ "x": 49,
+ "y": 40,
+ "width": 16,
+ "height": 10,
+ "link": "api",
+ "content": [
+ "§9§napi"
+ ]
+ },
+ {
+ "type": "textbox",
+ "x": 67,
+ "y": 40,
+ "width": 25,
+ "height": 10,
+ "link": "demo",
+ "content": [
+ "§9§ndemo"
+ ]
+ }
+ ]
+}
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_0_guidepage.json b/config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_0_guidepage.json
new file mode 100644
index 0000000..8fe3a94
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_0_guidepage.json
@@ -0,0 +1,148 @@
+{
+ "section": "Guide Widget Api",
+ "title": "Guide Page",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "In this page we'll learn how to write a guide page.",
+ "-------------------------------",
+ "Let's take a look at an example config file for a guide page.",
+ "§lJSON§r:",
+ "{",
+ " \"section\": \"section name here\",",
+ " \"title\": \"title here\",",
+ " \"stream\": [",
+ " {",
+ " \"type\": \"textbox\",",
+ " \"content\": [\"TextBox widget\"]",
+ " }",
+ " ],",
+ " \"fixed\": [",
+ " {",
+ " \"x\": 50,",
+ " \"y\": 100,",
+ " \"width\": 150,",
+ " \"height\": 40,",
+ " \"type\": 0,",
+ " \"content\": [\"TextBox widget\"]",
+ " }",
+ " ]",
+ "}",
+ "-------------------------------",
+ "§lContents§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "section",
+ "content": [
+ " 1.§nsection§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "title",
+ "content": [
+ " 2.§ntitle§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "stream",
+ "content": [
+ " 3.§nstream§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "fixed",
+ "content": [
+ " 4.§nfixed§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "section",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nsection§r (§4required§r)",
+ "§ltype§r: String",
+ "§lillustrate§r: Specifies which section of the application the page belongs to.",
+ "The application automatically merges pages of the same section name and builds a directory tree."
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "title",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §ntitle§r (§4required§r)",
+ "§ltype§r: String",
+ "§lillustrate§r: The page title."
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "stream",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nstream§r (§4required§r)",
+ "§ltype§r: Array",
+ "§lillustrate§r: Widgets in streaming layout. You don't need to care the position and size of widgets in stream, all typography will be done automatically."
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "fixed",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nfixed§r (§4required§r)",
+ "§ltype§r: Array",
+ "§lillustrate§r: Widgets in fixed layout. You need to specify the position and size of each widget."
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: fixed and stream"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "hover_text": ["stream widget"],
+ "content": [
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ }
+ ],
+ "fixed": [
+ {
+ "type": "image",
+ "x": 30,
+ "y": 800,
+ "stroke": 4278190335,
+ "hover_text": ["fixed widget", "\"x\": 30","\"y\": 800","\"width\": 100","\"width\": 100"],
+ "form": "item",
+ "source": "minecraft:ender_pearl",
+ "width": 100,
+ "height": 100
+ }
+ ]
+}
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_1_widget.json b/config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_1_widget.json
new file mode 100644
index 0000000..7d8d23b
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_1_widget.json
@@ -0,0 +1,304 @@
+{
+ "section": "Guide Widget Api",
+ "title": "Guide Widget",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "In this page we'll learn what is §4§lGuide Widget§r, and its public attributes.",
+ "Widgets are rendered in the Guide Page, which is the basis for your custom pages. §nTextbox§r, §nImage§r, etc",
+ "To use it, just add the related JSON code under the §l\"fixed\"§r or §l\"stream\"§r.",
+ "There are some attributes effects (styles) that are valid for all widgets",
+ "-------------------------------",
+ "§lJSON§r:",
+ "{",
+ " \"type\": \"type here\",",
+ " \"x\": 50,",
+ " \"y\": 100,",
+ " \"width\": 150,",
+ " \"height\": 40,",
+ " \"ref\": \"ref\",",
+ " \"stroke\": 0,",
+ " \"stroke_width\": 1,",
+ " \"fill\": 0,",
+ " \"link\": \"ref\"",
+ " \"hover_text\": [\"text here\"]",
+ "}",
+ "-------------------------------",
+ "§lContents§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "type",
+ "content": [
+ " 1.§ntype§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "xywh",
+ "content": [
+ " 2.§nx, y, width, height§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "ref",
+ "content": [
+ " 3.§nref§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "fill",
+ "content": [
+ " 4.§nfill§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "stroke",
+ "content": [
+ " 5.§nstroke§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "stroke_width",
+ "content": [
+ " 6.§nstroke_width§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "link",
+ "content": [
+ " 7.§nlink§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "hover",
+ "content": [
+ " 8.§nhover_text§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "type",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §ntype§r (§4required§r)",
+ "§ltype§r: String",
+ "§lillustrate§r: This is the unique id of the widget. See the API documentation for each widget."
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "xywh",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nx, y, width, height§r (§4optional§r)",
+ "§ltype§r: Integer",
+ "§lillustrate§r: The position and size of the widget. In a stream layout, you usually don't need to set it (the image widget needs to set width and height). Under fixed layout you must set these four attributes."
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "ref",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nref§r (§4optional§r)",
+ "§ltype§r: String",
+ "§ldefault§r: null",
+ "§lillustrate§r: This is a tag of this widget. The ref should be unique on the same page."
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "fill",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nfill§r (§6optional§r)",
+ "§ltype§r: Number",
+ "§ldefault§r: 0",
+ "§lillustrate§r: The background color."
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: 4278190335 (0xFF0000FF)"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "fill": 4278190335,
+ "content": [
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "stroke",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nstroke§r (§6optional§r)",
+ "§ltype§r: Number",
+ "§ldefault§r: 0",
+ "§lillustrate§r: The border color."
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: 4278190335 (0xFF0000FF)"
+ ]
+ },
+ {
+ "type": "image",
+ "form": "item",
+ "source": "minecraft:ender_pearl",
+ "stroke": 4278190335,
+ "width": 50,
+ "height": 50
+ },
+ {
+ "type": "textbox",
+ "ref": "stroke_width",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nstroke_width§r (§6optional§r)",
+ "§ltype§r: Number",
+ "§ldefault§r: 1",
+ "§lillustrate§r: The border width."
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: 5"
+ ]
+ },
+ {
+ "type": "image",
+ "form": "item",
+ "source": "minecraft:ender_pearl",
+ "stroke": 4278190335,
+ "stroke_width": 5,
+ "width": 50,
+ "height": 50
+ },
+ {
+ "type": "textbox",
+ "ref": "link",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nlink§r (§6optional§r)",
+ "§ltype§r: String",
+ "§ldefault§r: null",
+ "§lillustrate§r: Click to jump to the specified location. Need to be used with ref, target is ref."
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: \"P2\""
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "fill": 4286430975,
+ "hover_text": ["\"ref\": \"P1\""],
+ "ref": "P1",
+ "link": "P2",
+ "content": ["Click Me!"]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: \"P1\""
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "fill": 4286430975,
+ "hover_text": ["\"ref\": \"P2\""],
+ "ref": "P2",
+ "link": "P1",
+ "content": ["Click Me!"]
+ },
+ {
+ "type": "textbox",
+ "ref": "hover",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nhover_text§r (§6optional§r)",
+ "§ltype§r: Array",
+ "§ldefault§r: null",
+ "§lillustrate§r: Displays text when the mouse is over the widget."
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: [\"THIS IS\",\"GT ICON\"]"
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["THIS IS","GT ICON"],
+ "form": "resource",
+ "source": "gregtech:textures/gui/icon/gregtech_logo.png",
+ "width": 100,
+ "height": 100
+ }
+ ],
+ "fixed": []
+}
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_2_textbox.json b/config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_2_textbox.json
new file mode 100644
index 0000000..f67b885
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_2_textbox.json
@@ -0,0 +1,256 @@
+{
+ "section": "Guide Widget Api",
+ "title": "1. TextBox Widget",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "In this page we'll learn how to use the powerful §4§lTextBox§r, which is the most commonly used. So you should read the API documentation carefully.",
+ "-------------------------------",
+ "§lWidget Type§r: §ntextbox§r",
+ "-------------------------------",
+ "§lJSON§r:",
+ "{",
+ " \"type\": \"textbox\",",
+ " \"space\": 1,",
+ " \"fontSize\": 9,",
+ " \"fontColor\": 4278190080,",
+ " \"isCenter\": false,",
+ " \"isShadow\": false,",
+ " \"content\": [\"content here!\"]",
+ "}",
+ "-------------------------------",
+ "§lContents§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "content",
+ "content": [
+ " 1.§ncontent§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "space",
+ "content": [
+ " 2.§nspace§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "fontSize",
+ "content": [
+ " 3.§nfontSize§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "fontColor",
+ "content": [
+ " 4.§nfontColor§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "isCenter",
+ "content": [
+ " 5.§nisCenter§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "isShadow",
+ "content": [
+ " 6.§nisShadow§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "content",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §ncontent§r (§4required§r)",
+ "§ltype§r: Array",
+ "§lillustrate§r: Text contents, each item will be a newline.Text that is too long will auto wrap itself. (Supporting Minecraft Formatting Code)"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "stroke": 4294901760,
+ "content": [
+ "§lDemo§r: [...]",
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "space",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nspace§r (§6optional§r)",
+ "§ltype§r: Number",
+ "§ldefault§r: 1",
+ "§lillustrate§r: The spacing between lines of text."
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "stroke": 4294901760,
+ "space": 5,
+ "content": [
+ "§lDemo§r: 5",
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ },{
+ "type": "textbox",
+ "ref": "fontSize",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nfontSize§r (§6optional§r)",
+ "§ltype§r: Number",
+ "§ldefault§r: 9",
+ "§lillustrate§r: The font size. (Actually it's the height of the font)"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "stroke": 4294901760,
+ "fontSize": 5,
+ "content": [
+ "§lDemo§r: 5",
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ },{
+ "type": "textbox",
+ "ref": "fontColor",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nfontColor§r (§6optional§r)",
+ "§ltype§r: Number",
+ "§ldefault§r: 4278190080",
+ "§lillustrate§r: The default color of the content. You can also set the colors with special symbols (provided by Minecraft).But maybe you need it sometimes."
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "stroke": 4294901760,
+ "fontColor": 5,
+ "content": [
+ "§lDemo§r: 4294901760 (0xFFFF0000)",
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "isCenter",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nisCenter§r (§6optional§r)",
+ "§ltype§r: Boolean",
+ "§ldefault§r: false",
+ "§lillustrate§r: Text-align center."
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": false,
+ "stroke": 4294901760,
+ "content": [
+ "§lDemo§r: false",
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ },{
+ "type": "textbox",
+ "ref": "isShadow",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nisShadow§r (§6optional§r)",
+ "§ltype§r: Boolean",
+ "§ldefault§r: false",
+ "§lillustrate§r: Render shadow."
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "stroke": 4294901760,
+ "isShadow": true,
+ "content": [
+ "§lDemo§r: true",
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ }
+ ],
+ "fixed": []
+}
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_3_image.json b/config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_3_image.json
new file mode 100644
index 0000000..39f6d14
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/guide_widget_api/api_3_image.json
@@ -0,0 +1,207 @@
+{
+ "section": "Guide Widget Api",
+ "title": "2. Image Widget",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "In this page we'll learn how to add an §4§lImage§r. There are three different forms of image supported here: §4Url§r, §4Item§r, and §4ResourceLocation§r. Don't worry, it's easy",
+ "-------------------------------",
+ "§lWidget Type§r: §nimage§r",
+ "-------------------------------",
+ "§lJSON§r:",
+ "{",
+ " \"type\": \"image\",",
+ " \"form\": \"Item\",",
+ " \"source\": \"minecraft:ender_pearl\",",
+ " \"width\": 100,",
+ " \"height\": 100",
+ "}",
+ "-------------------------------",
+ "§lContents§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "form",
+ "content": [
+ " 1.§nform§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "source",
+ "content": [
+ " 2.§nsource§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "wh",
+ "content": [
+ " 3.§nwidth, height§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "form",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nform§r (§4required§r)",
+ "§ltype§r: String",
+ "§lillustrate§r: It can only be set one of §4Url§r, §4Item§r, or §4ResourceLocation§r.",
+ " \"url\" -- image url.",
+ " \"item\" -- The registered name of the Item in game.",
+ " \"resource\" -- The resource location."
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: \"url\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["https://z3.ax1x.com/2021/07/29/Wb4Djs.gif"],
+ "form": "url",
+ "source": "https://z3.ax1x.com/2021/07/29/Wb4Djs.gif",
+ "stroke": 4278190080,
+ "stroke_width": 2,
+ "width": 100,
+ "height": 100
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: \"item\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["minecraft:ender_pearl"],
+ "form": "item",
+ "source": "minecraft:ender_pearl",
+ "width": 100,
+ "height": 100
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: \"resource\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["gregtech:textures/gui/icon/multiblock_category.png"],
+ "form": "resource",
+ "source": "gregtech:textures/gui/icon/multiblock_category.png",
+ "width": 100,
+ "height": 100
+ },
+ {
+ "type": "textbox",
+ "ref": "source",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nsource§r (§4required§r)",
+ "§ltype§r: String",
+ "§lillustrate§r: The source of the picture. The three images above correspond to the following sources:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: \"https://z3.ax1x.com/2021/07/29/Wb4Djs.gif\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["https://z3.ax1x.com/2021/07/29/Wb4Djs.gif"],
+ "form": "url",
+ "source": "https://z3.ax1x.com/2021/07/29/Wb4Djs.gif",
+ "stroke": 4278190080,
+ "stroke_width": 2,
+ "width": 100,
+ "height": 100
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: \"minecraft:ender_pearl\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["minecraft:ender_pearl"],
+ "form": "item",
+ "source": "minecraft:ender_pearl",
+ "width": 100,
+ "height": 100
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: \"gregtech:textures/gui/icon/multiblock_category.png\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["gregtech:textures/gui/icon/multiblock_category.png"],
+ "form": "resource",
+ "source": "gregtech:textures/gui/icon/multiblock_category.png",
+ "width": 100,
+ "height": 100
+ },
+ {
+ "type": "textbox",
+ "ref": "wh",
+ "content": [
+ "-------------------------------",
+ "",
+ "§lAttr§r: §nwidth, height§r (§4required§r)",
+ "§ltype§r: Integer",
+ "§lillustrate§r: The Size of the picture."
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: \"50, 50\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["minecraft:ender_pearl"],
+ "form": "item",
+ "source": "minecraft:ender_pearl",
+ "width": 50,
+ "height": 50
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§lDemo§r: \"100, 50\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["minecraft:ender_pearl"],
+ "form": "item",
+ "source": "minecraft:ender_pearl",
+ "width": 100,
+ "height": 50
+ }
+ ],
+ "fixed": []
+}
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/important_concepts/machine_grid.json b/config/gregtech/terminal/guide/tutorials/en_us/important_concepts/machine_grid.json
new file mode 100644
index 0000000..31aafa4
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/important_concepts/machine_grid.json
@@ -0,0 +1,6 @@
+{
+ "section": "Important Concepts",
+ "title": "Machine Grid",
+ "stream": [],
+ "fixed": []
+} \ No newline at end of file
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/multiblocks/forming_multiblocks.json b/config/gregtech/terminal/guide/tutorials/en_us/multiblocks/forming_multiblocks.json
new file mode 100644
index 0000000..e98245d
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/multiblocks/forming_multiblocks.json
@@ -0,0 +1,13 @@
+{
+ "section": "Multiblocks",
+ "title": "Forming Multiblocks",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "§oThis is a Guide to help you form Multiblocks and troubleshoot issues.§r\n\nThere are two really important factors to know when building Multiblocks.\n\n§lCheck the JEI preview:§r This one was probably obvious, but there\u0027s more than just a picture of how the Multiblock looks like! Use your mouse to §drotate§r the preview, §9hover over the parts§r to gain additional informations. The JEI page also contains the amount of blocks to build it. You can also §dright-click§r a block in the preview to get a display of all available blocks in that placement.\n\n\n§lThe JEI preview is a suggestion:§r There is no unique way to form the Multiblock. Most of the time, you have complete freedom for the §9tier of Buses/Hatches§r. And you also have the §dfreedom of placement§r.\n\nTaking the EBF as example, any tier of Energy/Bus/Hatch can be used, and they can be placed anywhere replacing a casing. Fluid Hatches are also optional, though you probably want them to handle recipes with fluid.\n\nAdditionally, you can §dsneak right-click§r the multiblock controller for an §6in-world preview§r, or use the §4Terminal§r\u0027s Multiblock Helper."
+ ]
+ }
+ ],
+ "fixed": []
+}
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/multiblocks/large_turbine_mechanics.json b/config/gregtech/terminal/guide/tutorials/en_us/multiblocks/large_turbine_mechanics.json
new file mode 100644
index 0000000..a967020
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/multiblocks/large_turbine_mechanics.json
@@ -0,0 +1,13 @@
+{
+ "section": "Multiblocks",
+ "title": "Large Turbine Mechanics",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "§oThe Large Turbines are the most complex Multiblock Generators there exists in GTCEu in the present day.§r\n\nLet\u0027s start with the §4drawbacks§r of §3Large Turbines§r:\n§9-§r They work off §cInertia§r, which requires continuous running to achieve maximum Power.\n§9-§r Any excess unconsumed Energy produced will be §cvoided§r. So ideally you want to use large Energy buffers, and possibly control your Turbines with a redstone RS latch type of deal.\n§9-§r They require a §aRotor§r which loses durability over time and eventually §cbreak§r.\n§9-§r A little bit of Math is required to get the expected results.\n\n\nNow, with the §6upsides§r:\n§9-§r They can scale §9Power§r production substancially higher than the base output thanks to tiered §3Rotor Holders§r.\n§9-§r The §aRotor§r can give a huge boost to §dFuel efficiency§r, and §9Power§r production.\n§9-§r Self satisfaction for setting them up properly (yay!).\n\n\n§3Rotor Holders§r above the tier of the §3Large Turbine§r will §6double§r the production for every tier, multiplicatively.\n§3Rotor Holders§r above the tier of the §3Large Turbine§r will increase the efficiency by 10% for every tier, additively.\n\n§aRotors§r have a §9Power§r, §dEfficiency§r and §4Durability§r that are based on tool stats.\n§9Power§r multiplies the production of the §3Turbine§r. This stacks multiplicatively with the §3Rotor Holder§r.\n§dEfficiency§r reduces the fuel consumption. This stacks multiplicatively with the §3Rotor Holder§r.\n§4Durability§r is the lifetime of the §aRotor§r in seconds, when the §3Turbine§r is active.\n\n\n§2§lIn summary:§r\n\nThe §9Power§r output affects both the fuel consumption and the EU/t generation. It is calculated with the following formula:\n§cproduction \u003d baseEUt §l*§r rotorPower §l*§r 2^(rotorHolderTier - turbineTier)§r\n\nThe §dEfficiency§r reduces the fuel consumption, but does not alter the EU/t generation. It is calculated with the following formula:\n§cefficiency \u003d rotorEfficiency §l*§r (1 + 0.1 §l*§r (rotorHolderTier - turbineTier))§r\n\n\n§2§lSome examples:§r\n\nLarge Steam Turbine, with Ultimet Rotor and EV Rotor Holder:\nProduction \u003d 1024 §l*§r 1.60 §l*§r 2 \u003d 3276 EU/t\nEfficiency \u003d 1.30 §l*§r 1.10 \u003d 143%\n(Steam consumption \u003d 4582 L/t, this is above a Titanium Boiler, or a TungstenSteel Boiler with §m70% throttle)\n\nLarge Gas Turbine, with Chrome Rotor and EV Rotor Holder:\nProduction \u003d 4096 §l*§r 1.70 §l*§r 1 \u003d 5325 EU/t\nEfficiency \u003d 1.55 §l*§r 1.00 \u003d 155%\n(The same fuel consumption would produce 3435 EU/t using 6.7 Turbo Gas Turbines)\n\nLarge Plasma Turbine, with HSS-S Rotor and ZPM Rotor Holder:\nProduction \u003d 16834 §l*§r 2.50 §l*§r 4 \u003d 168340 EU/t\nEfficiency \u003d 1.80 §l*§r 1.20 \u003d 216%\n(This is more than a ZPM Amp!)"
+ ]
+ }
+ ],
+ "fixed": []
+}
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/multiblocks/multibock_troubleshooting.json b/config/gregtech/terminal/guide/tutorials/en_us/multiblocks/multibock_troubleshooting.json
new file mode 100644
index 0000000..096c157
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/multiblocks/multibock_troubleshooting.json
@@ -0,0 +1,13 @@
+{
+ "section": "Multiblocks",
+ "title": "Multiblock Troubleshooting",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "If a multiblock is formed, but you are having troubles figuring out why it does not run:\n§9-§r Check if the Multiblock is properly plugged in (we all make these mistakes!).\n\n§9-§r Do the initial Maintenance fix.\n\n§9-§r Verify the recipe usage, the max EU/t has to be greater than that of the recipe.\n\n§9- §rCheck the special requirements the recipe may have (JEI always has some kind of indication for it).\n\n§9-§r Make sure the recipe is properly input, this is less obvious than in a regular machine because you have to juggle between Input Bus and Input Hatch.\n\n§9-§r Make sure there is space for output. Maybe the multiblock formed but you forgot a Hatch. The other biggest offender is the Output Hatches being too low tier and having too little capacity!"
+ ]
+ }
+ ],
+ "fixed": []
+}
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/resource_pack/emissive_texture.json b/config/gregtech/terminal/guide/tutorials/en_us/resource_pack/emissive_texture.json
new file mode 100644
index 0000000..752ae42
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/resource_pack/emissive_texture.json
@@ -0,0 +1,135 @@
+{
+ "section": "Resource Pack",
+ "title": "Custom Emissive Texture",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "Developers and resource pack authors can easily have emissive textures and set the bloom effect.\n\n§lContents:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "emissive",
+ "content": [
+ "1. §1Emissive Texture"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "bloom",
+ "content": [
+ "2.§1 Bloom"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "demo",
+ "content": [
+ "3. §1Demo"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "emissive",
+ "content": [
+ "§lEmissive Texture"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "* For model-based blocks: Similar to §4CTM§r, you only need to set mcmeta file for the texture that you want to have the emissive effect."
+ ]
+ },
+ {
+ "type": "card",
+ "fill": -3745585,
+ "width": 190,
+ "height": 100,
+ "isShadow": true
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§2light §rhere represents the default level of light it emit (from 0~15). Besides, you can also set sky and block separately as what CTM does."
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "* For CEu machines: They mostly are overlay textures under the assets/textures/blocks/machines and assets/textures/overlay/machines. You no need to set the mcmeta file for them. Just add a new texture file for the emissive part named \"XXX_emissive.png\"."
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§lBloom"
+ ],
+ "ref": "bloom"
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "* For CEu machines: You don\u0027t need to modify anything; all emissive textures have the bloom effect by default.\n\n* For model-based blocks: You just need to add an extra line to the mcmeta file. (§2\"layer\"§r: \"BLOOM\")"
+ ]
+ },
+ {
+ "type": "card",
+ "fill": -3745585,
+ "width": 190,
+ "height": 110,
+ "isShadow": true
+ },
+ {
+ "type": "textbox",
+ "ref": "demo",
+ "content": [
+ "§lDemo"
+ ]
+ },
+ {
+ "type": "image",
+ "form": "url",
+ "source": "https://user-images.githubusercontent.com/18493855/138578815-d2d4e357-8080-4d57-b8ac-61235eac8c2a.png",
+ "width": 190,
+ "height": 130
+ },
+ {
+ "type": "image",
+ "form": "url",
+ "source": "https://user-images.githubusercontent.com/18493855/138578838-b9e6a16d-e348-4fea-8ab4-8a940e1ecd0f.png",
+ "width": 190,
+ "height": 100
+ },
+ {
+ "type": "image",
+ "form": "url",
+ "source": "https://user-images.githubusercontent.com/18493855/138578853-9a2497f4-e1f5-45e9-ab64-26b5eb859139.png",
+ "width": 190,
+ "height": 110
+ }
+ ],
+ "fixed": [
+ {
+ "type": "textbox",
+ "x": 8,
+ "y": 206,
+ "width": 181,
+ "height": 90,
+ "content": [
+ "{\n §2\"ctm\"§r: {\n §2\"ctm_version\"§r: 1,\n §2\"gregtech:§r true,\n §2\"extra\"§r: {\n §2\"light\"§r: 15\n }\n }\n}"
+ ]
+ },
+ {
+ "type": "textbox",
+ "x": 8,
+ "y": 550,
+ "width": 181,
+ "height": 100,
+ "content": [
+ "{\n §2\"ctm\"§r: {\n §2\"ctm_version\"§r: 1,\n §2\"layer\"§r: \"BLOOM\",\n §2\"gregtech\"§r true,\n §2\"extra\"§r: {\n §2\"light\"§r: 15\n }\n }\n}"
+ ]
+ }
+ ]
+}
diff --git a/config/gregtech/terminal/guide/tutorials/en_us/terminal/terminal_hardware.json b/config/gregtech/terminal/guide/tutorials/en_us/terminal/terminal_hardware.json
new file mode 100644
index 0000000..3a9c51f
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/en_us/terminal/terminal_hardware.json
@@ -0,0 +1,223 @@
+{
+ "section": "Terminal",
+ "title": "Hardware",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "Current supported §4§lhardware§r:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "battery",
+ "content": [
+ " 1.§nBattery"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "device",
+ "content": [
+ " 2.§nDevice"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "isShadow": false,
+ "content": [
+ "§lBattery"
+ ],
+ "ref": "battery"
+ },
+ {
+ "type": "card",
+ "fill": -2172721,
+ "width": 170,
+ "height": 90,
+ "isShadow": true
+ },
+ {
+ "type": "textbox",
+ "ref": "device",
+ "isCenter": true,
+ "content": [
+ "\n\n§lDevice"
+ ]
+ },
+ {
+ "type": "card",
+ "fill": -2172721,
+ "width": 170,
+ "height": 133,
+ "isShadow": true
+ }
+ ],
+ "fixed": [
+ {
+ "type": "textbox",
+ "x": 18,
+ "y": 92,
+ "width": 160,
+ "height": 30,
+ "content": [
+ "All §4§lresuable§r batteries can be used as the §lBattery Hardware"
+ ]
+ },
+ {
+ "type": "textbox",
+ "x": 53,
+ "y": 229,
+ "width": 102,
+ "height": 10,
+ "content": [
+ "Wireless transmitter"
+ ]
+ },
+ {
+ "type": "slots",
+ "x": 47,
+ "y": 136,
+ "width": 100,
+ "height": 18,
+ "item_list": [
+ {
+ "id": "gregtech:meta_item_1",
+ "damage": 732,
+ "count": 1
+ },
+ {
+ "id": "gregtech:meta_item_1",
+ "damage": 733,
+ "count": 1
+ },
+ {
+ "id": "gregtech:meta_item_1",
+ "damage": 742,
+ "count": 1
+ },
+ {
+ "id": "gregtech:meta_item_1",
+ "damage": 748,
+ "count": 1
+ },
+ {
+ "id": "gregtech:meta_item_1",
+ "damage": 753,
+ "count": 1
+ }
+ ]
+ },
+ {
+ "type": "slots",
+ "x": -16,
+ "y": 224,
+ "width": 100,
+ "height": 18,
+ "item_list": [
+ {
+ "id": "gregtech:meta_item_1",
+ "damage": 503,
+ "count": 1
+ }
+ ]
+ },
+ {
+ "type": "slots",
+ "x": -16,
+ "y": 250,
+ "width": 100,
+ "height": 18,
+ "item_list": [
+ {
+ "id": "gregtech:meta_item_1",
+ "damage": 466,
+ "count": 1
+ }
+ ]
+ },
+ {
+ "type": "textbox",
+ "x": 52,
+ "y": 253,
+ "width": 100,
+ "height": 10,
+ "content": [
+ "Prospector"
+ ]
+ },
+ {
+ "type": "textbox",
+ "x": 52,
+ "y": 279,
+ "width": 100,
+ "height": 10,
+ "content": [
+ "Solar"
+ ]
+ },
+ {
+ "type": "slots",
+ "x": 10,
+ "y": 325,
+ "width": 48,
+ "height": 18,
+ "item_list": [
+ {
+ "id": "gregtech:meta_item_1",
+ "damage": 467,
+ "count": 1
+ }
+ ]
+ },
+ {
+ "type": "slots",
+ "x": 12,
+ "y": 275,
+ "width": 45,
+ "height": 18,
+ "item_list": [
+ {
+ "id": "gregtech:meta_item_1",
+ "damage": 333,
+ "count": 1
+ }
+ ]
+ },
+ {
+ "type": "slots",
+ "x": 22,
+ "y": 302,
+ "width": 25,
+ "height": 18,
+ "item_list": [
+ {
+ "id": "gregtech:meta_item_1",
+ "damage": 504,
+ "count": 1
+ }
+ ]
+ },
+ {
+ "type": "textbox",
+ "x": 52,
+ "y": 306,
+ "width": 100,
+ "height": 10,
+ "content": [
+ "Camera"
+ ]
+ },
+ {
+ "type": "textbox",
+ "x": 51,
+ "y": 325,
+ "width": 100,
+ "height": 20,
+ "content": [
+ "Advanced Prospector"
+ ]
+ }
+ ]
+}
diff --git a/config/gregtech/terminal/guide/tutorials/zh_cn/crafttweaker/terminal/ct_terminal_01.json b/config/gregtech/terminal/guide/tutorials/zh_cn/crafttweaker/terminal/ct_terminal_01.json
new file mode 100644
index 0000000..d787b38
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/zh_cn/crafttweaker/terminal/ct_terminal_01.json
@@ -0,0 +1,107 @@
+{
+ "section": "CraftTweaker/终端",
+ "title": "终端的CT教程",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "目录:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "§1§lURL:§r§n https://github.com/Gregicality/GregTech/wiki/CraftTweaker-of-Terminal"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "api",
+ "isShadow": false,
+ "content": [
+ "§4§lAPI:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "fontSize": 9,
+ "content": [
+ "1. §1registerDevice(deviceItemStack, deviceName)§0:\n注册自定义设备。\n\n2. §1createAppRegistryBuilder(appName):\n§0根据应用名称(可从商店获取)获得构造器。\n\n3. §1isDefaultApp(default):\n§0设置为默认应用。\n\n4. §1battery(euTier, cost):\n§0为所有层级设置相同的电池要求。\n\n5. §1battery(appTier, euTier, cost):\n§0为特定等级设置电池要求。\n\n6. §1device(deviceName...):\n§0为所有等级设置设备要求。 (默认可用设备: \"scanner\", \"wireless\", \"camera\", \"solar_lv\").\n\n7. §1device(appTier, device...):\n§0为特定等级设置设备要求。\n\n8. §1upgrade(upgradeItemStack...):\n§0设置所有等级的升级要求。\n\n9. §1upgrade(appTier, upgradeItemStack...):\n§0设置特定等级的升级和要求。\n\n10. §1build():\n§0完成并注册。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "demo",
+ "space": 1,
+ "content": [
+ "\n§4§lZS Demo:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "fill": -912478525,
+ "fontSize": 9,
+ "content": [
+ "import mods.gregtech.TerminalRegistry;\n\nTerminalRegistry.registerDevice(\u003core:ingotIron\u003e.firstItem, \"ingot_iron\");\n\nTerminalRegistry.createAppRegistryBuilder(\"ore_prospector\")\n .isDefaultApp(true)\n .battery(1, 500)\n .battery(3, 3, 1000)\n .device(\"camera\", \"wireless\")\n .device(4, \"ingot_iron\")\n .upgrade(\u003cminecraft:apple\u003e * 9)\n .upgrade(2, \u003cminecraft:apple\u003e * 9, \u003cminecraft:grass\u003e * 12)\n .build();"
+ ]
+ },
+ {
+ "type": "textbox",
+ "fontSize": 9,
+ "content": [
+ "§4§l结果:\n§r自定义设备"
+ ]
+ },
+ {
+ "type": "image",
+ "form": "url",
+ "source": "https://user-images.githubusercontent.com/18493855/140280593-37922838-4a20-4e1b-9be9-73935c4c8c13.png",
+ "width": 190,
+ "height": 120
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "注册电池、设备、升级"
+ ]
+ },
+ {
+ "type": "image",
+ "form": "url",
+ "source": "https://user-images.githubusercontent.com/18493855/140280587-84dc8f67-6dde-472f-9ed8-6a4c5e71abc4.png",
+ "width": 190,
+ "height": 120
+ },
+ {
+ "type": "image",
+ "form": "url",
+ "source": "https://user-images.githubusercontent.com/18493855/140280590-d4700a88-5780-4e0f-95f8-130e82f4634a.png",
+ "width": 190,
+ "height": 120
+ }
+ ],
+ "fixed": [
+ {
+ "type": "textbox",
+ "x": 27,
+ "y": 24,
+ "width": 16,
+ "height": 10,
+ "link": "api",
+ "content": [
+ "§9§napi"
+ ]
+ },
+ {
+ "type": "textbox",
+ "x": 41,
+ "y": 24,
+ "width": 25,
+ "height": 10,
+ "link": "demo",
+ "content": [
+ "§9§ndemo"
+ ]
+ }
+ ]
+}
diff --git a/config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_0_guidepage.json b/config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_0_guidepage.json
new file mode 100644
index 0000000..c501c92
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_0_guidepage.json
@@ -0,0 +1,148 @@
+{
+ "section": "指南页控件API",
+ "title": "指南页",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "这一页我们将学习如何编写指南页。",
+ "-------------------------------",
+ "先看一看一个简单里指南页示例。",
+ "§lJSON§r:",
+ "{",
+ " \"section\": \"section name here\",",
+ " \"title\": \"title here\",",
+ " \"stream\": [",
+ " {",
+ " \"type\": \"textbox\",",
+ " \"content\": [\"TextBox widget\"]",
+ " }",
+ " ],",
+ " \"fixed\": [",
+ " {",
+ " \"x\": 50,",
+ " \"y\": 100,",
+ " \"width\": 150,",
+ " \"height\": 40,",
+ " \"type\": 0,",
+ " \"content\": [\"TextBox widget\"]",
+ " }",
+ " ]",
+ "}",
+ "-------------------------------",
+ "§l目录§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "section",
+ "content": [
+ " 1.§nsection§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "title",
+ "content": [
+ " 2.§ntitle§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "stream",
+ "content": [
+ " 3.§nstream§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "fixed",
+ "content": [
+ " 4.§nfixed§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "section",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nsection§r (§4必须§r)",
+ "§l类型§r: String",
+ "§l说明§r: 指定页面属于哪个章节。",
+ "指南App会自动合并具有相同节名的页面并构建目录树。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "title",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §ntitle§r (§4必须§r)",
+ "§l类型§r: String",
+ "§l说明§r: 页标题。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "stream",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nstream§r (§4必须§r)",
+ "§l类型§r: Array",
+ "§l说明§r: 属于流布局的控件。 你不需要关心控件在流中的位置和大小,所有的排版都会自动完成。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "fixed",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nfixed§r (§4必须§r)",
+ "§l类型§r: Array",
+ "§l说明§r: 属于固定布局的控件。 您需要指定每个控件的位置和大小。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: 固定布局和流布局"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "hover_text": ["流布局"],
+ "content": [
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ }
+ ],
+ "fixed": [
+ {
+ "type": "image",
+ "x": 30,
+ "y": 800,
+ "stroke": 4278190335,
+ "hover_text": ["固定布局", "\"x\": 30","\"y\": 800","\"width\": 100","\"width\": 100"],
+ "form": "item",
+ "source": "minecraft:ender_pearl",
+ "width": 100,
+ "height": 100
+ }
+ ]
+}
diff --git a/config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_1_widget.json b/config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_1_widget.json
new file mode 100644
index 0000000..a1575f6
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_1_widget.json
@@ -0,0 +1,304 @@
+{
+ "section": "指南页控件API",
+ "title": "控件",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "这里我们将学习什么是 §4§l控件§r, 以及它的公共属性。",
+ "控件被渲染在指南页中,是一切的基础。 §n文本控件§r, §n图片控件§r, 等等",
+ "要使用控件,只需要将对应的控件配置写在 §l\"fixed\"§r 或者 §l\"stream\"§r下即可。",
+ "有一些公共属性、效果(样式)对所有控件都有效。",
+ "-------------------------------",
+ "§lJSON§r:",
+ "{",
+ " \"type\": \"type here\",",
+ " \"x\": 50,",
+ " \"y\": 100,",
+ " \"width\": 150,",
+ " \"height\": 40,",
+ " \"ref\": \"ref\",",
+ " \"stroke\": 0,",
+ " \"stroke_width\": 1,",
+ " \"fill\": 0,",
+ " \"link\": \"ref\"",
+ " \"hover_text\": [\"text here\"]",
+ "}",
+ "-------------------------------",
+ "§l目录§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "type",
+ "content": [
+ " 1.§ntype§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "xywh",
+ "content": [
+ " 2.§nx, y, width, height§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "ref",
+ "content": [
+ " 3.§nref§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "fill",
+ "content": [
+ " 4.§nfill§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "stroke",
+ "content": [
+ " 5.§nstroke§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "stroke_width",
+ "content": [
+ " 6.§nstroke_width§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "link",
+ "content": [
+ " 7.§nlink§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "hover",
+ "content": [
+ " 8.§nhover_text§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "type",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §ntype§r (§4必须§r)",
+ "§l类型§r: String",
+ "§l说明§r: 控件类型的唯一标识。通过api文档可以查看控件对应的控件类型标识。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "xywh",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nx, y, width, height§r (§4可选§r)",
+ "§l类型§r: Integer",
+ "§l说明§r: 控件的位置和大小。 在流布局中,通常不需要设置它(图片控件需要设置宽度和高度)。 在固定布局下,你必须设置这四个属性。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "ref",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nref§r (§4可选§r)",
+ "§l类型§r: String",
+ "§l缺省值§r: null",
+ "§l说明§r: 这是这个控件的一个引用标记。 同一页中的引用标记应该是唯一的。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "fill",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nfill§r (§6可选§r)",
+ "§l类型§r: Number",
+ "§l缺省值§r: 0",
+ "§l说明§r: 背景颜色。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: 4278190335 (0xFF0000FF)"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "fill": 4278190335,
+ "content": [
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "stroke",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nstroke§r (§6可选§r)",
+ "§l类型§r: Number",
+ "§l缺省值§r: 0",
+ "§l说明§r: 边框颜色"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: 4278190335 (0xFF0000FF)"
+ ]
+ },
+ {
+ "type": "image",
+ "form": "item",
+ "source": "minecraft:ender_pearl",
+ "stroke": 4278190335,
+ "width": 50,
+ "height": 50
+ },
+ {
+ "type": "textbox",
+ "ref": "stroke_width",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nstroke_width§r (§6可选§r)",
+ "§l类型§r: Number",
+ "§l缺省值§r: 1",
+ "§l说明§r: 边框宽度。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: 5"
+ ]
+ },
+ {
+ "type": "image",
+ "form": "item",
+ "source": "minecraft:ender_pearl",
+ "stroke": 4278190335,
+ "stroke_width": 5,
+ "width": 50,
+ "height": 50
+ },
+ {
+ "type": "textbox",
+ "ref": "link",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nlink§r (§6可选§r)",
+ "§l类型§r: String",
+ "§l缺省值§r: null",
+ "§l说明§r: 单击可跳转到指定引用的位置。需要与引用标记一起使用,目标是ref。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: \"P2\""
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "fill": 4286430975,
+ "hover_text": ["\"ref\": \"P1\""],
+ "ref": "P1",
+ "link": "P2",
+ "content": ["点我!"]
+ },
+ {
+ "type": "textbox",
+ "content": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: \"P1\""
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "fill": 4286430975,
+ "hover_text": ["\"ref\": \"P2\""],
+ "ref": "P2",
+ "link": "P1",
+ "content": ["点我!"]
+ },
+ {
+ "type": "textbox",
+ "ref": "hover",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nhover_text§r (§6可选§r)",
+ "§l类型§r: Array",
+ "§l缺省值§r: null",
+ "§l说明§r: 鼠标悬停时的展示文本。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: [\"这是\",\"GT图标\"]"
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["这是","GT图标"],
+ "form": "resource",
+ "source": "gregtech:textures/gui/icon/gregtech_logo.png",
+ "width": 100,
+ "height": 100
+ }
+ ],
+ "fixed": []
+}
diff --git a/config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_2_textbox.json b/config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_2_textbox.json
new file mode 100644
index 0000000..83c645b
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_2_textbox.json
@@ -0,0 +1,256 @@
+{
+ "section": "指南页控件API",
+ "title": "1. 文本控件",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "我们将学习指南中最常用的控件 §4§l文本控件§r。 因此,您应该仔细阅读API文档。",
+ "-------------------------------",
+ "§l控件类型标识§r: §ntextbox§r",
+ "-------------------------------",
+ "§lJSON§r:",
+ "{",
+ " \"type\": \"textbox\",",
+ " \"space\": 1,",
+ " \"fontSize\": 9,",
+ " \"fontColor\": 4278190080,",
+ " \"isCenter\": false,",
+ " \"isShadow\": false,",
+ " \"content\": [\"content here!\"]",
+ "}",
+ "-------------------------------",
+ "§l目录§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "content",
+ "content": [
+ " 1.§ncontent§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "space",
+ "content": [
+ " 2.§nspace§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "fontSize",
+ "content": [
+ " 3.§nfontSize§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "fontColor",
+ "content": [
+ " 4.§nfontColor§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "isCenter",
+ "content": [
+ " 5.§nisCenter§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "isShadow",
+ "content": [
+ " 6.§nisShadow§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "content",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §ncontent§r (§4必须§r)",
+ "§l类型§r: Array",
+ "§l说明§r: 文本内容数组,每一项都会换行。 文本太长会自动换行。 (支持Minecraft格式代码) "
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "stroke": 4294901760,
+ "content": [
+ "§l示例§r: [...]",
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "space",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nspace§r (§6可选§r)",
+ "§l类型§r: Number",
+ "§l缺省值§r: 1",
+ "§l说明§r: 文本行之间的间隔。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "stroke": 4294901760,
+ "space": 5,
+ "content": [
+ "§l示例§r: 5",
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ },{
+ "type": "textbox",
+ "ref": "fontSize",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nfontSize§r (§6可选§r)",
+ "§l类型§r: Number",
+ "§l缺省值§r: 9",
+ "§l说明§r: 字体大小。(实际上是字体的高度)"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "stroke": 4294901760,
+ "fontSize": 5,
+ "content": [
+ "§l示例§r: 5",
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ },{
+ "type": "textbox",
+ "ref": "fontColor",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nfontColor§r (§6可选§r)",
+ "§l类型§r: Number",
+ "§l缺省值§r: 4278190080",
+ "§l说明§r: 文本的默认颜色。你也可以用特殊的符号设置颜色(Minecraft提供的)。但也许有时候你需要它。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "stroke": 4294901760,
+ "fontColor": 5,
+ "content": [
+ "§l示例§r: 4294901760 (0xFFFF0000)",
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "isCenter",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nisCenter§r (§6可选§r)",
+ "§l类型§r: Boolean",
+ "§l缺省值§r: false",
+ "§l说明§r: 文本水平居中。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": false,
+ "stroke": 4294901760,
+ "content": [
+ "§l示例§r: false",
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ },{
+ "type": "textbox",
+ "ref": "isShadow",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nisShadow§r (§6可选§r)",
+ "§l类型§r: Boolean",
+ "§l缺省值§r: false",
+ "§l说明§r: 渲染文本阴影。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "stroke": 4294901760,
+ "isShadow": true,
+ "content": [
+ "§l示例§r: true",
+ "§nMinecraft Formatting",
+ "§r§00 §11 §22 §33",
+ "§44 §55 §66 §77",
+ "§88 §99 §aa §bb",
+ "§cc §dd §ee §ff",
+ "§r§0k §kMinecraft",
+ "§rl §lMinecraft",
+ "§rm §mMinecraft",
+ "§rn §nMinecraft",
+ "§ro §oMinecraft",
+ "§rr §rMinecraft"
+ ]
+ }
+ ],
+ "fixed": []
+}
diff --git a/config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_3_image.json b/config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_3_image.json
new file mode 100644
index 0000000..9098438
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/zh_cn/guide_widget_api/api_3_image.json
@@ -0,0 +1,207 @@
+{
+ "section": "指南页控件API",
+ "title": "2. 图片控件",
+ "stream": [
+ {
+ "type": "textbox",
+ "content": [
+ "我们将学习实用的§4§l图片控件§r。这里支持三种不同形式的图像:§4Url§r, §4Item§r, and §4ResourceLocation§r。别担心,一切都很容易。",
+ "-------------------------------",
+ "§l控件类型标识§r: §nimage§r",
+ "-------------------------------",
+ "§lJSON§r:",
+ "{",
+ " \"type\": \"image\",",
+ " \"form\": \"Item\",",
+ " \"source\": \"minecraft:ender_pearl\",",
+ " \"width\": 100,",
+ " \"height\": 100",
+ "}",
+ "-------------------------------",
+ "§l目录§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "form",
+ "content": [
+ " 1.§nform§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "source",
+ "content": [
+ " 2.§nsource§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "link": "wh",
+ "content": [
+ " 3.§nwidth, height§r"
+ ]
+ },
+ {
+ "type": "textbox",
+ "ref": "form",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nform§r (§4必须§r)",
+ "§l类型§r: String",
+ "§l说明§r: 它只能是 §4Url§r, §4Item§r, 或 §4ResourceLocation§r中的一个。",
+ " \"url\" -- image url.",
+ " \"item\" -- The registered name of the Item in game.",
+ " \"resource\" -- The resource location."
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: \"url\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["https://z3.ax1x.com/2021/07/29/Wb4Djs.gif"],
+ "form": "url",
+ "source": "https://z3.ax1x.com/2021/07/29/Wb4Djs.gif",
+ "stroke": 4278190080,
+ "stroke_width": 2,
+ "width": 100,
+ "height": 100
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: \"item\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["minecraft:ender_pearl"],
+ "form": "item",
+ "source": "minecraft:ender_pearl",
+ "width": 100,
+ "height": 100
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: \"resource\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["gregtech:textures/gui/icon/coke_oven.png"],
+ "form": "resource",
+ "source": "gregtech:textures/gui/icon/coke_oven.png",
+ "width": 100,
+ "height": 100
+ },
+ {
+ "type": "textbox",
+ "ref": "source",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nsource§r (§4必须§r)",
+ "§l类型§r: String",
+ "§l说明§r: The source of the picture. The three images above correspond to the following sources:"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: \"https://z3.ax1x.com/2021/07/29/Wb4Djs.gif\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["https://z3.ax1x.com/2021/07/29/Wb4Djs.gif"],
+ "form": "url",
+ "source": "https://z3.ax1x.com/2021/07/29/Wb4Djs.gif",
+ "stroke": 4278190080,
+ "stroke_width": 2,
+ "width": 100,
+ "height": 100
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: \"minecraft:ender_pearl\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["minecraft:ender_pearl"],
+ "form": "item",
+ "source": "minecraft:ender_pearl",
+ "width": 100,
+ "height": 100
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: \"gregtech:textures/gui/icon/coke_oven.png\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["gregtech:textures/gui/icon/coke_oven.png"],
+ "form": "resource",
+ "source": "gregtech:textures/gui/icon/coke_oven.png",
+ "width": 100,
+ "height": 100
+ },
+ {
+ "type": "textbox",
+ "ref": "wh",
+ "content": [
+ "-------------------------------",
+ "",
+ "§l属性§r: §nwidth, height§r (§4必须§r)",
+ "§l类型§r: Integer",
+ "§l说明§r: 图片尺寸。"
+ ]
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: \"50, 50\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["minecraft:ender_pearl"],
+ "form": "item",
+ "source": "minecraft:ender_pearl",
+ "width": 50,
+ "height": 50
+ },
+ {
+ "type": "textbox",
+ "isCenter": true,
+ "content": [
+ "§l示例§r: \"100, 50\""
+ ]
+ },
+ {
+ "type": "image",
+ "hover_text": ["minecraft:ender_pearl"],
+ "form": "item",
+ "source": "minecraft:ender_pearl",
+ "width": 100,
+ "height": 50
+ }
+ ],
+ "fixed": []
+}
diff --git a/config/gregtech/terminal/guide/tutorials/zh_cn/resource_pack/emissive_texture.json b/config/gregtech/terminal/guide/tutorials/zh_cn/resource_pack/emissive_texture.json
new file mode 100644
index 0000000..dfef1a0
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/zh_cn/resource_pack/emissive_texture.json
@@ -0,0 +1 @@
+{"section":"资源包","title":"自定义发光材质","stream":[{"type":"textbox","content":["开发人员和资源包作者可以很容易地有发光材质和设置泛光效果。\n\n§l目录:"]},{"type":"textbox","link":"emissive","content":["1. §1发光材质"]},{"type":"textbox","link":"bloom","content":["2.§1 泛光"]},{"type":"textbox","link":"demo","content":["3. §1示例"]},{"type":"textbox","ref":"emissive","content":["§l发光材质"]},{"type":"textbox","content":["* 对于常规模型: 与§4CTM§r相似,你只需要为你想要有发射效果的材质配置mcmeta文件即可。"]},{"type":"card","fill":-3745585,"width":190,"height":100,"isShadow":true},{"type":"textbox","content":["这里的§2light §r表示它发出的默认光级别(从0~15)。另外,你也可以像CTM一样把sky和block分开设置。"]},{"type":"textbox","content":["* 对于CEu机器: 他们材质大多数在 assets/textures/blocks/machines 和 assets/textures/overlay/machines下。 你不需要为他们设置mcmeta文件。只需为发光部分添加一个名为 \"XXX_emissive.png\"的材质即可。"]},{"type":"textbox","content":["§l泛光"],"ref":"bloom"},{"type":"textbox","content":["* 对于CEu机器: 你不需要修改任何东西,所有发光的材质都自带泛光。\n\n* 对于基本模型: 你只需要在mcmeta文件中添加额外的一行。 (§2\"layer\"§r: \"BLOOM\")"]},{"type":"card","fill":-3745585,"width":190,"height":110,"isShadow":true},{"type":"textbox","ref":"demo","content":["§l示例"]},{"type":"image","form":"url","source":"https://user-images.githubusercontent.com/18493855/138578815-d2d4e357-8080-4d57-b8ac-61235eac8c2a.png","width":190,"height":130},{"type":"image","form":"url","source":"https://user-images.githubusercontent.com/18493855/138578838-b9e6a16d-e348-4fea-8ab4-8a940e1ecd0f.png","width":190,"height":100},{"type":"image","form":"url","source":"https://user-images.githubusercontent.com/18493855/138578853-9a2497f4-e1f5-45e9-ab64-26b5eb859139.png","width":190,"height":110}],"fixed":[{"type":"textbox","x":8,"y":171,"width":181,"height":90,"content":["{\n §2\"ctm\"§r: {\n §2\"ctm_version\"§r: 1,\n §2\"gregtech:§r true,\n §2\"extra\"§r: {\n §2\"light\"§r: 15\n }\n }\n}"]},{"type":"textbox","x":7,"y":466,"width":181,"height":100,"content":["{\n §2\"ctm\"§r: {\n §2\"ctm_version\"§r: 1,\n §2\"layer\"§r: \"BLOOM\",\n §2\"gregtech\"§r true,\n §2\"extra\"§r: {\n §2\"light\"§r: 15\n }\n }\n}"]}]}
diff --git a/config/gregtech/terminal/guide/tutorials/zh_cn/terminal/terminal_hardware.json b/config/gregtech/terminal/guide/tutorials/zh_cn/terminal/terminal_hardware.json
new file mode 100644
index 0000000..ebfa564
--- /dev/null
+++ b/config/gregtech/terminal/guide/tutorials/zh_cn/terminal/terminal_hardware.json
@@ -0,0 +1 @@
+{"section":"终端","title":"Hardware","stream":[{"type":"textbox","content":["Current supported §4§lhardware§r:"]},{"type":"textbox","link":"battery","content":[" 1.§nBattery"]},{"type":"textbox","link":"device","content":[" 2.§nDevice"]},{"type":"textbox","isCenter":true,"isShadow":false,"content":["§lBattery"],"ref":"battery"},{"type":"card","fill":-2172721,"width":170,"height":90,"isShadow":true},{"type":"textbox","ref":"device","isCenter":true,"content":["\n\n§lDevice"]},{"type":"card","fill":-2172721,"width":170,"height":113,"isShadow":true}],"fixed":[{"type":"textbox","x":18,"y":92,"width":160,"height":30,"content":["All §4§lresuable§r batteries could be used as the §lBattery Hardware"]},{"type":"textbox","x":53,"y":229,"width":102,"height":10,"content":["Wireless transmitter"]},{"type":"slots","x":47,"y":136,"width":100,"height":18,"item_list":[{"id":"gregtech:meta_item_1","damage":732,"count":1},{"id":"gregtech:meta_item_1","damage":733,"count":1},{"id":"gregtech:meta_item_1","damage":742,"count":1},{"id":"gregtech:meta_item_1","damage":748,"count":1},{"id":"gregtech:meta_item_1","damage":753,"count":1}]},{"type":"slots","x":-16,"y":224,"width":100,"height":18,"item_list":[{"id":"gregtech:meta_item_1","damage":468,"count":1}]},{"type":"slots","x":-16,"y":250,"width":100,"height":18,"item_list":[{"id":"gregtech:meta_item_1","damage":465,"count":1}]},{"type":"textbox","x":52,"y":253,"width":100,"height":10,"content":["Scanner"]},{"type":"textbox","x":52,"y":279,"width":100,"height":10,"content":["Solar"]},{"type":"slots","x":12,"y":275,"width":45,"height":18,"item_list":[{"id":"gregtech:meta_item_1","damage":333,"count":1}]},{"type":"slots","x":22,"y":302,"width":25,"height":18,"item_list":[{"id":"gregtech:meta_item_1","damage":469,"count":1}]},{"type":"textbox","x":52,"y":306,"width":100,"height":10,"content":["Camera"]}]}