Integrated Ad Astra wood & and added wood recipe utility (#1346)

* - Yeast recipe conflict fix

* - Fixed seed oil voiding in barrels. And item weight inconsistency.

* - Reduced loading screen logo size by 4MB

* - Update Changelog

* - Compressed loading screen images to maybe help with ram

* - Added default gui scale to make the main menu look better on first launch

* - Update Changelog

* - Added utility script for adding circuits to existing recipes

* fixed changelog conflict

Signed-off-by: Redeix <59435925+Redeix@users.noreply.github.com>

* - Added harvest baskets

* - Fixed baked potato recipe mixing from oven

* - Allowed elytras to be repaired regardless of damage

* - Fixed sea water barrel recipe

* - Gave plants tags to bushes so they can have other uses

* - Pushed stubborn models

* - updated Changelog

* - Changelog typo

* - Integrated Ad Astra wood

* - Updated changelog

---------

Signed-off-by: Redeix <59435925+Redeix@users.noreply.github.com>
This commit is contained in:
Redeix 2025-07-15 11:41:08 -05:00 committed by GitHub
parent 5a567b959b
commit 31b6da9f1c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
25 changed files with 340 additions and 10 deletions

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "ad_astra:item/aeronos_stem"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "ad_astra:item/glacian_log"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "ad_astra:item/glacian_stripped"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "ad_astra:item/strophar_stem"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

View file

@ -131,6 +131,12 @@
"block.tfg.migmatite_support": "Migmatite Support",
"block.tfg.travertine_support_horizontal": "Travertine Horizontal Support",
"block.tfg.travertine_support": "Travertine Support",
"block.tfg.glacian_support": "Glacian Support",
"block.tfg.glacian_support_horizontal": "Glacian Horizontal Support",
"block.tfg.strophar_support": "Strophar Support",
"block.tfg.strophar_support_horizontal": "Strophar Horizontal Support",
"block.tfg.aeronos_support": "Aeronos Support",
"block.tfg.aeronos_support_horizontal": "Aeronos Horizontal Support",
"block.tfg.rock.hardened_deepslate": "Hardened Migmatite",
"block.tfg.rock.hardened_blackstone": "Hardened Pyroxenite",
"block.tfg.rock.hardened_dripstone": "Hardened Travertine",
@ -442,6 +448,9 @@
"item.tfg.compressed_trimix_3_bucket": "50/30/20 Trimix-3 Bucket",
"item.tfg.harvest_basket": "Harvest Basket",
"item.tfg.aluminium_harvest_basket": "Aluminium Harvest Basket",
"item.tfg.wood.lumber.aeronos": "Aeronos Lumber",
"item.tfg.wood.lumber.strophar": "Strophar Lumber",
"item.tfg.wood.lumber.glacian": "Glacian Lumber",
"material.tfg.latex": "Latex",
"material.tfg.vulcanized_latex": "Vulcanized Latex",
"material.tfg.fluix": "Fluix",

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 B

View file

@ -84,6 +84,11 @@ const registerTooltips = (event) =>
text.add(1, text.of('§79 x 5 x 9'))
})
})
global.AD_ASTRA_WOOD.forEach(wood => {
event.addAdvanced([`tfg:${wood.name}_support`], (item, advanced, text) => {
text.add(1, text.of('§79 x 5 x 9'))
})
})
event.addAdvanced(['tfg:light_concrete_support', 'tfg:dark_concrete_support', 'tfg:rebar_support'], (item, advanced, text) => {
text.add(1, text.of('§717 x 9 x 17'))
})

View file

@ -17,4 +17,8 @@ function registerTFCDataForAdAstra(event) {
food.dairy(5)
food.decayModifier(10)
})
global.AD_ASTRA_WOOD.forEach(wood => {
event.fuel(wood.logs, 800, 1500, null)
})
}

View file

@ -697,4 +697,40 @@ const registerAdAstraRecipes = (event) => {
})
//#endregion
//#region Wood
event.remove({ type: 'greate:cutting', input: '#ad_astra:aeronos_caps' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:aeronos_planks' })
event.remove({ type: 'greate:cutting', input: '#ad_astra:strophar_caps' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_log' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:stripped_glacian_log' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:strophar_planks' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_planks' })
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('16x 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('16x 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')
generateGreenHouseRecipe(event, '8x ad_astra:glacian_fur', 16000, '64x ad_astra:glacian_log', 'tfg:green_house/glacian_tree', 'ad_astra:moon', 8, '8x ad_astra:glacian_leaves', GTValues.VA[GTValues.MV])
generateGreenHouseRecipe(event, '8x ad_astra:strophar_mushroom', 16000, '64x ad_astra:strophar_stem', 'tfg:green_house/strophar_mushroom', 'ad_astra:moon', 8, '16x ad_astra:strophar_cap', GTValues.VA[GTValues.MV])
generateGreenHouseRecipe(event, '8x ad_astra:aeronos_mushroom', 16000, '64x ad_astra:aeronos_stem', 'tfg:green_house/aeronos_mushroom', 'ad_astra:moon', 8, '16x ad_astra:aeronos_cap', GTValues.VA[GTValues.MV])
//#endregion
}

View file

@ -81,6 +81,28 @@ const registerAdAstraItemTags = (event) => {
event.add('ad_astra:space_suit_items', 'gtceu:quarktech_helmet')
event.add('ad_astra:space_suit_items', 'gtceu:quarktech_leggings')
event.add('ad_astra:space_suit_items', 'gtceu:quarktech_boots')
event.remove('minecraft:wool', 'ad_astra:glacian_fur')
global.AD_ASTRA_WOOD.forEach(wood => {
if (wood.log) {
event.add('minecraft:logs', wood.log)
event.add('minecraft:logs_that_burn', wood.log)
}
if (wood.stripped_log) {
event.add('minecraft:logs', wood.stripped_log)
event.add('minecraft:logs_that_burn', wood.stripped_log)
}
if (wood.isHardwood == true) {
event.add('tfg:hardwood', wood.logs)
} else {
event.add('tfg:softwood', wood.logs)
}
})
}
const registerAdAstraBlockTags = (event) => {

View file

@ -60,14 +60,16 @@ const generateCutterRecipe = (event, input, output, duration, EUt, id) => {
* Function for generating greenhouse recipes.
*
* @param {*} event
* @param {string} input -Item
* @param {number} fluid_amount -mB
* @param {string} output -Item
* @param {string} input -Item (Not consumed)
* @param {number} fluid_amount -mB (uses #tfg:clean_water)
* @param {string} output -Item (Chanced output uses input item)
* @param {string} id -Recipe ID
* @param {string} dimension -Dimension ID
* @param {number} fertiliser_count
* @param {string} output_seconday -Item (Optional, if there should be a third output)
* @param {string} tier - GTValues.VA[] (Optional, defaults to LV)
*/
const generateGreenHouseRecipe = (event, input, fluid_amount, output, id, dimension, fertiliser_count) => {
const generateGreenHouseRecipe = (event, input, fluid_amount, output, id, dimension, fertiliser_count, output_secondary, tier) => {
// Без удобрения (Without fertilizer)
let r = event.recipes.gtceu.greenhouse(id)
@ -78,10 +80,18 @@ const generateGreenHouseRecipe = (event, input, fluid_amount, output, id, dimens
.chancedOutput(input, 750, 0)
.chancedOutput(input, 500, 0)
.duration(36000) // 30 mins
.EUt(GTValues.VA[GTValues.LV])
if (dimension != null)
if (dimension != null){
r.dimension(dimension)
}
if (output_secondary != null){
r.chancedOutput(output_secondary, 750, 0)
}
if (tier != null){
r.EUt(tier)
} else {
r.EUt(GTValues.VA[GTValues.LV])
}
// С удобрением (With fertilizer)
r = event.recipes.gtceu.greenhouse(`${id}_fertilized`)
@ -93,10 +103,18 @@ const generateGreenHouseRecipe = (event, input, fluid_amount, output, id, dimens
.chancedOutput(input, 4000, 0)
.chancedOutput(input, 3000, 0)
.duration(12000) // 10 mins
.EUt(GTValues.VA[GTValues.LV])
if (dimension != null)
if (dimension != null){
r.dimension(dimension)
}
if (output_secondary != null){
r.chancedOutput(output_secondary, 4000, 0)
}
if (tier != null){
r.EUt(tier)
} else {
r.EUt(GTValues.VA[GTValues.LV])
}
}
//#endregion
@ -279,4 +297,177 @@ function addCircuitToRecipe(event, recipeId, circuitNumber) {
recipe.json.add("inputs", inputs);
});
}
//#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])
}
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:springs')
.itemOutputs(`2x ${pressure_plate}`)
.duration(50)
.circuit(0)
.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])
}
}
//#endregion

View file

@ -69,6 +69,10 @@ const registerTFGSupportData = (event) => {
event.support(`tfg:${stone}_support_horizontal`, 2, 2, 4, `${stone}_support`)
})
global.AD_ASTRA_WOOD.forEach(wood => {
event.support(`tfg:${wood.name}_support_horizontal`, 2, 2, 4, `${wood.name}_support`)
})
}

View file

@ -109,4 +109,10 @@ global.BREATHABLE_COMPRESSED_AIRS =
'tfg:compressed_heliox_3',
'tfg:compressed_trimix',
'tfg:compressed_trimix_3'
];
];
global.AD_ASTRA_WOOD = [
{name: 'aeronos', logs: '#ad_astra:aeronos_caps', log: 'ad_astra:aeronos_stem', stripped_log: 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', door: 'ad_astra:aeronos_door', trapdoor: 'ad_astra:aeronos_trapdoor', button: null, pressure_plate: null, support: 'tfg:aeronos_support', isHardwood: false},
{name: 'strophar', logs: '#ad_astra:strophar_caps', log: 'ad_astra:strophar_stem', stripped_log: 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', door:'ad_astra:strophar_door', trapdoor: 'ad_astra:strophar_trapdoor', button: null, pressure_plate: null, support: 'tfg:strophar_support', isHardwood: false},
{name: 'glacian', logs: '#ad_astra:glacian_logs', log: 'ad_astra:glacian_log', stripped_log: 'ad_astra:stripped_glacian_log', 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', door: 'ad_astra:glacian_door', trapdoor: 'ad_astra:glacian_trapdoor', button: 'ad_astra:glacian_button', pressure_plate: 'ad_astra:glacian_pressure_plate', support: 'tfg:glacian_support', isHardwood: true},
]

View file

@ -138,4 +138,24 @@ function registerTFGSupportBlocks(event) {
.requiresTool(true)
})
global.AD_ASTRA_WOOD.forEach(wood => {
event.create(`tfg:${wood.name}_support`, 'tfc:support')
.textureAll(`tfg:block/support/${wood.name}_support`)
.horizontal(horizontal => {
horizontal.textureAll(`tfg:block/support/${wood.name}_support`)
horizontal.soundType('wood')
horizontal.hardness(2)
horizontal.resistance(2)
horizontal.mapColor('color_orange')
horizontal.tagBlock('minecraft:mineable/axe')
horizontal.requiresTool(false)
})
.soundType('wood')
.hardness(2)
.resistance(2)
.mapColor('color_orange')
.tagBlock('minecraft:mineable/axe')
.requiresTool(false)
})
}

View file

@ -13,12 +13,20 @@ const registerTFGItems = (event) => {
event.create('tfg:vitrified_pearl')
// #endregion
// #region Orbit dimension markers
// #region Space
// Orbit dimension markers
event.create('tfg:marker/earth_orbit').tag('c:hidden_from_recipe_viewers')
event.create('tfg:marker/moon_orbit').tag('c:hidden_from_recipe_viewers')
event.create('tfg:marker/mars_orbit').tag('c:hidden_from_recipe_viewers')
event.create('tfg:marker/venus_orbit').tag('c:hidden_from_recipe_viewers')
event.create('tfg:marker/mercury_orbit').tag('c:hidden_from_recipe_viewers')
global.AD_ASTRA_WOOD.forEach(wood => {
event.create(`tfg:wood/lumber/${wood.name}`)
.translationKey(`item.tfg.${wood.name}_lumber`)
.tag('tfc:lumber')
})
// #endregion
// #region Paper making