* artisan table merging (#2766) * these should be good * Update recipes.miscellaneous.js * little typo Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com> * fix typo, my bad gang * fix charnia * fixed recycling issues from the material rewrite, updated everything to the new recycling helper method * I'll move these eventually --------- Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com> Co-authored-by: Pyritie <pyritie@gmail.com> * artisan table assets * asset update * Update recipes.artisan_table.js * asset update * lang * tag refactor * waiter! more assets please * recipes * done? * I forgor --------- Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com> Co-authored-by: GameStar <56610486+BlueBoat29@users.noreply.github.com> Co-authored-by: Pyritie <pyritie@gmail.com>
572 lines
12 KiB
JavaScript
572 lines
12 KiB
JavaScript
// priority: 0
|
|
"use strict";
|
|
|
|
function registerTFGArtisanTableRecipes(event) {
|
|
|
|
// Removals (`type` didnt want to work here).
|
|
event.remove({ id: /gtceu:shaped\/shape_.*/, input: 'gtceu:empty_mold'});
|
|
event.remove({ id: /gtceu:shaped\/shape_.*/, input: /gtceu:.*_extruder_mold/});
|
|
event.remove({ id: 'gtceu:shaped/basic_circuit_board'});
|
|
event.remove({ id: 'gtceu:shaped/good_circuit_board'});
|
|
|
|
//Table Recipe
|
|
TFGHelpers.registerMaterialInfo('tfg:artisan_table', [GTMaterials.WroughtIron, 6, GTMaterials.Wood, 3, GTMaterials.Copper, 1/9])
|
|
|
|
event.shaped('tfg:artisan_table', [
|
|
'CBC',
|
|
'AAA',
|
|
'B B'
|
|
], {
|
|
A: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.WroughtIron, 1),
|
|
B: 'firmalife:treated_wood',
|
|
C: '#forge:screws/any_bronze'
|
|
}).id('tfg:shaped/artisan_table');
|
|
|
|
//#region Molds
|
|
|
|
/**
|
|
* Mold pattern definitions.
|
|
* @param {string} name - Base id of the mold item.
|
|
* @param {boolean} genCast - Whether to generate a casting mold recipe.
|
|
* @param {boolean} genExtrude - Whether to generate an extruder mold recipe.
|
|
* @param {string[]} pattern - 6x6 pattern for the mold. 'X' for solid, ' ' for empty.
|
|
* @type {{name: string, genCast: boolean, genExtrude: boolean, pattern: string[]}[]} moldPatterns
|
|
*/
|
|
const moldPatterns = [
|
|
{ name: 'tfg:lamp', genCast: true, genExtrude: false, pattern: [
|
|
"XX XX",
|
|
"X X",
|
|
"X XX X",
|
|
"X XX X",
|
|
"X XX X",
|
|
"X X"
|
|
]},
|
|
{ name: 'tfg:trapdoor', genCast: true, genExtrude: false, pattern: [
|
|
" ",
|
|
" XXXX ",
|
|
" ",
|
|
" ",
|
|
" XXXX ",
|
|
" "
|
|
]},
|
|
{ name: 'tfg:chain', genCast: true, genExtrude: false, pattern: [
|
|
"X X",
|
|
"X XX X",
|
|
"X X",
|
|
"XX XX",
|
|
"X X",
|
|
"X XX X"
|
|
]},
|
|
{ name: 'tfg:bell', genCast: true, genExtrude: false, pattern: [
|
|
"XX XX",
|
|
"X X",
|
|
"X X",
|
|
"X X",
|
|
" ",
|
|
" "
|
|
]},
|
|
{ name: 'gtceu:plate', genCast: true, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"X X",
|
|
"X X",
|
|
"X X",
|
|
"X X",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'gtceu:gear', genCast: true, genExtrude: true, pattern: [
|
|
"XX XX",
|
|
"X X",
|
|
" XX ",
|
|
" XX ",
|
|
"X X",
|
|
"XX XX"
|
|
]},
|
|
{ name: 'gtceu:bottle', genCast: true, genExtrude: true, pattern: [
|
|
"X X",
|
|
"XX XX",
|
|
"XX XX",
|
|
"X X",
|
|
"X X",
|
|
"X X"
|
|
]},
|
|
{ name: 'gtceu:ingot', genCast: true, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"XX XX",
|
|
"XX XX",
|
|
"XX XX",
|
|
"XX XX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'gtceu:ball', genCast: true, genExtrude: false, pattern: [
|
|
"XXXXXX",
|
|
"XX XX",
|
|
"X X",
|
|
"X X",
|
|
"XX XX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'gtceu:cylinder', genCast: true, genExtrude: false, pattern: [
|
|
"XX XX",
|
|
"X X",
|
|
" ",
|
|
" ",
|
|
"X X",
|
|
"XX XX"
|
|
]},
|
|
{ name: 'gtceu:block', genCast: true, genExtrude: true, pattern: [
|
|
" ",
|
|
" ",
|
|
" ",
|
|
" ",
|
|
" ",
|
|
" "
|
|
]},
|
|
{ name: 'gtceu:nugget', genCast: true, genExtrude: false, pattern: [
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
"XX XXX",
|
|
"XX XXX",
|
|
"XXXXXX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'gtceu:anvil', genCast: true, genExtrude: false, pattern: [
|
|
" ",
|
|
" ",
|
|
"X X",
|
|
"XX XX",
|
|
"X X",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'gtceu:name', genCast: true, genExtrude: false, pattern: [
|
|
"XXXXXX",
|
|
"X X X ",
|
|
" X X X",
|
|
"X X X ",
|
|
"XXXXXX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'gtceu:small_gear', genCast: true, genExtrude: true, pattern: [
|
|
"XXX XX",
|
|
"XX X",
|
|
"X X ",
|
|
"XX X",
|
|
"XXX XX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'gtceu:rotor', genCast: true, genExtrude: true, pattern: [
|
|
" XXXX ",
|
|
"X XX X",
|
|
"XX XX",
|
|
"XX XX",
|
|
"X XX X",
|
|
" XXXX "
|
|
]},
|
|
{ name: 'gtceu:pill', genCast: true, genExtrude: false, pattern: [
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
"XX XX",
|
|
"X XX",
|
|
"X XXX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'gtceu:huge_pipe', genCast: true, genExtrude: true, pattern: [
|
|
" ",
|
|
" XXXX ",
|
|
" XXXX ",
|
|
" XXXX ",
|
|
" XXXX ",
|
|
" "
|
|
]},
|
|
|
|
{ name: 'gtceu:rod', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
"XX XX",
|
|
"XX XX",
|
|
"XXXXXX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'gtceu:bolt', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
"XX X",
|
|
"XXX XX",
|
|
"XXX XX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'gtceu:ring', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"XX XX",
|
|
"X XX X",
|
|
"X XX X",
|
|
"XX XX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'gtceu:cell', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"XX X",
|
|
"X XX X",
|
|
"X XX X",
|
|
"X XX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'gtceu:wire', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"XX XXX",
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
"XXX XX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'gtceu:foil', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
" ",
|
|
"XXXXXX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'tfg:small_casing', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
"X X X ",
|
|
"XXXXXX",
|
|
"X X X ",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'tfg:shell_casing', genCast: false, genExtrude: true, pattern: [
|
|
" XXXX",
|
|
" XXXX",
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
"XXXX ",
|
|
"XXXX "
|
|
]},
|
|
{ name: 'tfg:large_casing', genCast: false, genExtrude: true, pattern: [
|
|
"XX XX",
|
|
"XX XX",
|
|
" XXXX",
|
|
" XXXX",
|
|
"XXXX ",
|
|
"XXXX "
|
|
]},
|
|
|
|
//Tools
|
|
{ name: 'tfg:mining_hammer_head', genCast: false, genExtrude: true, pattern: [
|
|
" XXXXX",
|
|
" X",
|
|
" ",
|
|
" X",
|
|
" XXXXX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'tfg:sword_head', genCast: false, genExtrude: true, pattern: [
|
|
" XXXX",
|
|
" XXX",
|
|
"X XX",
|
|
"XX X",
|
|
"XXX X",
|
|
"XXXXX "
|
|
]},
|
|
{ name: 'tfg:pickaxe_head', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
"X X",
|
|
" XXXX ",
|
|
"XXXXXX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'tfg:shovel_head', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"X X",
|
|
"X X",
|
|
"X X",
|
|
"XX XX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'tfg:axe_head', genCast: false, genExtrude: true, pattern: [
|
|
"X XXXX",
|
|
" X",
|
|
" ",
|
|
" X",
|
|
"X XXXX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'tfg:hoe_head', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
" ",
|
|
" XXXX",
|
|
"XXXXXX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'tfg:scythe_head', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"X ",
|
|
" XX",
|
|
" XXXX",
|
|
"XXXXXX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'tfg:file_head', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"XX XXX",
|
|
"XX XXX",
|
|
"XX XXX",
|
|
"XX XXX",
|
|
"XX XXX"
|
|
]},
|
|
{ name: 'tfg:hammer_head', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
" ",
|
|
" ",
|
|
"XX XX",
|
|
"XXXXXX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'tfg:saw_head', genCast: false, genExtrude: true, pattern: [
|
|
" XXXX",
|
|
" XXX",
|
|
"X XX",
|
|
"X X",
|
|
"XX ",
|
|
"XXXX "
|
|
]},
|
|
{ name: 'tfg:knife_head', genCast: false, genExtrude: true, pattern: [
|
|
"XXX XX",
|
|
"XX XX",
|
|
"XX XX",
|
|
"XX XX",
|
|
"XX XX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'tfg:butchery_knife_head', genCast: false, genExtrude: true, pattern: [
|
|
"X XXXX",
|
|
"X XXXX",
|
|
"X XX",
|
|
"X X",
|
|
"X X X",
|
|
"X X"
|
|
]},
|
|
{ name: 'tfg:spade_head', genCast: false, genExtrude: true, pattern: [
|
|
"X X",
|
|
"X X",
|
|
"X X",
|
|
"X X",
|
|
"XX XX",
|
|
"XX XX"
|
|
]},
|
|
{ name: 'tfg:propick_head', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
" X",
|
|
" XXXX ",
|
|
" XXXXX",
|
|
"XXXXXX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'tfg:javelin_head', genCast: false, genExtrude: true, pattern: [
|
|
" XXX",
|
|
" XX",
|
|
" X",
|
|
"X ",
|
|
"XX X",
|
|
"XXX XX"
|
|
]},
|
|
{ name: 'tfg:chisel_head', genCast: false, genExtrude: true, pattern: [
|
|
"XXX XX",
|
|
"XXX XX",
|
|
"XXX XX",
|
|
"XXX XX",
|
|
"XXX XX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'tfg:mace_head', genCast: false, genExtrude: true, pattern: [
|
|
"XX XX",
|
|
"X X",
|
|
"X X",
|
|
"X X",
|
|
"X X",
|
|
"XX XX"
|
|
]},
|
|
{ name: 'tfg:mattock_head', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
" X",
|
|
" XX ",
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'tfg:fish_hook', genCast: false, genExtrude: true, pattern: [
|
|
"XXX XX",
|
|
"XXXX X",
|
|
"X XX X",
|
|
"X XX X",
|
|
"XX XX",
|
|
"XXXXXX"
|
|
]},
|
|
{ name: 'tfg:whisk', genCast: false, genExtrude: true, pattern: [
|
|
" X X ",
|
|
"XX XX",
|
|
" XX ",
|
|
" XX ",
|
|
"XX XX",
|
|
" X X "
|
|
]},
|
|
{ name: 'tfg:screwdriver_tip', genCast: false, genExtrude: true, pattern: [
|
|
"XX X",
|
|
"XXX XX",
|
|
"XX X",
|
|
"XXX XX",
|
|
"XXX XX",
|
|
"XXX XX"
|
|
]},
|
|
{ name: 'tfg:wrench_tip', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"XX XXX",
|
|
"XX XXX",
|
|
"XX XXX",
|
|
"XX XXX",
|
|
"X XX"
|
|
]},
|
|
{ name: 'tfg:wire_cutter_head', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"XX X",
|
|
"X X X",
|
|
"X XXX",
|
|
"X XXX",
|
|
"XXXXXX"
|
|
]}
|
|
|
|
/*
|
|
,
|
|
{ name: 'tfg:', genCast: false, genExtrude: true, pattern: [
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
"XXXXXX",
|
|
"XXXXXX"
|
|
]}
|
|
*/
|
|
];
|
|
|
|
/** Checks for duplicate patterns for the same mold type. */
|
|
function patternsEqual(p1, p2) {
|
|
for (let i = 0; i < p1.length; i++) {
|
|
if (p1[i] !== p2[i]) return false;
|
|
};
|
|
return true;
|
|
};
|
|
/** Checks for duplicate mirrored patterns for the same mold type. */
|
|
function patternsMirrorEqual(p1, p2) {
|
|
for (let i = 0; i < p1.length; i++) {
|
|
if (p1[i] !== p2[i].split('').reverse().join('')) return false;
|
|
};
|
|
return true;
|
|
};
|
|
// Error logging for duplicate patterns.
|
|
let patternsChecked = [];
|
|
for (let i = 0; i < moldPatterns.length; i++) {
|
|
for (let j = i + 1; j < moldPatterns.length; j++) {
|
|
|
|
let a = moldPatterns[i];
|
|
let b = moldPatterns[j];
|
|
let shareCast = a.genCast && b.genCast;
|
|
let shareExtrude = a.genExtrude && b.genExtrude;
|
|
|
|
if (shareCast || shareExtrude) {
|
|
if (patternsEqual(a.pattern, b.pattern) || patternsMirrorEqual(a.pattern, b.pattern)) {
|
|
patternsChecked.push({a: a.name, b: b.name});
|
|
};
|
|
};
|
|
};
|
|
};
|
|
if (patternsChecked.length !== 0) {
|
|
throw new Error(
|
|
`Duplicate artisan table mold patterns detected between: ${patternsChecked.map(pair => `\n${pair.a} and ${pair.b}`).join(', ')}`
|
|
);
|
|
};
|
|
|
|
// Create Artisan Table recipes for molds.
|
|
moldPatterns.forEach((mold) => {
|
|
if (mold.genCast){
|
|
event.custom({
|
|
"result": {"item": `${mold.name}_casting_mold`},
|
|
"pattern": mold.pattern,
|
|
"artisanType": "tfg:casting_mold",
|
|
"type": "tfg:artisan"
|
|
}).id(`tfg:artisan_table/${linuxUnfucker(mold.name)}_casting_mold`);
|
|
};
|
|
if (mold.genExtrude){
|
|
event.custom({
|
|
"result": {"item": `${mold.name}_extruder_mold`},
|
|
"pattern": mold.pattern,
|
|
"artisanType": "tfg:extruder_mold",
|
|
"type": "tfg:artisan"
|
|
}).id(`tfg:artisan_table/${linuxUnfucker(mold.name)}_extruder_mold`);
|
|
};
|
|
});
|
|
|
|
//#endregion
|
|
|
|
//#region Circuits
|
|
|
|
event.custom({
|
|
"result": {"item": "gtceu:resin_printed_circuit_board"},
|
|
"pattern": [
|
|
"X XXXX",
|
|
" XX X",
|
|
"X X X",
|
|
"X XX X",
|
|
" XXX X",
|
|
"XXX X"
|
|
],
|
|
"artisanType": "tfg:resin_board",
|
|
"type": "tfg:artisan"
|
|
}).id(`tfg:artisan_table/resin_printed_circuit_board`);
|
|
|
|
event.custom({
|
|
"result": {"item": "gtceu:resin_printed_circuit_board", "count": 4},
|
|
"pattern": [
|
|
"X XXXX",
|
|
" XX X",
|
|
"X X X",
|
|
"X XX X",
|
|
" XXX X",
|
|
"XXX X"
|
|
],
|
|
"artisanType": "tfg:resin_board_4x",
|
|
"type": "tfg:artisan"
|
|
}).id(`tfg:artisan_table/resin_printed_circuit_board_4x`);
|
|
|
|
event.custom({
|
|
"result": {"item": "gtceu:phenolic_printed_circuit_board"},
|
|
"pattern": [
|
|
"X XX ",
|
|
" XXXX ",
|
|
"XX X ",
|
|
"XX XXX",
|
|
"XX XX ",
|
|
" XX "
|
|
],
|
|
"artisanType": "tfg:phenolic_board",
|
|
"type": "tfg:artisan"
|
|
}).id(`tfg:artisan_table/phenolic_printed_circuit_board`);
|
|
|
|
event.custom({
|
|
"result": {"item": "gtceu:phenolic_printed_circuit_board", "count": 4},
|
|
"pattern": [
|
|
"X XX ",
|
|
" XXXX ",
|
|
"XX X ",
|
|
"XX XXX",
|
|
"XX XX ",
|
|
" XX "
|
|
],
|
|
"artisanType": "tfg:phenolic_board_4x",
|
|
"type": "tfg:artisan"
|
|
}).id(`tfg:artisan_table/phenolic_printed_circuit_board_4x`);
|
|
//#endregion
|
|
|
|
|
|
}
|