This commit is contained in:
Pyritie
2026-02-18 11:57:48 +00:00
16 changed files with 803 additions and 692 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

View File

@@ -22,105 +22,6 @@ const registerAFCRecipes = (event) => {
event.remove({ id: "afc:crafting/0_maple_sugar_bucket" })
// #endregion
// #region Wood crafts
global.AFC_WOOD_TYPES.forEach(wood => {
event.remove({ id: `afc:crafting/wood/${wood}_axle` })
event.remove({ id: `afc:crafting/wood/${wood}_bladed_axle` })
event.remove({ id: `afc:crafting/wood/${wood}_encased_axle` })
event.remove({ id: `afc:crafting/wood/${wood}_clutch` })
event.remove({ id: `afc:crafting/wood/${wood}_gear_box` })
event.remove({ id: `afc:crafting/wood/${wood}_water_wheel` })
// Бревна -> Пиломатериалы
generateCutterRecipe(event, `#afc:${wood}_logs`, `16x afc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_log`)
// Доски -> Пиломатериалы
generateCutterRecipe(event, `afc:wood/planks/${wood}`, `4x afc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_planks`)
// Ступень -> Пиломатериалы
generateCutterRecipe(event, `afc:wood/planks/${wood}_stairs`, `3x afc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_stairs`)
// Плита -> Пиломатериалы
generateCutterRecipe(event, `afc:wood/planks/${wood}_slab`, `2x afc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_slab`)
// ? -> Деревянная нажимная пластина
event.shaped(`afc:wood/planks/${wood}_pressure_plate`, [
' B ',
'CDC',
' E '
], {
B: '#tfc:hammers',
C: `afc:wood/planks/${wood}_slab`,
D: '#forge:small_springs',
E: '#forge:tools/screwdrivers'
}).id(`afc:crafting/wood/${wood}_pressure_plate`)
event.recipes.gtceu.assembler(`${wood}_pressure_plate`)
.itemInputs('#forge:small_springs', `2x afc:wood/planks/${wood}_slab`)
.circuit(3)
.itemOutputs(`2x afc:wood/planks/${wood}_pressure_plate`)
.duration(50)
.EUt(2)
// ? -> Деревянная кнопка
event.remove({ id: `afc:crafting/wood/${wood}_button` })
event.shapeless(`3x afc:wood/planks/${wood}_button`, [`afc:wood/planks/${wood}_pressure_plate`, '#forge:tools/saws'])
.id(`tfg:shapeless/saw_${wood}_pressure_plate_to_button`)
generateCutterRecipe(event, `afc:wood/planks/${wood}_pressure_plate`, `6x afc:wood/planks/${wood}_button`, 50, 2, `${wood}_button`)
//Stomping Barrel
event.remove({ id: `afc:crafting/wood/${wood}_stomping_barrel` })
event.shaped(`afc:wood/stomping_barrel/${wood}`, [
'ABA',
'AAA',
'BBB'
], {
A: `afc:wood/lumber/${wood}`,
B: 'tfc:glue'
}).id(`afc:crafting/wood/${wood}_stomping_barrel`)
event.recipes.gtceu.lathe(`tfg:stripping_${wood}_log`)
.itemInputs(`afc:wood/log/${wood}`)
.itemOutputs(`afc:wood/stripped_log/${wood}`)
.duration(50)
.EUt(2)
event.recipes.gtceu.lathe(`tfg:stripping_${wood}_wood`)
.itemInputs(`afc:wood/wood/${wood}`)
.itemOutputs(`afc:wood/stripped_wood/${wood}`)
.duration(50)
.EUt(2)
event.recipes.vintageimprovements.polishing(`afc:wood/stripped_log/${wood}`, `afc:wood/log/${wood}`)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/stripping_${wood}_log`)
event.recipes.vintageimprovements.polishing(`afc:wood/stripped_wood/${wood}`, `afc:wood/wood/${wood}`)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/stripping_${wood}_wood`)
});
global.AFC_SAPLINGS.forEach(wood => {
event.shaped(`4x afc:wood/fallen_leaves/${wood.sapling}`,[
'AA',
'AA'
], {
A: `afc:wood/leaves/${wood.sapling}`
}).id(`tfg:shaped/afc/${wood.sapling}_leaves_to_fallen_leaves`);
});
// #endregion
event.recipes.tfc.anvil('afc:tree_tap', '#forge:ingots/copper', ["hit_last", "upset_second_last", "upset_third_last"])
@@ -239,7 +140,6 @@ const registerAFCRecipes = (event) => {
.duration(20 * 35)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.fluid_solidifier('maple_syrup')
.inputFluids(Fluid.of('afc:maple_syrup', 100))
.itemOutputs('afc:maple_sugar')
@@ -267,77 +167,12 @@ const registerAFCRecipes = (event) => {
.outputItem('afc:birch_sugar')
.id('tfg:barrel/birch_syrup_to_sugar')
const MORE_STRIPPING = [
{ wood: 'black_oak', stripped: 'oak', stripped_mod: 'tfc' },
{ wood: 'rainbow_eucalyptus', stripped: 'eucalyptus', stripped_mod: 'afc' },
{ wood: 'gum_arabic', stripped: 'acacia', stripped_mod: 'tfc' },
{ wood: 'redcedar', stripped: 'cypress', stripped_mod: 'afc' },
{ wood: 'rubber_fig', stripped: 'fig', stripped_mod: 'afc' },
{ wood: 'poplar', stripped: 'aspen', stripped_mod: 'tfc' }
];
MORE_STRIPPING.forEach(x => {
event.recipes.gtceu.lathe(`tfg:stripping_${x.wood}_log`)
.itemInputs(`afc:wood/log/${x.wood}`)
.itemOutputs(`${x.stripped_mod}:wood/stripped_log/${x.stripped}`)
.duration(50)
.EUt(2)
event.recipes.gtceu.lathe(`tfg:stripping_${x.wood}_wood`)
.itemInputs(`afc:wood/wood/${x.wood}`)
.itemOutputs(`${x.stripped_mod}:wood/stripped_wood/${x.stripped}`)
.duration(50)
.EUt(2)
event.recipes.vintageimprovements.polishing(`${x.stripped_mod}:wood/stripped_log/${x.stripped}`, `afc:wood/log/${x.wood}`)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/stripping_${x.wood}_log`)
event.recipes.vintageimprovements.polishing(`${x.stripped_mod}:wood/stripped_wood/${x.stripped}`, `afc:wood/wood/${x.wood}`)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/stripping_${x.wood}_wood`)
})
/**
* @property {Array} afcWoodRecyclingIndex - Wood recycling material index.
*/
const afcWoodRecyclingIndex = [
['afc:wood/chest_minecart/{type}', ['{wood}', 4, GTMaterials.WroughtIron, 5]],
['afc:wood/planks/{type}', ['{wood}', 8]],
['afc:wood/planks/{type}_door', ['{wood}', 6]],
['afc:wood/planks/{type}_trapdoor', ['{wood}', 4]],
['afc:wood/planks/{type}_fence', ['{wood}', 4]],
['afc:wood/planks/{type}_log_fence', ['{wood}', 8]],
['afc:wood/planks/{type}_fence_gate', ['{wood}', 8]],
['afc:wood/planks/{type}_slab', ['{wood}', 2]],
['afc:wood/planks/{type}_stairs', ['{wood}', 3]],
['afc:wood/planks/{type}_pressure_plate', ['{wood}', 4]],
['afc:wood/planks/{type}_button', ['{wood}', 1]],
['afc:wood/chest/{type}', ['{wood}', 16]],
['afc:wood/trapped_chest/{type}', ['{wood}', 16, GTMaterials.WroughtIron, 4/9, GTMaterials.Wood, 1]]
];
/**
* @param {Array} materials
* @param {string} woodMaterial
* @return {Array}
*/
function resolveArgs(materials, woodMaterial) {
return materials.map(materials => materials === '{wood}' ? woodMaterial : materials);
};
global.AFC_HARDWOOD_TYPES.forEach(type => {
afcWoodRecyclingIndex.forEach(([template, args]) => {
const item = template.replace('{type}', type);
const resolvedArgs = resolveArgs(args, GTMaterials.get('hardwood'));
TFGHelpers.registerMaterialInfo(item, resolvedArgs);
});
});
global.AFC_SOFTWOOD_TYPES.forEach(type => {
afcWoodRecyclingIndex.forEach(([template, args]) => {
const item = template.replace('{type}', type);
const resolvedArgs = resolveArgs(args, GTMaterials.Wood);
TFGHelpers.registerMaterialInfo(item, resolvedArgs);
});
});
global.AFC_SAPLINGS.forEach(wood => {
event.shaped(`4x afc:wood/fallen_leaves/${wood.sapling}`,[
'AA',
'AA'
], {
A: `afc:wood/leaves/${wood.sapling}`
}).id(`tfg:shaped/afc/${wood.sapling}_leaves_to_fallen_leaves`);
});
}

View File

@@ -22,20 +22,6 @@ const registerBeneathRecipes = (event) => {
event.remove({ id: 'beneath:crafting/hellbricks' })
event.remove({ id: 'beneath:crafting/nether_brick' })
event.remove({ id: 'beneath:quern/slime' })
event.remove({ id: 'beneath:crafting/wood/crimson_planks' })
event.remove({ id: 'beneath:crafting/wood/crimson_slab' })
event.remove({ id: 'beneath:crafting/wood/crimson_button' })
event.remove({ id: 'beneath:crafting/wood/crimson_pressure_plate' })
event.remove({ id: 'beneath:crafting/wood/crimson_lumber_log' })
event.remove({ id: 'beneath:crafting/wood/crimson_lumber_planks' })
event.remove({ id: 'beneath:crafting/wood/crimson_slab_undo' })
event.remove({ id: 'beneath:crafting/wood/warped_planks' })
event.remove({ id: 'beneath:crafting/wood/warped_slab' })
event.remove({ id: 'beneath:crafting/wood/warped_button' })
event.remove({ id: 'beneath:crafting/wood/warped_pressure_plate' })
event.remove({ id: 'beneath:crafting/wood/warped_lumber_log' })
event.remove({ id: 'beneath:crafting/wood/warped_lumber_planks' })
event.remove({ id: 'beneath:crafting/wood/warped_slab_undo' })
event.remove({ id: 'beneath:crafting/ancient_altar' })
event.shaped('beneath:unposter', [
@@ -99,43 +85,4 @@ const registerBeneathRecipes = (event) => {
], {
A: `beneath:wood/leaves/warped`
}).id(`tfg:shaped/beneath/warped_leaves_to_fallen_leaves`);
/**
* @property {Array} beneathWoodRecyclingIndex - Wood recycling material index.
*/
const beneathWoodRecyclingIndex = [
['beneath:wood/chest_minecart/{type}', ['{wood}', 4, GTMaterials.WroughtIron, 5]],
['beneath:wood/planks/{type}', ['{wood}', 8]],
['beneath:wood/planks/{type}_door', ['{wood}', 6]],
['beneath:wood/planks/{type}_trapdoor', ['{wood}', 4]],
['beneath:wood/planks/{type}_fence', ['{wood}', 4]],
['beneath:wood/planks/{type}_log_fence', ['{wood}', 8]],
['beneath:wood/planks/{type}_fence_gate', ['{wood}', 8]],
['beneath:wood/planks/{type}_slab', ['{wood}', 2]],
['beneath:wood/planks/{type}_stairs', ['{wood}', 3]],
['beneath:wood/planks/{type}_pressure_plate', ['{wood}', 4]],
['beneath:wood/planks/{type}_button', ['{wood}', 1]],
['beneath:wood/chest/{type}', ['{wood}', 16]],
['beneath:wood/trapped_chest/{type}', ['{wood}', 16, GTMaterials.WroughtIron, 4/9, GTMaterials.Wood, 1]]
];
/**
* @param {Array} materials
* @param {string} woodMaterial
* @return {Array}
*/
function resolveArgs(materials, woodMaterial) {
return materials.map(materials => materials === '{wood}' ? woodMaterial : materials);
};
beneathWoodRecyclingIndex.forEach(([template, args]) => {
const item = template.replace('{type}', 'crimson');
const resolvedArgs = resolveArgs(args, GTMaterials.get('hardwood'));
TFGHelpers.registerMaterialInfo(item, resolvedArgs);
});
beneathWoodRecyclingIndex.forEach(([template, args]) => {
const item = template.replace('{type}', 'warped');
const resolvedArgs = resolveArgs(args, GTMaterials.Wood);
TFGHelpers.registerMaterialInfo(item, resolvedArgs);
});
}

View File

@@ -875,11 +875,9 @@ function removeGTCEURecipes(event) {
// Remove Default Pressure Plate Recipes
const MC_PRESSURE_PLATES = [
'bamboo',
'polished_blackstone',
'light_weighted',
'heavy_weighted',
'treated'
]
MC_PRESSURE_PLATES.forEach(material => {
event.remove({ id: `gtceu:shaped/${material}_pressure_plate` })

View File

@@ -155,189 +155,6 @@ function addCircuitToRecipe(event, recipeId, circuitNumber) {
recipe.json.add("inputs", inputsObj);
});
}
//#endregion
//#region Wood Builder
/**
* Generates most basic wooden recipes.
*
* All parameters are optional. Name is used for the ID.
*
* @param {*} event
* @param {string} name -Name of the wood.
* @param {string} lumber -ID for the lumber.
* @param {string} logs -Tag or ID for all the logs.
* @param {string} log -ID for the regular log.
* @param {string} stripped_log -ID for the stripped log.
* @param {string} plank -ID for planks.
* @param {string} stair -ID for stairs.
* @param {string} slab -ID for slabs.
* @param {string} door -ID for the door.
* @param {string} trapdoor -ID for the trapdoor.
* @param {string} fence -ID for the fence.
* @param {string} fence_gate -ID for the fence gate.
* @param {string} support -ID for the support.
* @param {string} pressure_plate -ID for the pressure plate.
* @param {string} button -ID for the button.
*/
function woodBuilder(event, name, lumber, logs, log, stripped_log, plank, stair, slab, door, trapdoor, fence, fence_gate, support, pressure_plate, button) {
if (log && stripped_log && name) {
event.recipes.gtceu.lathe(`tfg:cutter/${name}_stripped_log_from_log`)
.itemInputs(log)
.itemOutputs(stripped_log)
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.vintageimprovements.polishing(stripped_log, log)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/stripping_${name}_log`)
}
if (logs && lumber && name) {
event.shapeless(`8x ${lumber}`,
[logs, '#forge:tools/saws']
).id(`tfg:shapeless/${name}_lumber_from_log`)
generateCutterRecipe(event, logs, `16x ${lumber}`, 50, 7, `cutter_${name}_lumber_from_log`)
}
if (plank && lumber && name) {
event.shapeless(`4x ${lumber}`,
[plank, '#forge:tools/saws']
).id(`tfg:shapeless/${name}_lumber_from_plank`)
generateCutterRecipe(event, plank, `4x ${lumber}`, 50, 7, `cutter_${name}_lumber_from_plank`)
event.shaped(plank, [
'AA',
'AA'
], {
A: lumber
}).id(`tfg:shaped/${name}_plank_from_lumber`)
}
if (slab && lumber && name) {
event.shapeless(`2x ${lumber}`,
[slab, '#forge:tools/saws']
).id(`tfg:shapeless/${name}_lumber_from_slab`)
generateCutterRecipe(event, slab, `2x ${lumber}`, 50, 7, `cutter_${name}_lumber_from_slab`)
}
if (slab && plank && name) {
event.shaped(`6x ${slab}`, [
'AAA'
], {
A: plank
}).id(`tfg:shaped/${name}_slab_from_plank`)
}
if (stair && lumber && name) {
event.shapeless(`3x ${lumber}`,
[stair, '#forge:tools/saws']
).id(`tfg:shapeless/${name}_lumber_from_stair`)
generateCutterRecipe(event, stair, `3x ${lumber}`, 50, 7, `cutter_${name}_lumber_from_stair`)
}
if (stair && plank && name) {
event.shaped(`8x ${stair}`, [
'A ',
'AA ',
'AAA'
], {
A: plank
}).id(`tfg:shaped/${name}_stair_from_plank`)
}
if (door && lumber && name) {
event.shaped(`2x ${door}`, [
'AA',
'AA',
'AA'
], {
A: lumber
}).id(`tfg:shaped/${name}_door_from_lumber`)
}
if (trapdoor && lumber && name) {
event.shaped(`3x ${trapdoor}`, [
'AAA',
'AAA'
], {
A: lumber
}).id(`tfg:shaped/${name}_trapdoor_from_lumber_and_plank`)
}
if (fence && lumber && plank && name) {
event.shaped(`8x ${fence}`, [
'ABA',
'ABA'
], {
A: lumber,
B: plank
}).id(`tfg:shaped/${name}_fence_from_lumber_and_plank`)
}
if (fence_gate && lumber && plank && name) {
event.shaped(`2x ${fence_gate}`, [
'ABA',
'ABA'
], {
A: plank,
B: lumber
}).id(`tfg:shaped/${name}_fence_gate_from_lumber_and_plank`)
}
if (support && logs && name) {
event.shapeless(`8x ${support}`,
[`2x ${logs}`, '#forge:tools/saws']
).id(`tfg:shapeless/${name}_support_from_logs`)
event.recipes.gtceu.assembler(`tfg:assembler/${name}_support_from_logs`)
.itemInputs(`2x ${logs}`)
.itemOutputs(`8x ${support}`)
.duration(50)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
}
if (pressure_plate && slab && name) {
event.shaped(pressure_plate, [
' B ',
'ACA',
' D '
], {
A: slab,
B: '#forge:tools/hammers',
C: '#forge:springs',
D: '#forge:tools/screwdrivers'
}).id(`tfg:shaped/${name}_pressure_plate`)
event.recipes.gtceu.assembler(`tfg:assembler/${name}_pressure_plate`)
.itemInputs(`2x ${slab}`, '#forge:small_springs')
.itemOutputs(`2x ${pressure_plate}`)
.duration(50)
.circuit(3)
.EUt(GTValues.VA[GTValues.ULV])
}
if (button && pressure_plate && name) {
event.recipes.gtceu.cutter(`tfg:cutter/${name}_button_from_pressure_plate`)
.itemInputs(pressure_plate)
.itemOutputs(`6x ${button}`)
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.shapeless(`3x ${button}`, [pressure_plate, '#forge:tools/saws'])
.id(`tfg:shapeless/saw_${name}_pressure_plate_to_button`)
}
}
//#endregion
//#region Sterilization
/**
* Creates recipes for sterilizing an item using chemicals or the autoclave.

View File

@@ -289,11 +289,11 @@ ServerEvents.recipes(event => {
registerTFCGurmanRecipes(event)
registerTFGRecipes(event)
registerTFCTextileRecipes(event)
registerTFCScrapingKnivesRecipes(event)
registerToolBeltRecipes(event)
registerVintageImprovementsRecipes(event)
registerWaterFlasksRecipes(event)
registerWABRecipes(event)
registerTFCScrapingKnivesRecipes(event)
})
TaCZServerEvents.gunIndexLoad((event) => {

View File

@@ -1031,7 +1031,6 @@ const registerMinecraftRecipes = (event) => {
//#region Pressure Plates
const PRESSURE_PLATES = [
{type: 'bamboo', material: 'minecraft:bamboo_slab'},
{type: 'polished_blackstone', material: 'minecraft:polished_blackstone_slab'},
{type: 'light_weighted', material: '#forge:plates/gold'},
{type: 'heavy_weighted', material: '#forge:plates/iron'}
@@ -1059,9 +1058,6 @@ const registerMinecraftRecipes = (event) => {
event.shapeless('3x minecraft:polished_blackstone_button', ['minecraft:polished_blackstone_pressure_plate', '#forge:tools/saws'])
.id(`tfg:shapeless/saw_blackstone_pressure_plate_to_button`)
event.shapeless('3x minecraft:bamboo_button', ['minecraft:bamboo_pressure_plate', '#forge:tools/saws'])
.id(`tfg:shapeless/saw_bamboo_pressure_plate_to_button`)
// #endregion
// Minecart w/ Furnace

View File

@@ -296,44 +296,4 @@ const registerTFCRecipes = (event) => {
}).id(`tfg:shaped/tfc/${type}_krummholz`);
});
/**
* @property {Array} tfcWoodRecyclingIndex - Wood recycling material index.
*/
const tfcWoodRecyclingIndex = [
['tfc:wood/chest_minecart/{type}', ['{wood}', 4, GTMaterials.WroughtIron, 5]],
['tfc:wood/planks/{type}', ['{wood}', 8]],
['tfc:wood/planks/{type}_door', ['{wood}', 6]],
['tfc:wood/planks/{type}_trapdoor', ['{wood}', 4]],
['tfc:wood/planks/{type}_fence', ['{wood}', 4]],
['tfc:wood/planks/{type}_log_fence', ['{wood}', 8]],
['tfc:wood/planks/{type}_fence_gate', ['{wood}', 8]],
['tfc:wood/planks/{type}_slab', ['{wood}', 2]],
['tfc:wood/planks/{type}_stairs', ['{wood}', 3]],
['tfc:wood/planks/{type}_pressure_plate', ['{wood}', 4]],
['tfc:wood/planks/{type}_button', ['{wood}', 1]],
['tfc:wood/chest/{type}', ['{wood}', 16]],
['tfc:wood/trapped_chest/{type}', ['{wood}', 16, GTMaterials.WroughtIron, 4/9, GTMaterials.Wood, 1]]
];
/**
* @param {Array} materials
* @param {string} woodMaterial
* @return {Array}
*/
function resolveArgs(materials, woodMaterial) {
return materials.map(materials => materials === '{wood}' ? woodMaterial : materials);
};
global.TFC_HARDWOOD_TYPES.forEach(type => {
tfcWoodRecyclingIndex.forEach(([template, args]) => {
const item = template.replace('{type}', type);
const resolvedArgs = resolveArgs(args, GTMaterials.get('hardwood'));
TFGHelpers.registerMaterialInfo(item, resolvedArgs);
});
});
global.TFC_SOFTWOOD_TYPES.forEach(type => {
tfcWoodRecyclingIndex.forEach(([template, args]) => {
const item = template.replace('{type}', type);
const resolvedArgs = resolveArgs(args, GTMaterials.Wood);
TFGHelpers.registerMaterialInfo(item, resolvedArgs);
});
});
}

View File

@@ -88,63 +88,6 @@ function registerTFGMarsRecipes(event) {
.EUt(GTValues.VA[GTValues.EV])
.dimension('ad_astra:mars')
// Ad astra woods
global.AD_ASTRA_WOOD.forEach(wood => {
woodBuilder(event, wood.name, wood.lumber, wood.logs, wood.log, wood.stripped_log, wood.plank, wood.stair, wood.slab, wood.door, wood.trapdoor, wood.fence, wood.fence_gate, wood.support, wood.pressure_plate, wood.button)
})
event.shaped('8x ad_astra:aeronos_ladder', [
'A A',
'ABA',
'A A'
], {
A: 'tfg:wood/lumber/aeronos',
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1)
}).id('tfg:shaped/aeronos_ladder')
event.shaped('8x ad_astra:strophar_ladder', [
'A A',
'ABA',
'A A'
], {
A: 'tfg:wood/lumber/strophar',
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1)
}).id('tfg:shaped/strophar_ladder')
// don't pass in the items like doors, trapdoors etc because beneath already has good recipes for those
woodBuilder(event, 'crimson', 'beneath:wood/lumber/crimson', '#tfc:crimson_logs', 'beneath:wood/log/crimson',
'beneath:wood/stripped_log/crimson', 'beneath:wood/planks/crimson', null,
'beneath:wood/planks/crimson_slab', null, null, null, null, null, 'beneath:wood/planks/crimson_pressure_plate',
'beneath:wood/planks/crimson_button')
event.recipes.gtceu.lathe(`tfg:cutter/crimson_stripped_wood_from_wood`)
.itemInputs('beneath:wood/wood/crimson')
.itemOutputs('beneath:wood/stripped_wood/crimson')
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.vintageimprovements.polishing('beneath:wood/stripped_wood/crimson', 'beneath:wood/wood/crimson')
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/stripping_crimson_wood`)
woodBuilder(event, 'warped', 'beneath:wood/lumber/warped', '#tfc:warped_logs', 'beneath:wood/log/warped',
'beneath:wood/stripped_log/warped', 'beneath:wood/planks/warped', null,
'beneath:wood/planks/warped_slab', null, null, null, null, null, 'beneath:wood/planks/warped_pressure_plate',
'beneath:wood/planks/warped_button')
event.recipes.gtceu.lathe(`tfg:cutter/warped_stripped_wood_from_wood`)
.itemInputs('beneath:wood/wood/warped')
.itemOutputs('beneath:wood/stripped_wood/warped')
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.vintageimprovements.polishing('beneath:wood/stripped_wood/warped', 'beneath:wood/wood/warped')
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/stripping_warped_wood`)
//Large Nest
event.shaped('tfg:large_nest_box',
[

View File

@@ -0,0 +1,771 @@
// priority: 0
"use strict";
/**
*
* @param {Internal.RecipesEventJS} event
*/
function registerTFGWoodenRecipes(event) {
// #region TFG Wood Builder
/**
* Generates most basic wooden recipes.
*
* All parameters are optional. Name is used for the ID.
*
* @param {*} event
* @param {string} name -Name of the wood.
* @param {string} lumber -ID for the lumber.
* @param {string} logs -Tag or ID for all the logs.
* @param {string} log -ID for the regular log.
* @param {string} stripped_log -ID for the stripped log.
* @param {string} plank -ID for planks.
* @param {string} stair -ID for stairs.
* @param {string} slab -ID for slabs.
* @param {string} door -ID for the door.
* @param {string} trapdoor -ID for the trapdoor.
* @param {string} fence -ID for the fence.
* @param {string} fence_gate -ID for the fence gate.
* @param {string} support -ID for the support.
* @param {string} pressure_plate -ID for the pressure plate.
* @param {string} button -ID for the button.
* @param {string} log_wood -ID for the log wood.
* @param {string} stripped_wood -ID for the stripped wood.
*/
function TFGWoodBuilder(event, name, lumber, logs, log, stripped_log, plank, stair, slab, door, trapdoor, fence, fence_gate, support, pressure_plate, button, log_wood, stripped_wood) {
// Stripped log from log
if (log && stripped_log && name) {
event.recipes.gtceu.lathe(`tfg:${name}_stripped_log_from_log`)
.itemInputs(log)
.itemOutputs(stripped_log)
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.vintageimprovements.polishing(stripped_log, log)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/${name}_stripped_log_from_log`)
};
// Stripped wood from log wood
if (log_wood && stripped_wood && name) {
event.recipes.gtceu.lathe(`tfg:${name}_stripped_wood_from_log_wood`)
.itemInputs(log_wood)
.itemOutputs(stripped_wood)
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.vintageimprovements.polishing(stripped_wood, log_wood)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/${name}_stripped_wood_from_log_wood`)
};
// TODO: remove condition of logs
// Lumber from log
if (logs && lumber && name) {
event.shapeless(`8x ${lumber}`,
[logs, '#forge:tools/saws']
)
.id(`tfg:shapeless/${name}_lumber_from_log`)
generateCutterRecipe(event, logs, `16x ${lumber}`, 50, 7, `${name}_lumber_from_log`)
};
if (plank && lumber && name) {
// Lumber from plank
event.shapeless(`4x ${lumber}`,
[plank, '#forge:tools/saws']
)
.id(`tfg:shapeless/${name}_lumber_from_plank`)
generateCutterRecipe(event, plank, `4x ${lumber}`, 50, 7, `${name}_lumber_from_plank`)
// Plank from lumber
event.shaped(plank, [
'AA',
'AA'
], {
A: lumber
})
.id(`tfg:shaped/${name}_plank_from_lumber`)
};
// Lumber from slab
if (slab && lumber && name) {
event.shapeless(`2x ${lumber}`,
[slab, '#forge:tools/saws']
)
.id(`tfg:shapeless/${name}_lumber_from_slab`)
generateCutterRecipe(event, slab, `2x ${lumber}`, 50, 7, `${name}_lumber_from_slab`)
};
// Slab from lumber
if (slab && lumber && name) {
event.shaped(slab, [
'AA'
], {
A: lumber
})
.id(`tfg:shaped/${name}_slab_from_lumber`)
};
// Lumber from slab
if (stair && lumber && name) {
event.shapeless(`3x ${lumber}`,
[stair, '#forge:tools/saws']
)
.id(`tfg:shapeless/${name}_lumber_from_stair`)
generateCutterRecipe(event, stair, `3x ${lumber}`, 50, 7, `${name}_lumber_from_stair`)
};
// Stair from plank
if (stair && lumber && name) {
event.shaped(`8x ${stair}`, [
'A ',
'AA ',
'AAA'
], {
A: plank
})
.id(`tfg:shaped/${name}_stair_from_plank`)
};
// Door from lumber
if (door && lumber && name) {
event.shaped(`2x ${door}`, [
'AA',
'AA',
'AA'
], {
A: lumber
})
.id(`tfg:shaped/${name}_door_from_lumber`)
};
// Trapdoor from lumber
if (trapdoor && lumber && name) {
event.shaped(`3x ${trapdoor}`, [
'AAA',
'AAA'
], {
A: lumber
})
.id(`tfg:shaped/${name}_trapdoor_from_lumber`)
};
// Fence from lumber & plank
if (fence && lumber && plank && name) {
event.shaped(`8x ${fence}`, [
'ABA',
'ABA'
], {
A: lumber,
B: plank
})
.id(`tfg:shaped/${name}_fence_from_lumber_and_plank`)
};
// Fence gate from lumber and plank
if (fence_gate && lumber && plank && name) {
event.shaped(`2x ${fence_gate}`, [
'ABA',
'ABA'
], {
A: plank,
B: lumber
})
.id(`tfg:shaped/${name}_fence_gate_from_lumber_and_plank`)
};
// Support from logs
if (support && logs && name) {
event.shapeless(`8x ${support}`,
[`2x ${logs}`, '#forge:tools/saws']
)
.id(`tfg:shapeless/${name}_support_from_logs`)
event.recipes.gtceu.assembler(`tfg:${name}_support_from_logs`)
.itemInputs(`2x ${logs}`)
.itemOutputs(`8x ${support}`)
.duration(50)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
};
// Pressure plate
if (pressure_plate && slab && name) {
event.shaped(pressure_plate, [
' B ',
'ACA',
' D '
], {
A: slab,
B: '#forge:tools/hammers',
C: '#forge:small_springs',
D: '#forge:tools/screwdrivers'
})
.id(`tfg:shaped/${name}_pressure_plate`)
event.recipes.gtceu.assembler(`tfg:${name}_pressure_plate`)
.itemInputs(`2x ${slab}`, '#forge:small_springs')
.itemOutputs(`${pressure_plate}`)
.duration(50)
.circuit(3)
.EUt(GTValues.VA[GTValues.ULV])
};
// Button from pressure plate
if (button && pressure_plate && name) {
event.recipes.gtceu.cutter(`tfg:${name}_button_from_pressure_plate`)
.itemInputs(pressure_plate)
.itemOutputs(`6x ${button}`)
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.shapeless(`3x ${button}`, [pressure_plate, '#forge:tools/saws'])
.id(`tfg:shapeless/saw_${name}_pressure_plate_to_button`)
};
};
// #endregion
// #region TFG Mosaic Builder
/**
* @param {*} event
* @param {string} wood - Name of the wood.
* @param {string} lumber - ID for lumber.
* @param {string} plank - ID for plank.
* @param {string} mosaic_plank - ID for mosaic plank.
* @param {string} stair - ID for stair.
* @param {string} mosaic_stair - ID for mosaic stair.
* @param {string} slab - ID for slab.
* @param {string} mosaic_slab - ID for mosaic slab.
*
*/
function TFGMosaicWoodBuilder(event, wood, lumber, plank, mosaic_plank, stair, mosaic_stair, slab, mosaic_slab) {
// Mosaic plank
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless(`${mosaic_plank}`,
[`${plank}`, '#tfc:chisels']
)
)
.id(`tfg:shapeless/${wood}_mosaic_plank`);
// Lumber from mosaic plank
event.shapeless(`4x ${lumber}`,
[`${mosaic_plank}`, '#forge:tools/saws']
)
.id(`tfg:shapeless/${wood}_lumber_from_mosaic_plank`);
generateCutterRecipe(event, `${mosaic_plank}`, `4x ${lumber}`, 50, 7, `${wood}_lumber_from_mosaic_plank`);
// Mosaic stair
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless(`${mosaic_stair}`,
[`${stair}`, '#tfc:chisels']
)
)
.id(`tfg:shapeless/${wood}_mosaic_stair`);
// Lumber from mosaic stairs
event.shapeless(`3x ${lumber}`,
[`${mosaic_stair}`, '#forge:tools/saws']
)
.id(`tfg:shapeless/${wood}_lumber_from_mosaic_stair`);
generateCutterRecipe(event, `${mosaic_stair}`, `3x ${lumber}`, 50, 7, `${wood}_lumber_from_mosaic_stair`);
// Mosaic slab
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless(`${mosaic_slab}`,
[`${slab}`, '#tfc:chisels']
)
)
.id(`tfg:shapeless/${wood}_mosaic_slab`);
// Lumber from mosaic slab
event.shapeless(`2x ${lumber}`,
[`${mosaic_slab}`, '#forge:tools/saws']
)
.id(`tfg:shapeless/${wood}_lumber_from_mosaic_slab`);
generateCutterRecipe(event, `${mosaic_slab}`, `2x ${lumber}`, 50, 7, `${wood}_lumber_from_mosaic_slab`);
};
// #endregion
// #region TFG Wood Recycling
/**
* @property {Array} TFGWoodRecyclingIndex - TFG Wood recycling material index.
*/
const TFGWoodRecyclingIndex = [
['{mod}:wood/chest_minecart/{type}', ['{wood}', 4, GTMaterials.WroughtIron, 5]],
['{mod}:wood/planks/{type}', ['{wood}', 2]],
['{mod}:wood/planks/{type}_door', ['{wood}', 3/2]],
['{mod}:wood/planks/{type}_trapdoor', ['{wood}', 1]],
['{mod}:wood/planks/{type}_fence', ['{wood}', 4]],
['{mod}:wood/planks/{type}_log_fence', ['{wood}', 8]],
['{mod}:wood/planks/{type}_fence_gate', ['{wood}', 8]],
['{mod}:wood/planks/{type}_slab', ['{wood}', 1]],
['{mod}:wood/planks/{type}_stairs', ['{wood}', 3/2]],
['{mod}:wood/planks/{type}_pressure_plate', ['{wood}', 2]],
['{mod}:wood/planks/{type}_button', ['{wood}', 1/4]],
['{mod}:wood/chest/{type}', ['{wood}', 4]],
['{mod}:wood/trapped_chest/{type}', ['{wood}', 4, GTMaterials.WroughtIron, 4/9, GTMaterials.Wood, 1]]
];
/**
* @param {Array} materials
* @param {string} woodMaterial
* @return {Array}
*/
function resolveArgs(materials, woodMaterial) {
return materials
.map(materials => materials === '{wood}' ? woodMaterial : materials);
};
function registerTFGWoodRecycling(mod, woodname, woodMaterial) {
woodname.forEach(name => {
TFGWoodRecyclingIndex.forEach(([template, args]) => {
const item = template
.replace('{mod}', mod)
.replace('{type}', name);
const resolvedArgs = resolveArgs(args, woodMaterial);
TFGHelpers.registerMaterialInfo(item, resolvedArgs);
});
});
};
// #endregion
// #region Ad Astra
global.AD_ASTRA_WOOD.forEach(wood => {
// TODO: standardise ad astra constants
TFGWoodBuilder(
event,
wood.name,
wood.lumber,
wood.logs,
wood.log,
wood.stripped_log,
wood.plank,
wood.stair,
wood.slab,
wood.door,
wood.trapdoor,
wood.fence,
wood.fence_gate,
wood.support,
wood.pressure_plate,
wood.button,
wood.log_wood,
wood.stripped_wood
);
});
event.shaped('8x ad_astra:aeronos_ladder', [
'A A',
'ABA',
'A A'
], {
A: 'tfg:wood/lumber/aeronos',
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1)
})
.id('tfg:shaped/aeronos_ladder');
event.shaped('8x ad_astra:strophar_ladder', [
'A A',
'ABA',
'A A'
], {
A: 'tfg:wood/lumber/strophar',
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1)
})
.id('tfg:shaped/strophar_ladder');
// #endregion
// #region Beneath
global.BENEATH_WOOD_TYPES.forEach(wood => {
// Removed recipe changes
event.remove({ id: `beneath:crafting/wood/${wood}_planks` });
event.remove({ id: `beneath:crafting/wood/${wood}_slab` });
event.remove({ id: `beneath:crafting/wood/${wood}_button` });
event.remove({ id: `beneath:crafting/wood/${wood}_pressure_plate` });
event.remove({ id: `beneath:crafting/wood/${wood}_lumber_log` });
event.remove({ id: `beneath:crafting/wood/${wood}_lumber_planks` });
event.remove({ id: `beneath:crafting/wood/${wood}_slab_undo` });
TFGWoodBuilder(
event,
`${wood}`,
`beneath:wood/lumber/${wood}`,
`#tfc:${wood}_logs`,
`beneath:wood/log/${wood}`,
`beneath:wood/stripped_log/${wood}`,
`beneath:wood/planks/${wood}`,
null,
`beneath:wood/planks/${wood}_slab`,
`beneath:wood/planks/${wood}_door`,
`beneath:wood/planks/${wood}_trapdoor`,
null,
null,
null,
`beneath:wood/planks/${wood}_pressure_plate`,
`beneath:wood/planks/${wood}_button`,
`beneath:wood/wood/${wood}`,
`beneath:wood/stripped_wood/${wood}`,
`beneath:wood/wood/${wood}`,
`beneath:wood/stripped_wood/${wood}`
);
});
registerTFGWoodRecycling('beneath', ['crimson'], GTMaterials.get('hardwood'));
registerTFGWoodRecycling('beneath', ['warped'], GTMaterials.Wood);
// #endregion
// #region AFC
global.AFC_WOOD_TYPES.forEach(wood => {
// Removed unused assets
event.remove({ id: `afc:crafting/wood/${wood}_axle` });
event.remove({ id: `afc:crafting/wood/${wood}_bladed_axle` });
event.remove({ id: `afc:crafting/wood/${wood}_encased_axle` });
event.remove({ id: `afc:crafting/wood/${wood}_clutch` });
event.remove({ id: `afc:crafting/wood/${wood}_gear_box` });
event.remove({ id: `afc:crafting/wood/${wood}_water_wheel` });
// Removed recipe changes
event.remove({ id: `afc:crafting/wood/${wood}_lumber_log` });
event.remove({ id: `afc:crafting/wood/${wood}_stairs` });
event.remove({ id: `afc:crafting/wood/${wood}_stairs_undo` });
event.remove({ id: `afc:crafting/wood/${wood}_slab` });
event.remove({ id: `afc:crafting/wood/${wood}_button` });
event.remove({ id: `afc:crafting/wood/${wood}_stomping_barrel` });
event.remove({ id: `afc:crafting/wood/${wood}_lumber_planks` });
event.remove({ id: `afc:crafting/wood/${wood}_slab_undo` });
TFGWoodBuilder(
event,
`${wood}`,
`afc:wood/lumber/${wood}`,
`#afc:${wood}_logs`,
`afc:wood/log/${wood}`,
`afc:wood/stripped_log/${wood}`,
`afc:wood/planks/${wood}`,
`afc:wood/planks/${wood}_stairs`,
`afc:wood/planks/${wood}_slab`,
null,
null,
null,
null,
null,
`afc:wood/planks/${wood}_pressure_plate`,
`afc:wood/planks/${wood}_button`,
`afc:wood/wood/${wood}`,
`afc:wood/stripped_wood/${wood}`
);
registerTFGWoodRecycling('afc', global.AFC_HARDWOOD_TYPES, GTMaterials.get('hardwood'));
registerTFGWoodRecycling('afc', global.AFC_SOFTWOOD_TYPES, GTMaterials.Wood);
// Stomping Barrel
event.shaped(`afc:wood/stomping_barrel/${wood}`, [
'ABA',
'AAA',
'BBB'
], {
A: `afc:wood/lumber/${wood}`,
B: 'tfc:glue'
})
.id(`afc:crafting/wood/${wood}_stomping_barrel`);
});
// Outliers
const AFC_MORE_STRIPPING = [
{ name: 'black_oak', stripped: 'oak', stripped_mod: 'tfc' },
{ name: 'rainbow_eucalyptus', stripped: 'eucalyptus', stripped_mod: 'afc' },
{ name: 'gum_arabic', stripped: 'acacia', stripped_mod: 'tfc' },
{ name: 'redcedar', stripped: 'cypress', stripped_mod: 'afc' },
{ name: 'rubber_fig', stripped: 'fig', stripped_mod: 'afc' },
{ name: 'poplar', stripped: 'aspen', stripped_mod: 'tfc' }
];
AFC_MORE_STRIPPING.forEach(x => {
event.recipes.gtceu
.lathe(`tfg:${x.name}_stripped_log_from_log`)
.itemInputs(`afc:wood/log/${x.name}`)
.itemOutputs(`${x.stripped_mod}:wood/stripped_log/${x.stripped}`)
.duration(50)
.EUt(GTValues.VA[GTValues.ULV]);
event.recipes.vintageimprovements
.polishing(`${x.stripped_mod}:wood/stripped_log/${x.stripped}`, `afc:wood/log/${x.name}`)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/${x.name}_stripped_log_from_log`);
event.recipes.gtceu
.lathe(`tfg:${x.name}_stripped_wood_from_log_wood`)
.itemInputs(`afc:wood/wood/${x.name}`)
.itemOutputs(`${x.stripped_mod}:wood/stripped_wood/${x.stripped}`)
.duration(50)
.EUt(GTValues.VA[GTValues.ULV]);
event.recipes.vintageimprovements
.polishing(`${x.stripped_mod}:wood/stripped_wood/${x.stripped}`, `afc:wood/wood/${x.name}`)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/${x.name}_stripped_wood_from_log_wood`);
});
// #endregion
// #region General
// Ladder
event.shaped('8x minecraft:ladder', [
'A A',
'AAA',
'A A'
], {
A: '#forge:rods/wooden'
})
.id('gtceu:shaped/ladder');
event.shaped('8x minecraft:ladder', [
'A A',
'AAA',
'A A'
], {
A: '#tfc:lumber'
})
.id('tfg:crafting/vanilla/ladder');
// Sticks
event.remove('gtceu:shaped/stick_normal');
event.remove('gtceu:lathe/lathe_planks');
event.remove('gtceu:lathe/lathe_saplings');
event.recipes.gtceu.lathe('tfg:planks_to_sticks')
.itemInputs('#minecraft:planks')
.itemOutputs('8x minecraft:stick')
.duration(20)
.EUt(7)
event.shapeless('2x minecraft:stick', ['#minecraft:saplings', '#forge:tools/knives'])
.id('tfg:strip_saplings')
event.recipes.gtceu.cutter('tfg:saplings_to_sticks')
.itemInputs('#minecraft:saplings')
.itemOutputs('2x minecraft:stick')
.duration(20)
.EUt(7)
event.recipes.gtceu.packer('tfg:stick_bunch')
.itemInputs('9x #forge:rods/wooden')
.circuit(5)
.itemOutputs('tfc:stick_bunch')
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.packer('tfg:stick_bundle')
.itemInputs('18x #forge:rods/wooden')
.circuit(8)
.itemOutputs('tfc:stick_bundle')
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
// #endregion
// #region TFC
global.TFC_WOOD_TYPES.forEach(wood => {
// Removed unused assets
event.remove({ id: `tfc:crafting/wood/${wood}_axle` });
event.remove({ id: `tfc:crafting/wood/${wood}_bladed_axle` });
event.remove({ id: `tfc:crafting/wood/${wood}_encased_axle` });
event.remove({ id: `tfc:crafting/wood/${wood}_clutch` });
event.remove({ id: `tfc:crafting/wood/${wood}_gear_box` });
event.remove({ id: `tfc:crafting/wood/${wood}_water_wheel` });
// Removed recipe changes
event.remove({ id: `tfc:crafting/wood/${wood}_lumber_log` });
event.remove({ id: `tfc:crafting/wood/${wood}_button` });
event.remove({ id: `tfc:crafting/wood/${wood}_slab` });
event.remove({ id: `tfc:crafting/wood/${wood}_slab_undo` });
event.remove({ id: `tfc:crafting/wood/${wood}_lumber_planks` });
event.remove({ id: `tfc:crafting/wood/${wood}_stairs` });
event.remove({ id: `tfc:crafting/wood/${wood}_stairs_undo` });
event.remove({ id: `tfc:crafting/wood/palm_mosaic` });
event.remove({ id: `tfc:crafting/wood/palm_mosaic_slab` });
event.remove({ id: `tfc:crafting/wood/palm_mosaic_slab_undo` });
event.remove({ id: `tfc:crafting/wood/palm_mosaic_stairs` });
event.remove({ id: `tfc:crafting/wood/palm_mosaic_stairs_undo` });
TFGWoodBuilder(
event,
`${wood}`,
`tfc:wood/lumber/${wood}`,
`#tfc:${wood}_logs`,
`tfc:wood/log/${wood}`,
`tfc:wood/stripped_log/${wood}`,
`tfc:wood/planks/${wood}`,
`tfc:wood/planks/${wood}_stairs`,
`tfc:wood/planks/${wood}_slab`,
null,
null,
null,
null,
null,
`tfc:wood/planks/${wood}_pressure_plate`,
`tfc:wood/planks/${wood}_button`,
`tfc:wood/wood/${wood}`,
`tfc:wood/stripped_wood/${wood}`,
`tfc:wood/wood/${wood}`,
`tfc:wood/stripped_wood/${wood}`
);
});
TFGMosaicWoodBuilder(
event,
'palm',
'tfc:wood/lumber/palm',
'tfc:wood/planks/palm',
'tfc:wood/planks/palm_mosaic',
'tfc:wood/planks/palm_stairs',
'tfc:wood/planks/palm_mosaic_stairs',
'tfc:wood/planks/palm_slab',
'tfc:wood/planks/palm_mosaic_slab'
);
registerTFGWoodRecycling('tfc', global.TFC_HARDWOOD_TYPES, GTMaterials.get('hardwood'));
registerTFGWoodRecycling('tfc', global.TFC_SOFTWOOD_TYPES, GTMaterials.Wood);
// #endregion
// #region Minecraft
// Bamboo
// Removed recipe changes
const Bamboo_Items = [
'minecraft:stripped_bamboo_block',
'minecraft:bamboo_planks',
'minecraft:bamboo_slab',
'minecraft:bamboo_stairs',
'minecraft:bamboo_fence',
'minecraft:bamboo_fence_gate',
'minecraft:bamboo_door',
'minecraft:bamboo_trapdoor',
'minecraft:bamboo_button',
'minecraft:bamboo_mosaic',
'minecraft:bamboo_mosaic_slab',
'minecraft:bamboo_mosaic_stairs',
'minecraft:bamboo_pressure_plate'
];
Bamboo_Items.forEach(item => {
event.remove({ input: item })
event.remove({ output: item })
});
TFGWoodBuilder(
event,
'bamboo',
'tfg:wood/lumber/bamboo',
null,
'minecraft:bamboo_block',
'minecraft:stripped_bamboo_block',
'minecraft:bamboo_planks',
'minecraft:bamboo_stairs',
'minecraft:bamboo_slab',
'minecraft:bamboo_door',
'minecraft:bamboo_trapdoor',
'minecraft:bamboo_fence',
'minecraft:bamboo_fence_gate',
null,
'minecraft:bamboo_pressure_plate',
'minecraft:bamboo_button',
null,
null
);
TFGMosaicWoodBuilder(
event,
'bamboo',
'tfg:wood/lumber/bamboo',
'minecraft:bamboo_planks',
'minecraft:bamboo_mosaic',
'minecraft:bamboo_stairs',
'minecraft:bamboo_mosaic_stairs',
'minecraft:bamboo_slab',
'minecraft:bamboo_mosaic_slab'
);
// Lumber from log
event.shapeless('8x tfg:wood/lumber/bamboo',
['minecraft:bamboo_block', '#forge:tools/saws']
)
.id(`tfg:shapeless/bamboo_lumber_from_log`);
event.shapeless('8x tfg:wood/lumber/bamboo',
['minecraft:stripped_bamboo_block', '#forge:tools/saws']
)
.id(`tfg:shapeless/bamboo_lumber_from_stripped_log`);
// #endregion
// #region Gregtech
// Removed recipe changes
event.remove({ id: 'gtceu:shaped/treated_fence' });
event.remove({ id: 'gtceu:shaped/treated_fence_gate' });
event.remove({ id: 'gtceu:shaped/treated_fence_gate_screws' });
event.remove({ id: 'gtceu:shaped/treated_stairs' });
event.remove({ id: 'gtceu:assembler/treated_stairs' });
event.remove({ id: 'gtceu:assembler/treated_fence' });
event.remove({ id: 'gtceu:assembler/treated_fence_gate' });
event.remove({ output: 'gtceu:treated_wood_button' });
// Treated wood
TFGWoodBuilder(
event,
'treated_wood',
'gtceu:treated_wood_plate',
null,
null,
null,
'gtceu:treated_wood_planks',
'gtceu:treated_wood_stairs',
'gtceu:treated_wood_slab',
'gtceu:treated_wood_door',
'gtceu:treated_wood_trapdoor',
'gtceu:treated_wood_fence',
'gtceu:treated_wood_fence_gate',
null,
'gtceu:treated_wood_pressure_plate',
'gtceu:treated_wood_button',
null,
null
);
// #endregion
};

View File

@@ -33,23 +33,6 @@ function registerTFGWoodRecipes(event) {
result: { item: 'tfc:powder/wood_ash' }
}).id(`tfg:ae_transform/torch_to_wood_ash`)
// Ladder
event.shaped('8x minecraft:ladder', [
'A A',
'AAA',
'A A'
], {
A: '#forge:rods/wooden'
}).id('gtceu:shaped/ladder')
event.shaped('8x minecraft:ladder', [
'A A',
'AAA',
'A A'
], {
A: '#tfc:lumber'
}).id('tfc:crafting/vanilla/ladder')
event.replaceInput({ id: 'tfc:crafting/vanilla/armor_stand' }, '#minecraft:planks', '#tfc:lumber')
event.remove({ id: 'tfc:crafting/vanilla/armor_stand_bulk' })
@@ -66,59 +49,6 @@ function registerTFGWoodRecipes(event) {
.inputs('#tfg:wood_dusts', TFC.fluidStackIngredient('#forge:creosote', 50))
.id('tfg:barrel/treated_wood_dust')
event.shaped('2x gtceu:treated_wood_door', [
'AA ',
'AA ',
'AA '
], {
A: 'gtceu:treated_wood_plate'
}).id('tfg:shaped/treated_door')
event.shaped('3x gtceu:treated_wood_trapdoor', [
'AAA',
'AAA',
' '
], {
A: 'gtceu:treated_wood_plate'
}).id('tfg:shaped/treated_trapdoor')
event.shaped('gtceu:treated_wood_pressure_plate', [
' B ',
'CDC',
' E '
], {
B: '#tfc:hammers',
C: 'gtceu:treated_wood_slab',
D: '#forge:small_springs',
E: '#forge:tools/screwdrivers'
}).id('gtceu:shaped/treated_pressure_plate')
event.recipes.gtceu.assembler('gtceu:treated_pressure_plate')
.itemInputs('#forge:small_springs', '2x gtceu:treated_wood_slab')
.itemOutputs('gtceu:treated_wood_pressure_plate')
.circuit(3)
.duration(50)
.EUt(2)
event.shapeless(`3x gtceu:treated_wood_button`, [`gtceu:treated_wood_pressure_plate`, '#forge:tools/saws'])
.id(`tfg:shapeless/saw_treated_wood_pressure_plate_to_button`)
event.replaceOutput({ id: 'gtceu:cutter/treated_button' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button')
event.replaceOutput({ id: 'gtceu:cutter/treated_button_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button')
event.replaceOutput({ id: 'gtceu:cutter/treated_button_distilled_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button')
event.replaceOutput({ id: 'greate:cutting/integration/gtceu/cutter/treated_button' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button')
event.replaceOutput({ id: 'greate:cutting/integration/gtceu/cutter/treated_button_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button')
event.replaceOutput({ id: 'greate:cutting/integration/gtceu/cutter/treated_button_distilled_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button')
event.replaceOutput({ id: 'gtceu:cutter/bamboo_button' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button')
event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button')
event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_distilled_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button')
event.replaceOutput({ id: 'greate:cutting/integration/gtceu/bamboo_button' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button')
event.replaceOutput({ id: 'greate:cutting/integration/gtceu/bamboo_button_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button')
event.replaceOutput({ id: 'greate:cutting/integration/gtceu/bamboo_button_distilled_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button')
// Empty Wooden Form
event.shaped('gtceu:empty_wooden_form', [
' AA',
@@ -148,101 +78,4 @@ function registerTFGWoodRecipes(event) {
B: '#minecraft:planks',
C: 'tfc:glue'
}).id('gtceu:shaped/gear_wood')
// Sticks
event.shapeless('2x minecraft:stick', ['#minecraft:saplings', '#forge:tools/knives']).id('tfg:strip_saplings')
event.recipes.gtceu.cutter('tfg:saplings_to_sticks')
.itemInputs('#minecraft:saplings')
.itemOutputs('2x minecraft:stick')
.duration(20)
.EUt(7)
event.recipes.gtceu.packer('tfg:stick_bunch')
.itemInputs('9x #forge:rods/wooden')
.circuit(5)
.itemOutputs('tfc:stick_bunch')
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.packer('tfg:stick_bundle')
.itemInputs('18x #forge:rods/wooden')
.circuit(8)
.itemOutputs('tfc:stick_bundle')
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
// Какие то рецепты дерева
global.TFC_WOOD_TYPES.forEach(wood => {
event.remove({ id: `tfc:crafting/wood/${wood}_axle` })
event.remove({ id: `tfc:crafting/wood/${wood}_bladed_axle` })
event.remove({ id: `tfc:crafting/wood/${wood}_encased_axle` })
event.remove({ id: `tfc:crafting/wood/${wood}_clutch` })
event.remove({ id: `tfc:crafting/wood/${wood}_gear_box` })
event.remove({ id: `tfc:crafting/wood/${wood}_water_wheel` })
// Бревна -> Пиломатериалы
generateCutterRecipe(event, `#tfc:${wood}_logs`, `16x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_log`)
// Доски -> Пиломатериалы
generateCutterRecipe(event, `tfc:wood/planks/${wood}`, `4x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_planks`)
// Ступень -> Пиломатериалы
generateCutterRecipe(event, `tfc:wood/planks/${wood}_stairs`, `3x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_stairs`)
// Плита -> Пиломатериалы
generateCutterRecipe(event, `tfc:wood/planks/${wood}_slab`, `2x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_slab`)
// ? -> Деревянная нажимная пластина
event.shaped(`tfc:wood/planks/${wood}_pressure_plate`, [
' B ',
'CDC',
' E '
], {
B: '#tfc:hammers',
C: `tfc:wood/planks/${wood}_slab`,
D: '#forge:small_springs',
E: '#forge:tools/screwdrivers'
}).id(`tfc:crafting/wood/${wood}_pressure_plate`)
event.recipes.gtceu.assembler(`${wood}_pressure_plate`)
.itemInputs('#forge:small_springs', `2x tfc:wood/planks/${wood}_slab`)
.circuit(3)
.itemOutputs(`2x tfc:wood/planks/${wood}_pressure_plate`)
.duration(50)
.EUt(2)
// ? -> Деревянная кнопка
event.remove({ id: `tfc:crafting/wood/${wood}_button` })
event.shapeless(`3x tfc:wood/planks/${wood}_button`, [`tfc:wood/planks/${wood}_pressure_plate`, '#forge:tools/saws'])
.id(`tfg:shapeless/saw_${wood}_pressure_plate_to_button`)
generateCutterRecipe(event, `tfc:wood/planks/${wood}_pressure_plate`, `6x tfc:wood/planks/${wood}_button`, 50, 7, `${wood}_button`)
// Stripped logs
event.recipes.gtceu.lathe(`tfg:stripping_${wood}_log`)
.itemInputs(`tfc:wood/log/${wood}`)
.itemOutputs(`tfc:wood/stripped_log/${wood}`)
.duration(50)
.EUt(2)
event.recipes.gtceu.lathe(`tfg:stripping_${wood}_wood`)
.itemInputs(`tfc:wood/wood/${wood}`)
.itemOutputs(`tfc:wood/stripped_wood/${wood}`)
.duration(50)
.EUt(2)
event.recipes.vintageimprovements.polishing(`tfc:wood/stripped_log/${wood}`, `tfc:wood/log/${wood}`)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/stripping_${wood}_log`)
event.recipes.vintageimprovements.polishing(`tfc:wood/stripped_wood/${wood}`, `tfc:wood/wood/${wood}`)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/stripping_${wood}_wood`)
})
}

View File

@@ -44,6 +44,7 @@ const registerTFGRecipes = (event) => {
registerTFGWaxRecipes(event)
registerTFGRubberRecipes(event)
registerTFGWoodRecipes(event)
registerTFGWoodenRecipes(event)
registerTFGKnappingRecipes(event)
registerTFGLeatherRecipes(event)
registerTFGClayRecipes(event)

View File

@@ -113,6 +113,7 @@ global.AD_ASTRA_WOOD = [
{
name: 'aeronos',
logs: '#ad_astra:aeronos_caps', log: 'ad_astra:aeronos_stem', stripped_log: null,
log_wood: null, stripped_wood: null,
lumber: 'tfg:wood/lumber/aeronos', plank: 'ad_astra:aeronos_planks',
stair: 'ad_astra:aeronos_stairs', slab: 'ad_astra:aeronos_slab',
fence: 'ad_astra:aeronos_fence', fence_gate: 'ad_astra:aeronos_fence_gate',
@@ -124,6 +125,7 @@ global.AD_ASTRA_WOOD = [
{
name: 'strophar',
logs: '#ad_astra:strophar_caps', log: 'ad_astra:strophar_stem', stripped_log: null,
log_wood: null, stripped_wood: null,
lumber: 'tfg:wood/lumber/strophar', plank: 'ad_astra:strophar_planks',
stair: 'ad_astra:strophar_stairs', slab: 'ad_astra:strophar_slab',
fence:'ad_astra:strophar_fence', fence_gate: 'ad_astra:strophar_fence_gate',
@@ -135,6 +137,7 @@ global.AD_ASTRA_WOOD = [
{
name: 'glacian',
logs: '#ad_astra:glacian_logs', log: 'ad_astra:glacian_log', stripped_log: 'ad_astra:stripped_glacian_log',
log_wood: 'tfg:glacian_wood', stripped_wood: 'tfg:glacian_wood_stripped',
lumber: 'tfg:wood/lumber/glacian', plank: 'ad_astra:glacian_planks',
stair: 'ad_astra:glacian_stairs', slab: 'ad_astra:glacian_slab',
fence: 'ad_astra:glacian_fence', fence_gate: 'ad_astra:glacian_fence_gate',

View File

@@ -50,4 +50,9 @@ global.BENEATH_DISABLED_ITEMS = [
"beneath:wood/sapling/crimson",
"beneath:wood/sapling/warped"
];
];
global.BENEATH_WOOD_TYPES = /** @type {const} */ ([
"crimson",
"warped"
]);

View File

@@ -21,4 +21,9 @@ function registerTFGWoodItems(event) {
event.create('tfg:twigs/alphacene')
.tag('tfc:twigs')
.texture('tfg:item/wood/twig/alphacene')
// Bamboo lumber
event.create('tfg:wood/lumber/bamboo')
.tag('tfc:lumber')
.texture('tfg:item/wood/lumber/bamboo')
}

View File

@@ -10,22 +10,19 @@
"kubejs",
"tacz",
"!kubejs/probe/**",
"!kubejs/assets/**"
"!kubejs/assets/**",
"!defaultconfigs/tfc-server.toml",
"!config/ftbbackups2.json",
"!defaultconfigs/ftbranks/ranks.snbt"
],
"server_overrides": [
"forge-auto-install.txt",
"generate_auto_installation_file.bat",
"minecraft_server.jar",
"server.properties",
"server_starter.conf",
"server-icon.png",
"start_server.bat",
"README.md"
],
"client_overrides": [
"resourcepacks",
"kubejs/assets/**"
"kubejs/assets/**",
"defaultconfigs/tfc-server.toml",
"config/ftbbackups2.json",
"defaultconfigs/ftbranks/ranks.snbt"
],
"projects": {
"ambient-environment": {