This commit is contained in:
Pyritie 2025-07-15 22:29:56 +01:00
commit b24ac77bb3
79 changed files with 6785 additions and 1006 deletions

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

@ -38,6 +38,7 @@ ServerEvents.tags('item', event => {
registerModernMarkingsItemTags(event)
registerMoreRedItemTags(event)
registerHotOrNotItemTags(event)
registerPrimitiveCreaturesItemTags(event)
registerRailWaysItemTags(event)
registerRnrItemTags(event)
registerSophisticatedBackpacksItemTags(event)
@ -237,6 +238,7 @@ ServerEvents.recipes(event => {
registerMinecraftRecipes(event)
registerModernMarkingRecipes(event)
registerMoreRedRecipes(event)
registerPrimitiveCreaturesRecipes(event)
registerProgrammedCircuitCardRecipes(event)
registerRailWaysRecipes(event)
registerRnrRecipes(event)

View file

@ -814,10 +814,10 @@ const registerMinecraftRecipes = (event) => {
.EUt(420)
event.recipes.gtceu.assembler('tfg:minecraft/elytra_repairing')
.itemInputs('6x tfg:polycaprolactam_fabric', Item.of('minecraft:elytra', '{Damage:2045}').strongNBT())
.itemInputs('6x tfg:polycaprolactam_fabric', 'minecraft:elytra')
.circuit(4)
.itemOutputs(Item.of('minecraft:elytra', "{Damage:0}"))
.duration(1600)
.duration(800)
.EUt(120)
event.recipes.gtceu.arc_furnace('tfg:minecraft/arc_furnace/recycling/elytra')
@ -1083,4 +1083,6 @@ const registerMinecraftRecipes = (event) => {
event.shapeless('2x minecraft:gunpowder',
['#forge:tools/mortars', 'tfc:powder/saltpeter', 'tfc:powder/saltpeter', 'tfc:powder/sulfur', 'tfc:powder/charcoal', 'tfc:powder/charcoal', 'tfc:powder/charcoal'])
.id('tfg:shapeless/gunpowder_tfc_style')
event.shapeless('8x minecraft:bone_meal', ['#forge:tools/mortars', 'minecraft:skeleton_skull'])
}

View file

@ -2079,4 +2079,5 @@ function removeMinecraftRecipes(event) {
//#endregion
event.remove({ id: 'minecraft:flower_banner_pattern' })
event.remove({ id: 'gtceu:assembler/lodestone' })
}

View file

@ -2,12 +2,180 @@
function registerPrimitiveCreaturesLoots(event) {
event.addEntityLootModifier('kaolinclayze:tfc')
// kaolin klayze
event.addEntityLootModifier('primitive_creatures:tfc')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([12,16], ['tfc:kaolin_clay', 'minecraft:clay_ball'])
.addLoot('tfc:plant/blood_lily')
event.addEntityLootModifier('kaolinclayze:golem_2')
// graphite glayze
event.addEntityLootModifier('primitive_creatures:golem_2')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([3,5], ['gtceu:rich_raw_graphite'])
.addWeightedLoot([2,4], ['gtceu:rich_raw_graphite'])
const CLOTHING_DROP_RATE = 0.05
// inhabitant - light tan clothes, holds a stone axe
event.addEntityLootModifier('primitive_creatures:iloger_1')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([
// the illusion of randomness
Item.of('tfc:food/bunchberry', 3),
Item.of('tfc:food/cranberry', 4),
Item.of('tfc:food/gooseberry', 5),
Item.of('tfc:food/blackberry', 6),
Item.of('tfc:food/blueberry', 3),
Item.of('tfc:food/cloudberry', 4),
Item.of('tfc:food/elderberry', 5),
Item.of('tfc:food/raspberry', 6),
Item.of('tfc:food/snowberry', 3),
Item.of('tfc:food/strawberry', 4),
Item.of('tfc:food/wintergreen_berry', 5)])
.addAlternativesLoot(
LootEntry.of('primitive_creatures:grh').when(c => c.randomChance(0.8)),
LootEntry.of('gtceu:stone_axe').when(c => c.randomChance(0.3)),
LootEntry.of('primitive_creatures:totem_0').when(c => c.randomChance(0.1)),
LootEntry.of('primitive_creatures:totem_3').when(c => c.randomChance(0.1)))
event.addEntityLootModifier('primitive_creatures:iloger_1')
.randomChance(CLOTHING_DROP_RATE)
.addWeightedLoot([
Item.of('tfc_textile:raw_hat'),
Item.of('tfc_textile:raw_shirt'),
Item.of('tfc_textile:raw_pants'),
Item.of('tfc_textile:raw_socks')])
// herbalist - brown clothes with a mask that looks like a Creaking
event.addEntityLootModifier('primitive_creatures:iloger_2')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([1,2], ['gtceu:tricalcium_phosphate_dust'])
.addAlternativesLoot(
LootEntry.of('tfc:plant/field_horsetail').when(c => c.randomChance(0.3)),
LootEntry.of('tfc:plant/foxglove').when(c => c.randomChance(0.5)),
LootEntry.of('firmalife:beeswax').when(c => c.randomChance(0.8)),
LootEntry.of('primitive_creatures:totem_0').when(c => c.randomChance(0.1)),
LootEntry.of('primitive_creatures:totem_3').when(c => c.randomChance(0.1)))
event.addEntityLootModifier('primitive_creatures:iloger_2')
.randomChance(CLOTHING_DROP_RATE)
.addWeightedLoot([
Item.of('tfc_textile:grizzly_bear_hat'),
Item.of('tfc_textile:grizzly_bear_shirt'),
Item.of('tfc_textile:grizzly_bear_pants'),
Item.of('tfc_textile:grizzly_bear_boots')])
// bonebreaker - skull helmet, bone armor? hits harder, has knockback
event.addEntityLootModifier('primitive_creatures:iloger_3')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([0,2], ['minecraft:flint'])
.addWeightedLoot([1,3], ['minecraft:bone'])
.addAlternativesLoot(
LootEntry.of('gtceu:stone_hammer').when(c => c.randomChance(0.2)),
LootEntry.of('minecraft:skeleton_skull').when(c => c.randomChance(0.1)),
LootEntry.of('primitive_creatures:grh').when(c => c.randomChance(0.5))) // battered wool
event.addEntityLootModifier('primitive_creatures:iloger_3')
.randomChance(CLOTHING_DROP_RATE)
.addWeightedLoot([
Item.of('tfc_textile:direwolf_hat'),
Item.of('tfc_textile:direwolf_shirt'),
Item.of('tfc_textile:direwolf_pants'),
Item.of('tfc_textile:direwolf_boots')])
// forager - leaf on head, leafy clothes (like the swamp vanilla villager type), ranged with poison
event.addEntityLootModifier('primitive_creatures:iloger_4')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([1,3], LootEntry.of('minecraft:tipped_arrow')).addPotion("poison")
.addAlternativesLoot(
LootEntry.of('firmalife:food/nightshade_berry').when(c => c.randomChance(0.7)),
LootEntry.of('minecraft:spider_eye').when(c => c.randomChance(0.7)),
LootEntry.of('primitive_creatures:totem_0').when(c => c.randomChance(0.1)),
LootEntry.of('primitive_creatures:totem_2').when(c => c.randomChance(0.1)))
// hunter - wears brown and white fur, briefly disappears when hit, ranged with weakness
event.addEntityLootModifier('primitive_creatures:iloger_5')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([1,3], LootEntry.of('minecraft:tipped_arrow')).addPotion("weakness")
.addAlternativesLoot(
// placeholder for a blowpipe
LootEntry.of('minecraft:bamboo').when(c => c.randomChance(0.6)),
LootEntry.of('primitive_creatures:grh').when(c => c.randomChance(0.5)), // battered wool
LootEntry.of('primitive_creatures:totem_0').when(c => c.randomChance(0.1)),
LootEntry.of('primitive_creatures:totem_3').when(c => c.randomChance(0.1)))
event.addEntityLootModifier('primitive_creatures:iloger_5')
.randomChance(CLOTHING_DROP_RATE)
.addWeightedLoot([
Item.of('tfc_textile:sabertooth_hat'),
Item.of('tfc_textile:sabertooth_shirt'),
Item.of('tfc_textile:sabertooth_pants'),
Item.of('tfc_textile:sabertooth_boots')])
// shaman - yellow clothes, throws fireballs
event.addEntityLootModifier('primitive_creatures:iloger_6')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([1,2], ['primitive_creatures:f_1']) // primitive explosives
.addWeightedLoot([1,3], ['minecraft:gunpowder'])
.addAlternativesLoot(
LootEntry.of('primitive_creatures:grh').when(c => c.randomChance(0.5)), // battered wool
LootEntry.of('primitive_creatures:totem_2').when(c => c.randomChance(0.1)),
LootEntry.of('primitive_creatures:totem_3').when(c => c.randomChance(0.1)))
event.addEntityLootModifier('primitive_creatures:iloger_6')
.randomChance(CLOTHING_DROP_RATE)
.addWeightedLoot([
Item.of('tfc_textile:cougar_hat'),
Item.of('tfc_textile:cougar_shirt'),
Item.of('tfc_textile:cougar_pants'),
Item.of('tfc_textile:cougar_boots')])
// beast tamer - wears tiger fur, holds vanilla sugarcane? fucking summons ravagers
event.addEntityLootModifier('primitive_creatures:wiloger')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([0,2], ['primitive_creatures:grh']) // battered wool
.addAlternativesLoot(
LootEntry.of('minecraft:lead').when(c => c.randomChance(0.4)),
LootEntry.of('primitive_creatures:totem_0').when(c => c.randomChance(0.1)),
LootEntry.of('primitive_creatures:totem_3').when(c => c.randomChance(0.1)))
event.addEntityLootModifier('primitive_creatures:wiloger')
.randomChance(CLOTHING_DROP_RATE)
.addWeightedLoot([
Item.of('tfc_textile:tiger_hat'),
Item.of('tfc_textile:tiger_shirt'),
Item.of('tfc_textile:tiger_pants'),
Item.of('tfc_textile:tiger_boots')])
// huntsman - lion fur, holds flint club - stuns you in place when hit
event.addEntityLootModifier('primitive_creatures:piloger_9')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addAlternativesLoot(
LootEntry.of('primitive_creatures:yhgi').when(c => c.randomChance(0.2)), // flint club
LootEntry.of('tfc:small_raw_hide').when(c => c.randomChance(0.4)),
LootEntry.of('primitive_creatures:grh').when(c => c.randomChance(0.5))) // battered wool
event.addEntityLootModifier('primitive_creatures:piloger_9')
.randomChance(CLOTHING_DROP_RATE)
.addWeightedLoot([
Item.of('tfc_textile:lion_hat'),
Item.of('tfc_textile:lion_shirt'),
Item.of('tfc_textile:lion_pants'),
Item.of('tfc_textile:lion_boots')])
// mercenary
event.addEntityLootModifier('primitive_creatures:viloger_10')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([1,2], ['minecraft:emerald'])
.addAlternativesLoot(
LootEntry.of('primitive_creatures:grh').when(c => c.randomChance(0.8)), // battered wool
LootEntry.of('gtceu:stone_knife').when(c => c.randomChance(0.3)),
LootEntry.of('primitive_creatures:totem_2').when(c => c.randomChance(0.1)),
LootEntry.of('primitive_creatures:totem_3').when(c => c.randomChance(0.1)))
event.addEntityLootModifier('primitive_creatures:viloger_10')
.randomChance(CLOTHING_DROP_RATE)
.addWeightedLoot([
Item.of('tfc_textile:raw_hat'),
Item.of('tfc_textile:raw_shirt'),
Item.of('tfc_textile:raw_pants'),
Item.of('tfc_textile:raw_socks')])
// mistah beeeaaaasssstt
event.addEntityLootModifier('primitive_creatures:beast')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addWeightedLoot([4,8], ['minecraft:bone'])
// raw meat?
}

View file

@ -0,0 +1,44 @@
// priority: 0
function registerPrimitiveCreaturesRecipes(event) {
// terrible idol crafting
event.remove({ id: 'primitive_creatures:h' })
// the brown idol -> brown dye
event.remove({ id: 'primitive_creatures:eg' })
// craft flint club
event.remove({ id: 'primitive_creatures:rwtge' })
// battered wool to wool block
event.remove({ id: 'primitive_creatures:egwgew' })
// lodestone?
event.remove({ id: 'primitive_creatures:hhg' })
// craft fortified flint club
event.replaceInput({ id: 'primitive_creatures:wegfweg' }, 'primitive_creatures:tt_5', '#tfc:nuggets')
event.replaceInput({ id: 'primitive_creatures:wegfweg' }, 'primitive_creatures:grh', 'tfc:wool')
event.recipes.tfc.knapping(
'tfg:flint_club_head',
'tfg:flint',
[
' XXX ',
' XXX ',
' X ',
' XXX ',
' X '
]
).outsideSlotRequired(false)
.id('tfg:knapping/flint_club_head')
// craft flint club
event.shapeless('primitive_creatures:yhgi', ['tfg:flint_club_head', '#forge:rods/wooden'])
.id('tfg:shapeless/flint_club')
// turn battered wool into tfc wool
event.shapeless('tfc:wool', ['primitive_creatures:grh', 'primitive_creatures:grh', '#forge:tools/knives'])
.id('tfg:shapeless/cleaning_battered_wool')
// mud idol into mud
event.shapeless('6x tfc:daub', ['primitive_creatures:totem_3'])
.id('tfg:shapeless/totem_3_decomp')
}

View file

@ -0,0 +1,28 @@
// priority: 0
function registerPrimitiveCreaturesItemTags(event) {
const DISABLED_ITEMS = [
// idol fragment (combine to make a terrible idol)
'primitive_creatures:tt_5',
// the terrible idol (spawns illager herobrine)
'primitive_creatures:kopo',
// the friendly idol (spawns an allay)
'primitive_creatures:jjj',
]
DISABLED_ITEMS.forEach(item => {
event.removeAllTagsFrom(item)
event.add('c:hidden_from_recipe_viewers', item)
})
// This tag doesn't actually do anything, as the list is hardcoded into the mod,
// but it makes it easier to find what they will accept
event.add('primitive_creatures:mercenary_payment', 'minecraft:rabbit_foot')
event.add('primitive_creatures:mercenary_payment', 'minecraft:leather')
event.add('primitive_creatures:mercenary_payment', 'minecraft:scute')
event.add('primitive_creatures:mercenary_payment', 'minecraft:redstone')
event.add('primitive_creatures:mercenary_payment', 'minecraft:gunpowder')
event.add('primitive_creatures:mercenary_payment', 'minecraft:spider_eye')
event.add('primitive_creatures:mercenary_payment', 'minecraft:flint')
event.add('primitive_creatures:mercenary_payment', 'minecraft:emerald')
}

View file

@ -1,7 +1,10 @@
// priority: 0
function registerSpeciesRecipes(event) {
event.remove({ mod: 'species' })
global.SPECIES_DISABLED_ITEMS.forEach(item => {
event.remove({ input: item })
event.remove({ output: item })
})
event.shapeless('species:music_disc_dial', ['etched:blank_music_disc', 'species:birt_egg'])

View file

@ -295,4 +295,11 @@ const registerTFCRecipes = (event) => {
]).id('tfc:shapeless/jar_lid')
event.replaceInput({ mod: 'tfc' }, 'minecraft:sugar', '#tfg:sugars')
// Sea Water
event.recipes.tfc.barrel_instant()
.inputItem(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Salt, 1))
.inputFluid(Fluid.of('minecraft:water', 1000))
.outputFluid(Fluid.of('tfc:salt_water', 1000))
.id('tfg:barrel/water_to_salt_water')
}

View file

@ -128,6 +128,7 @@ function removeTFCRecipes(event) {
event.remove({ id: `tfc:crafting/windmill_blade` })
event.remove({ id: `tfc:barrel/dye/bleach_windmill_blades` })
event.remove({ id: 'tfc:barrel/fresh_to_salt_water' })
global.MINECRAFT_DYE_NAMES.forEach(dye => {
event.remove({ id: `tfc:barrel/dye/${dye}_windmill_blade` })

View file

@ -64,6 +64,9 @@ const registerTFCItemTags = (event) => {
event.add('tfg:ferments_to_rennet', 'firmalife:food/fig')
event.add('tfg:ferments_to_rennet', 'tfc:plant/ivy')
//Plants
event.add('tfc:plants', '#tfc:wild_fruits')
// Для складывания
event.add('tfc:pileable_ingots', '#forge:ingots')
event.add('tfc:pileable_sheets', '#forge:plates')

View file

@ -42,6 +42,11 @@ const registerTFGItemSize = (event) => {
event.itemSize('tfg:fishing_net/tin_alloy', 'large', 'medium', 'tin_alloy_fishing_net')
event.itemSize('tfg:fishing_net/magnalium', 'large', 'medium', 'magnalium_fishing_net')
event.itemSize('tfg:trowel', 'large', 'medium', 'trowel')
event.itemSize('tfg:harvest_basket', 'large', 'medium', 'harvest_basket')
event.itemSize('tfg:aluminium_harvest_basket', 'large', 'medium', 'aluminium_harvest_basket')
event.itemSize('tfg:rapeseed_product', 'small', 'light', 'rapeseed_product')
event.itemSize('tfg:sunflower_product', 'small', 'light', 'sunflower_product')
@ -64,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

@ -459,6 +459,8 @@ function registerTFGFoodRecipes(event) {
cookingRecipe("corn_tortilla", "firmalife:food/masa", "firmalife:food/corn_tortilla")
cookingRecipe("baked_potato", "tfc:food/potato", "tfc:food/baked_potato")
cookingRecipe("boiled_egg", "#firmalife:foods/raw_eggs", "tfc:food/boiled_egg")
.inputFluids(JsonIO.of({ amount: 200, value: { tag: "tfg:clean_water" }}))

View file

@ -745,4 +745,64 @@ function registerTFGMiscellaneousRecipes(event) {
.itemOutputs('gtceu:quantum_eye')
.duration(24 * 20)
.EUt(480)
// Harvest Baskets
event.shaped('tfg:harvest_basket', [
'BDB',
'ACA',
'AAA'
], {
A: 'tfg:soaked_hardwood_strip',
B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1),
C: 'tfc:glue',
D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1),
}).id('tfg:shaped/harvest_basket_from_wood')
event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_wood')
.itemInputs(
'5x tfg:soaked_hardwood_strip',
ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2),
ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1)
)
.inputFluids(Fluid.of('gtceu:glue', 50))
.itemOutputs('tfg:harvest_basket')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.shaped('tfg:harvest_basket', [
'BDB',
'ACA',
'AAA'
], {
A: 'tfc:soaked_papyrus_strip',
B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1),
C: 'tfc:glue',
D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1),
}).id('tfg:shaped/harvest_basket_from_papyrus')
event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_papyrus')
.itemInputs(
'5x tfc:soaked_papyrus_strip',
ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2),
ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1)
)
.inputFluids(Fluid.of('gtceu:glue', 50))
.itemOutputs('tfg:harvest_basket')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler('tfg:assembler/aluminium_harvest_basket')
.itemInputs(
ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 3),
ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 2),
ChemicalHelper.get(TagPrefix.bolt, GTMaterials.Steel, 2),
ChemicalHelper.get(TagPrefix.rodLong,
GTMaterials.Aluminium, 1)
)
.inputFluids(Fluid.of('gtceu:cobalt_brass', 144))
.itemOutputs('tfg:aluminium_harvest_basket')
.duration(200)
.circuit(4)
.EUt(GTValues.VA[GTValues.LV])
}

View file

@ -85,6 +85,12 @@ function registerTFGPapermakingRecipes(event) {
.inputs('tfg:hardwood_strip', TFC.fluidStackIngredient('#tfc:water', 100))
.outputItem('tfg:soaked_hardwood_strip')
.id('tfg:barrel/soak_hardwood_strip')
event.recipes.gtceu.chemical_bath('tfg:chemical_bath/soak_hardwood_strips')
.inputFluids( JsonIO.of({ amount: 100, value: { tag: "tfc:any_water" }}))
.itemInputs('tfg:hardwood_strip')
.itemOutputs('tfg:soaked_hardwood_strip')
.duration(200)
.EUt(GTValues.VA[GTValues.ULV])
//Create Hardwood Dust using Quern and Millstone/Crushing Wheels
event.recipes.gtceu.macerator('tfg:macerator/macerate_hardwood_strips')

View file

@ -376,4 +376,27 @@ function registerTFGRecyclingRecipes(event) {
.duration(GTMaterials.Titanium.getMass() * 6)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//Aluminium Harvest Basket
event.recipes.gtceu.macerator('tfg:macerator/recycling/aluminium_harvest_basket')
.itemInputs('tfg:aluminium_harvest_basket')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Aluminium, 2),
ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Steel, 1),
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.CobaltBrass, 2)
)
.duration(GTMaterials.Aluminium.getMass() * 2)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/aluminium_harvest_basket')
.itemInputs('tfg:aluminium_harvest_basket')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Aluminium, 2),
ChemicalHelper.get(TagPrefix.nugget, GTMaterials.Steel, 1),
ChemicalHelper.get(TagPrefix.nugget, GTMaterials.CobaltBrass, 2)
)
.duration(GTMaterials.Aluminium.getMass() * 2)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
}

View file

@ -29,7 +29,7 @@ const registerTFGItemTags = (event) => {
//Knapping
event.add('tfc:any_knapping', 'minecraft:flint')
//Tools & Armor
//#region Tools & Armor
event.add('forge:tools/fishing_nets', 'tfg:fishing_net/wood')
event.add('forge:tools/fishing_nets', 'tfg:fishing_net/brass')
event.add('forge:tools/fishing_nets', 'tfg:fishing_net/rose_gold')
@ -44,6 +44,10 @@ const registerTFGItemTags = (event) => {
event.add('forge:tools/trowels', 'tfg:trowel')
event.add('tfc:usable_on_tool_rack', 'tfg:trowel')
event.add('tfg:harvester', 'tfg:harvest_basket')
event.add('tfg:harvester', 'tfg:aluminium_harvest_basket')
//#endregion
// #region Paper from wood
event.add('tfg:hardwood_strips', 'tfg:hardwood_strip')
event.add('tfg:hardwood_strips', 'tfg:soaked_hardwood_strip')
@ -310,6 +314,7 @@ const registerTFGItemTags = (event) => {
//#endregion
}
//#region Blocks
const registerTFGBlockTags = (event) => {
event.add('minecraft:mineable/shovel', 'tfg:ash_pile')
@ -340,8 +345,13 @@ const registerTFGBlockTags = (event) => {
event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_dripstone')
event.add('tfc:rock/hardened', 'tfg:rock/hardened_dripstone')
event.add('tfg:harvester_harvestable', '#tfc:fruit_tree_leaves')
event.add('tfg:harvester_harvestable', '#tfc:berry_bushes')
event.add('tfg:harvester_harvestable', '#tfc:any_spreading_bush')
// #endregion
}
//#endregion
//#region Fluids
const registerTFGFluidTags = (event) => {