Artisan Table (#2857)

* 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>
This commit is contained in:
Redeix 2026-01-25 19:22:50 -06:00 committed by GitHub
parent af57d9a37c
commit 75b0cea000
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
30 changed files with 1170 additions and 331 deletions

View file

@ -26,38 +26,6 @@ function registerTACZMiscRecipes(event) {
['tacz:target', 'minecraft:minecart']
).id('tfg_tacz:target_minecart');
//Molds
event.shaped('tfg:small_casing_extruder_mold',[
' A ',
'B ',
' C'
],{
A: '#forge:tools/wire_cutters',
B: 'gtceu:empty_mold',
C: '#forge:tools/files'
}).id('tfg:small_casing_extruder_mold');
event.shaped('tfg:large_casing_extruder_mold',[
' ',
'AB ',
' C'
],{
A: '#forge:tools/wire_cutters',
B: 'gtceu:empty_mold',
C: '#forge:tools/files'
}).id('tfg:large_casing_extruder_mold');
event.shaped('tfg:shell_casing_extruder_mold',[
' C',
'AB ',
' '
],{
A: '#forge:tools/wire_cutters',
B: 'gtceu:empty_mold',
C: '#forge:tools/files'
}).id('tfg:shell_casing_extruder_mold');
//Mechanisms
event.shaped('tfg:flintlock_mechanism', [
'ABC',

View file

@ -6,278 +6,57 @@
*/
function registerTFGMoldRecipes(event) {
event.shaped('tfg:mining_hammer_head_extruder_mold', [
'Sfh',
' ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:sword_head_extruder_mold', [
'Shf',
' ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:pickaxe_head_extruder_mold', [
'S ',
'hf ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:axe_head_extruder_mold', [
'S ',
' fh',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:hoe_head_extruder_mold', [
'S ',
' hf',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:scythe_head_extruder_mold', [
'S ',
' ',
'fh '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:file_head_extruder_mold', [
'S ',
' ',
'hf '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:hammer_head_extruder_mold', [
'Sf ',
' h ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:saw_head_extruder_mold', [
'Sh ',
' f ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:knife_head_extruder_mold', [
'S f',
' ',
' h'
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:butchery_knife_head_extruder_mold', [
'S h',
' ',
' f'
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:shovel_head_extruder_mold', [
'S ',
'f ',
'h '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:spade_head_extruder_mold', [
'S ',
'f ',
' h'
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:propick_head_extruder_mold', [
'Sxf',
' ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
x: '#forge:tools/wire_cutters'
})
event.shaped('tfg:javelin_head_extruder_mold', [
'S x',
'f ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
x: '#forge:tools/wire_cutters'
})
event.shaped('tfg:chisel_head_extruder_mold', [
'S ',
'xf ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
x: '#forge:tools/wire_cutters'
})
event.shaped('tfg:mace_head_extruder_mold', [
'S ',
' xf',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
x: '#forge:tools/wire_cutters'
})
event.shaped('tfg:lamp_casting_mold', [
'Sh ',
' ',
' m'
], {
S: 'gtceu:empty_mold',
h: '#forge:tools/hammers',
m: '#forge:tools/mallets'
})
event.shaped('tfg:trapdoor_casting_mold', [
'S h',
' ',
' m'
], {
S: 'gtceu:empty_mold',
h: '#forge:tools/hammers',
m: '#forge:tools/mallets'
})
event.shaped('tfg:chain_casting_mold', [
'S ',
'h ',
' m'
], {
S: 'gtceu:empty_mold',
h: '#forge:tools/hammers',
m: '#forge:tools/mallets'
})
event.shaped('tfg:bell_casting_mold', [
'S ',
' h ',
' m'
], {
S: 'gtceu:empty_mold',
h: '#forge:tools/hammers',
m: '#forge:tools/mallets'
})
event.shaped('tfg:mattock_head_extruder_mold', [
' h',
'fS ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:fish_hook_extruder_mold', [
'f ',
' S ',
' h'
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:whisk_extruder_mold', [
'f h',
' S ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
/** @type {['huge'|'large'|'normal'|'small'|'tiny']}*/
const pipe_sizes = [
'huge',
'large',
'normal',
'small',
'tiny'
];
event.shaped('tfg:screwdriver_tip_extruder_mold', [
'f ',
' S ',
' h '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
let prev_size;
pipe_sizes.forEach((size) => {
if (size !== 'huge'){
event.shaped(`gtceu:${size}_pipe_casting_mold`, [
'ABC'
], {
A: '#forge:tools/hammers',
B: `gtceu:${prev_size}_pipe_casting_mold`,
C: '#forge:tools/mallets'
}).id(`tfg:shaped/${prev_size}_${size}_casting_mold`)
event.shaped(`gtceu:${size}_pipe_extruder_mold`, [
'ABC'
], {
A: '#forge:tools/hammers',
B: `gtceu:${prev_size}_pipe_extruder_mold`,
C: '#forge:tools/mallets'
}).id(`tfg:shaped/${prev_size}_${size}_extruder_mold`)
}
prev_size = size;
});
event.shaped('tfg:wrench_tip_extruder_mold', [
'f ',
'hS ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
pipe_sizes.reverse().forEach((size) => {
if (size !== 'tiny'){
event.shaped(`gtceu:${size}_pipe_casting_mold`, [
'ABC'
], {
A: '#forge:tools/mallets',
B: `gtceu:${prev_size}_pipe_casting_mold`,
C: '#forge:tools/hammers'
}).id(`tfg:shaped/${prev_size}_${size}_casting_mold`)
event.shaped('tfg:wire_cutter_head_extruder_mold', [
'hS ',
' ',
' f '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
let steelIngots = ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 4);
let steelDusts = ChemicalHelper.get(TagPrefix.dust, GTMaterials.Steel, 4);
event.shaped(`gtceu:${size}_pipe_extruder_mold`, [
'ABC'
], {
A: '#forge:tools/mallets',
B: `gtceu:${prev_size}_pipe_extruder_mold`,
C: '#forge:tools/hammers'
}).id(`tfg:shaped/${prev_size}_${size}_extruder_mold`)
}
prev_size = size;
});
global.TFG_EXTRUDER_MOLDS.forEach(mold => {
@ -289,7 +68,7 @@ function registerTFGMoldRecipes(event) {
.itemOutputs(mold)
.duration(120)
.EUt(GTValues.VA[GTValues.LV])
})
});
global.TFG_CASTING_MOLDS.forEach(mold => {
@ -301,23 +80,6 @@ function registerTFGMoldRecipes(event) {
.itemOutputs(mold)
.duration(120)
.EUt(GTValues.VA[GTValues.LV])
})
});
//TODO: Fix this code to respect full molds
// //craft mold to scrub nbt
// const molds = Ingredient.of('#tfc:fired_molds').itemIds;
// molds.forEach(mold => {
// event.shapeless(Item.of(mold), [mold])
// .id(`tfg:shapeless/mold_cleaning/${mold.replace(":", "/")}`);
// });
// //craft vessel to scrub nbt
// const vessels = Ingredient.of('#tfc:fired_vessels').itemIds;
// vessels.forEach(vessel => {
// event.shapeless(Item.of(vessel), [vessel])
// .id(`tfg:shapeless/vessel_cleaning/${vessel.replace(":", "/")}`);
// });
}
};

View file

@ -0,0 +1,572 @@
// 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
}

View file

@ -72,6 +72,20 @@ function registerTFGPrimitiveItemTags(event) {
event.add('forge:string', 'tfg:phantom_thread')
event.add('forge:string', 'tfg:polycaprolactam_string')
event.add('forge:string', 'firmalife:pineapple_yarn')
// Artisan Table
event.add('tfg:artisan_table_inputs', 'gtceu:empty_mold')
event.add('tfg:artisan_table_inputs', 'gtceu:resin_circuit_board')
event.add('tfg:artisan_table_inputs', 'gtceu:copper_single_wire')
event.add('tfg:artisan_table_inputs', 'gtceu:copper_quadruple_wire')
event.add('tfg:artisan_table_inputs', 'gtceu:phenolic_circuit_board')
event.add('tfg:artisan_table_inputs', 'gtceu:silver_single_wire')
event.add('tfg:artisan_table_inputs', 'gtceu:silver_quadruple_wire')
event.add('tfg:artisan_table_tools', '#forge:tools/hammers')
event.add('tfg:artisan_table_tools', '#forge:tools/mallets')
event.add('tfg:artisan_table_tools', '#forge:tools/files')
event.add('tfg:artisan_table_tools', '#forge:tools/wire_cutters')
event.add('tfg:artisan_table_tools', '#forge:tools/screwdrivers')
}
function registerTFGPrimitiveBlockTags(event) {
@ -90,8 +104,7 @@ function registerTFGPrimitiveBlockTags(event) {
function registerTFGPrimitiveFluidTags(event) {
forEachMaterial(material => {
let tfcProperty = material.getProperty(TFGPropertyKey.TFC_PROPERTY)
if (tfcProperty === null || !material.hasFlag(TFGMaterialFlags.CAN_BE_UNMOLDED))
return;
if (tfcProperty === null || !material.hasFlag(TFGMaterialFlags.CAN_BE_UNMOLDED)) return;
if (!ChemicalHelper.get(TagPrefix.gearSmall, material, 1).isEmpty()) {
event.add('tfg:usable_in_small_gear_mold', material.getFluid().getFluidType().toString())

View file

@ -49,6 +49,7 @@ const registerTFGRecipes = (event) => {
registerTFGClayRecipes(event)
registerTFGEquipmentRecipes(event)
registerTFGDyeRecipes(event)
registerTFGArtisanTableRecipes(event)
registerTFGCasingRecipes(event)
registerTFGEnderPearlRecipes(event)

View file

@ -177,4 +177,5 @@ function registerTFGMiscellaneousRecipes(event) {
.duration(5*20)
.EUt(GTValues.VA[GTValues.LV])
.addMaterialInfo(true);
}

View file

@ -46,6 +46,7 @@ const registerTFGItemTags = (event) => {
event.add('tfg:empty_dna_syringes', 'tfg:clean_dna_syringe')
event.add('tfc:sewing_needles', 'tfg:stainless_steel_needle')
//#endregion
// Airplane Upgrades