* fixed rabbit houses not spawning, put them in every biome but reduced the weight a bit
* changed moon rocks to be based off noise instead of biomes
* climate stuff
* back on that moon decoration grindset
* Rocket craft
* lunar foliage
* New crafting process for the Tier 1 Rocket (#971)
* Rocket craft
* fix name for asbestos
Signed-off-by: TomPlop <tomdidome@gmail.com>
* fix asbestos name
Signed-off-by: TomPlop <tomdidome@gmail.com>
* remove wires for rocket alloy and fix asbestos
Signed-off-by: TomPlop <tomdidome@gmail.com>
---------
Signed-off-by: TomPlop <tomdidome@gmail.com>
* removed kjs moon plants since they're in tfg-core now
* chorus plants!
* lang update
* moon biome/feature updates, added chorus plants
* this fucking lang that I hate
* added proper loose rock, rock pile, and rock delta features for all the moon rock types, added coral features, retextured warped vines
* added spikes for all ad astra rocks
* finished adding spikes for all rocks
* fixed moon rabbit houses
* HV Quests in eng and fixes for others quests and HV integration (#998)
* moved moonbase structure to the last step of worldgen so it doesn't get stuff placed on top of it
* langs for biomes
* tweaks for moon spikes and warped vines, added asurine biome decoration
* updated langs
* tweak to placement of loose moon stones
* spikes should now only generate underground
* craters...? not a huge fan of these tbh
* never mind, those craters looked bad
* loot tables for new moon blocks
* loot tables for "meteorites" and quartz blocks
* craters but for realsies this time
* Fixes for quests (#1000)
* ad astra configs
* added recipes for the oxygen loader
* started a tfg space recipes file, moved the air collector ones there
* Bedrock miner for the moon (#1021)
* bedrock vein moon
* Bedrock miner implementation
* adding mica vein and fixing vein id with tfg
* fix for id mica vein
* Fix Electrolyzing lang formate for moon update (#1032)
* changed moon worldgen depth from -64 to 0
* pakku
* figured out how to make pakku actually add the old version of ad astra we want
* added giselle-addon back for now
* fixed merge
* existing greenhouse recipes now require to be on earth
* moved these into a different file
* retextured raw iron block / raw iron ore, changed ad astra sky stone to look like more of a meteorite, langs
* removed brittle charcoal
* removed dead firmalife event
* added sand layer blocks
* added sand piles, added new sandy biome that replaces lunar_plains sometimes
* removed moon spikes
* oops fixed the spikes
* added loose rocks back to lunar_sands
* biome lang
* forgor to add lunar sands to the moon biome list
* changed stone layers so they all follow the same noise (easier to understand since that's how tfc does it too, more or less)
* ad astra recipe tweaks
* started recipes for some deco blocks
* updated ore field guide
* moonbase structure legs (I hate jigsaws!)
* tweaks to the asurine geode because it seems to cause chunk errors sometimes
* added rabbits to all neutral/sparse biomes, removed from all dense ones
* remove cheese block
* mobs for moon biomes
* loot tables and tags for moon endermen
* item sizes for ad astra
* yumy popped chorus fruit (needs a cooking recipe)
* biome tweaks again
* biome mob tweaks again
* more work on deco blocks, needs checking
* fixed rabbit spawns
* rabbit spawn tweaks, removed endermites because they're screwing with other mob spawns
* we got our own moon carvers now! that don't put lava underground any more!
* ad astra recipe tweaks and finishing up
* removed duplicate white flag recipe
* solar panel tweaks
* langs
* what if we just added recipes for these?
* added recipes for ae2 deco blocks, stone dust centrifuge recipes for the moon
* ash pile always gives ash
* chorus flower loot table
* desh raw ore block change
* ore vein updates
* oh yeah there's no etrium ore
* langs
* tfc-ambiental tooltips for space suits
* more recipe tweaks
* we love material unification
* fixed ad astra's lamps so they actually emit light lmao
* removed FE cables 💔
* adjusted the brightness of the generated raw ore textures
* langs
* mysterious cube recipe
* cc recipe tweaks
* langs
* asurine dust + centrifuge recipes
* does this fix the weird squares with structures?
* moon noise tweaks
* chorus/lightbloom stuff
* remove ad-astra-giselle-addon, tweak netherite spacesuit recipes
* revert new raw iron texture
* forgor one of the giselle recipes
* removed giselle quest
* langs
* compressed airs!
* whatever this is
* antigravity! and zip gun tags
* lang
* rearranged food recipes into hopefully a good format?
* custom gregtech machines and logic to handle TFC recipes (#1160)
* Change lv chem reactor quest to require any container with rubber instead of a rubber bucket
Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com>
* Add placeholder assets for food machines (copied from gtceu)
* remove greenhouse definition from kubejs
* change greenhouse recipe
* Rework recipes file
---------
Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com>
Signed-off-by: Pyritie <pyritie@gmail.com>
Co-authored-by: Pyritie <pyritie@gmail.com>
* pakku updates
* update greenhouse quest
* update greenhouse tooltip
* comment out coconut milk
* langs
* tooltip fix
* wrong food lang
* recipe fixes
* started work on rewriting the readme
* Update pakku-lock.json for lunchbox fix (#1164)
* - Update pakku-lock.json for lunchbox fix
* - Update pakku-lock.json
* Update pakku-lock.json
* bump
* Add some more food recipes (#1166)
* Change lv chem reactor quest to require any container with rubber instead of a rubber bucket
Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com>
* Add placeholder assets for food machines (copied from gtceu)
* remove greenhouse definition from kubejs
* change greenhouse recipe
* Rework recipes file
* Modify food recipes
* Add some more recipes
* add more recipes and tidy up food recipe file
* change incorrect string
---------
Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com>
Signed-off-by: Pyritie <pyritie@gmail.com>
Co-authored-by: Pyritie <pyritie@gmail.com>
* - Food changes
* - Updated texture for aqueous accumulator
* Update README.md
Signed-off-by: Pyritie <pyritie@gmail.com>
* - Updated texture for aqueous accumulator (#1168)
* - Food changes (#1167)
* fixes #1165
* removed gems tag from flint
* fixes #1162
* Migmatite conflict fix (#1153)
* Migmatite conflict fixe
Tbh I can hardly call this a good fix, but tbh with Stonecutter coming back this might even be meaningless
Signed-off-by: Jean Roberto de Souza <81846511+JeanRdSz@users.noreply.github.com>
* Update Migmatite
Signed-off-by: Jean Roberto de Souza <81846511+JeanRdSz@users.noreply.github.com>
* Update recipes.rocks.js
Signed-off-by: Jean Roberto de Souza <81846511+JeanRdSz@users.noreply.github.com>
---------
Signed-off-by: Jean Roberto de Souza <81846511+JeanRdSz@users.noreply.github.com>
* fixed some VI/rolling mill recipes that were still generating for removed items
* tweaked zinc color, added new plated block color
* nerfed durability of wooden tongs, slightly tweaked their recipe
* changelog
* quest updates, langs
* Adding glow ink recipe (#1171)
* Adding glow ink recipe
* config test
* changing to chem bath and 'glowing dye'
---------
Co-authored-by: Xikaro <os.valerievich@ya.ru>
* fixed ice capsule recipe not filling it up completely
* material and rose quartz stuff
* Bump softprops/action-gh-release in the dependencies group (#1172)
Bumps the dependencies group with 1 update: [softprops/action-gh-release](https://github.com/softprops/action-gh-release).
Updates `softprops/action-gh-release` from 2.2.2 to 2.3.2
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v2.2.2...v2.3.2)
---
updated-dependencies:
- dependency-name: softprops/action-gh-release
dependency-version: 2.3.2
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* updated dimension marker for the beneath, new ones for other planets
* langs
* mushroom blocks now drop way less mushroom
* Active/food (#1176)
* rearranged food recipes into hopefully a good format?
* custom gregtech machines and logic to handle TFC recipes (#1160)
* Change lv chem reactor quest to require any container with rubber instead of a rubber bucket
Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com>
* Add placeholder assets for food machines (copied from gtceu)
* remove greenhouse definition from kubejs
* change greenhouse recipe
* Rework recipes file
---------
Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com>
Signed-off-by: Pyritie <pyritie@gmail.com>
Co-authored-by: Pyritie <pyritie@gmail.com>
* update greenhouse quest
* update greenhouse tooltip
* comment out coconut milk
* langs
* tooltip fix
* wrong food lang
* recipe fixes
* Add some more food recipes (#1166)
* Change lv chem reactor quest to require any container with rubber instead of a rubber bucket
Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com>
* Add placeholder assets for food machines (copied from gtceu)
* remove greenhouse definition from kubejs
* change greenhouse recipe
* Rework recipes file
* Modify food recipes
* Add some more recipes
* add more recipes and tidy up food recipe file
* change incorrect string
---------
Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com>
Signed-off-by: Pyritie <pyritie@gmail.com>
Co-authored-by: Pyritie <pyritie@gmail.com>
* - Food changes
---------
Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com>
Signed-off-by: Pyritie <pyritie@gmail.com>
Signed-off-by: Redeix <59435925+Redeix@users.noreply.github.com>
Co-authored-by: Pyritie <pyritie@gmail.com>
Co-authored-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com>
* Revert "Active/food (#1176)" (#1177)
This reverts commit 6c3fce648b.
* Revert "merge"
* - Fixed brining and smoking recipes and added drying recipes. (#1181)
* fixed ISPRecipeLogic path
* langs
* fixed magnetic neodymium material set inconsistency
* updated veins
* removed dioside, fayalite, enstatite
* removed old refrigerator, added conversion to new one
* whoops, conversion recipe was the wrong way around
* added some text to the food recipes!
* fixed vat having the wrong fluid for dyes, added other dye fluids
* whoops that removed the magnet icon from magnetic neodymium
* fix duplicate dyes
* firmalife moment
* did I forget to save this last night or something...?
* added a second recipe for leather water flask sides
* people are gonna hate me for this
* lang
* balance tweak?
* oh so that's why
* chicken
* dyes
* Whitelisted molds and pumps for Beneath Hellforge (#1183)
Signed-off-by: Indi <JEngelmannPE@gmail.com>
* fix refrigerator in structure
* species stuff and loot tables
* emi categories
* langs for bedrock ores
* trying to get the moon rabbit houses to not put squares on the ground
* birt stuff
* is this ever going to work?
* mob changes in moon biomes since we have birts and surface limpets now
* reduce the spawning of limpets
* loot table for birt dwelling
* the other egg tag for the birt egg
* I think that's how you do emissive textures?
* aircraft configs
* fix birt dwelling model
* - Merge current Venus progress (#1185)
* one of the mud hut structures had an old gregtech zinc ingot
* hid the netherite space suit recipes, tweaked the normal space suit a little
* cleaned up some of the tfc data files, also added moon meat!
* nerfed lava aqueous accumulator a bit
* fixed a few other steel items being extractable in LV
* changelog
* reorganized stone dusts, nerfed them a bit more
* changelog
* changelog, added blood lily to klayze loot
* changelog
* removed burpflower field guide page
* changelog
* comments
* changed rhyolite to use moon sand instead of white sand
* - Lots of food stuff (#1196)
* - Lots of food stuff
* Updated Changelog
* changed dry ice and calorie paste recipes (#1201)
* - Lots of food stuff
* Updated Changelog
* Changed dry ice and calorie paste recipes
* Update recipes.miscellaneous.js
Signed-off-by: Redeix <59435925+Redeix@users.noreply.github.com>
---------
Signed-off-by: Redeix <59435925+Redeix@users.noreply.github.com>
* lunchbox update into Pakku (#1200)
* Refactored KubeJS recipes for GT compatibility
lunchbox update into Pakku
* Refactored KubeJS recipes for GT compatibility
lunchbox update into Pakku
fixed bowl bug
fixed dupe food bug
* whitelisted glue for wood buckets/barrels
* removed better foliage again + visual workbench (doesn't handle recipes with greg tools very well)
* ABS glowstone recipe (#1202)
* Added ABS glowstone recipe
Idk how useful this is but I want it
Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
* Update recipes.js
Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
---------
Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
* whoops
* no circuit needed here
* added dry ice to calorie paste recipe
* added space suit fabric
* fixed some models needing particles
* fixed recipe conflict with mushroom blocks
* tweaked glowstone, added purpur recipes, changelog
* changed clay bricks to extruder/curving press instead of assembler
* changelog
* Liquid burning (#1204)
* Added ABS glowstone recipe
Idk how useful this is but I want it
Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
* Update recipes.js
Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
* Update recipes.js
Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
* Added the straw
TomTomTom gave it to me to copy paste it here so the straw is all his work
Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
* Now it's tin alloy fluid pipe as per pyritie's wishes
Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
* Added Tom's anvil recipe for the straw
Also added comments to make it a clear region
Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
* Tier 5 now for straw
Tom edited the message after I saw it .
Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
* Tom's changes to anvil recipe , now tier 3 and plate instead of pipe
Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
---------
Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
* Updated some recipes (Andesite table cover, chain conveyor, bound cardboard)
* Create logistics quests draft
* Nerfed rose quartz glacier spawn rate a bit by setting explicit temp ranges
---------
Signed-off-by: TomPlop <tomdidome@gmail.com>
Signed-off-by: Redeix <59435925+Redeix@users.noreply.github.com>
Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com>
Signed-off-by: Pyritie <pyritie@gmail.com>
Signed-off-by: Jean Roberto de Souza <81846511+JeanRdSz@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Indi <JEngelmannPE@gmail.com>
Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
Co-authored-by: Pyritie <pyritie@gmail.com>
Co-authored-by: TomPlop <tomdidome@gmail.com>
Co-authored-by: Redeix <59435925+Redeix@users.noreply.github.com>
Co-authored-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com>
Co-authored-by: Xikaro <os.valerievich@ya.ru>
Co-authored-by: Redeix <brayden.j.m.ford@gmail.com>
Co-authored-by: Jean Roberto de Souza <81846511+JeanRdSz@users.noreply.github.com>
Co-authored-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Indi <JEngelmannPE@gmail.com>
Co-authored-by: Thomasx0 <153584223+Thomasx0@users.noreply.github.com>
Co-authored-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
914 lines
No EOL
35 KiB
JavaScript
914 lines
No EOL
35 KiB
JavaScript
// priority: 0
|
||
|
||
function registerGTCEUMetalRecipes(event) {
|
||
|
||
const makeToolRecipe = (toolType, headTagPrefix, extruderMold, cirucitMeta, material) => {
|
||
const toolItem = ToolHelper.get(toolType, material)
|
||
if (toolItem.isEmpty())
|
||
return
|
||
|
||
const toolHeadItem = ChemicalHelper.get(headTagPrefix, material, 1)
|
||
if (toolHeadItem.isEmpty())
|
||
return
|
||
|
||
// Skip this one because it has a duping bug, and you can't remove the macerator/arc furnace iron pick recipes
|
||
if (material == GTMaterials.Iron)
|
||
return;
|
||
|
||
event.recipes.tfc.advanced_shapeless_crafting(
|
||
TFC.itemStackProvider.of(toolItem).copyForgingBonus().copyHeat(),
|
||
[toolHeadItem, '#forge:rods/wooden'], toolHeadItem)
|
||
.id(`gtceu:shaped/${toolType.name}_${material.getName()}`)
|
||
|
||
processToolHead(headTagPrefix, extruderMold, cirucitMeta, material)
|
||
}
|
||
|
||
const processToolHead = (headTagPrefix, extruderMold, cirucitMeta, material) => {
|
||
const toolHeadItem = ChemicalHelper.get(headTagPrefix, material, 1)
|
||
if (toolHeadItem.isEmpty())
|
||
return
|
||
|
||
if (material.hasProperty(PropertyKey.INGOT)) {
|
||
const ingotItem = ChemicalHelper.get(TagPrefix.ingot, material, 1)
|
||
if (ingotItem.isEmpty()) return
|
||
|
||
event.recipes.gtceu.extruder(`tfg:extrude_${material.getName()}_ingot_to_${new String(headTagPrefix.name).toLowerCase()}_head`)
|
||
.itemInputs(ingotItem.copyWithCount(Math.floor(headTagPrefix.materialAmount() / GTValues.M)))
|
||
.notConsumable(extruderMold)
|
||
.itemOutputs(toolHeadItem)
|
||
.duration(material.getMass() * 6)
|
||
.EUt(GTValues.VA[GTValues.LV])
|
||
|
||
if (headTagPrefix.materialAmount() / GTValues.M == 1) {
|
||
event.custom({
|
||
type: 'vintageimprovements:curving',
|
||
ingredients: [ingotItem],
|
||
itemAsHead: extruderMold,
|
||
results: [toolHeadItem],
|
||
processingTime: material.getMass() * 6 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER
|
||
}).id(`tfg:vi/curving/${material.getName()}_ingot_to_${new String(headTagPrefix.name).toLowerCase()}_head`)
|
||
}
|
||
else {
|
||
event.custom({
|
||
type: 'vintageimprovements:curving',
|
||
// have to do [item, item] instead of [item x2]
|
||
ingredients: [ingotItem, ingotItem],
|
||
itemAsHead: extruderMold,
|
||
results: [toolHeadItem],
|
||
processingTime: material.getMass() * 6 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER
|
||
}).id(`tfg:vi/curving/${material.getName()}_ingot_to_${new String(headTagPrefix.name).toLowerCase()}_head`)
|
||
}
|
||
|
||
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_${new String(headTagPrefix.name).toLowerCase()}_head`)
|
||
.itemInputs(toolHeadItem)
|
||
.itemOutputs(ChemicalHelper.get(TagPrefix.dust, material, 1))
|
||
.duration(material.getMass() * 6)
|
||
.category(GTRecipeCategories.MACERATOR_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.arc_furnace(`tfg:arc_furnace_${material.getName()}_${new String(headTagPrefix.name).toLowerCase()}_head`)
|
||
.itemInputs(toolHeadItem)
|
||
.itemOutputs(ChemicalHelper.get(TagPrefix.ingot, material, 1))
|
||
.duration(material.getMass() * 6)
|
||
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.LV])
|
||
|
||
if (GTMaterials.Stone != material) {
|
||
event.recipes.gtceu.extractor(`tfg:extract_${material.getName()}_${new String(headTagPrefix.name).toLowerCase()}_head`)
|
||
.itemInputs(toolHeadItem)
|
||
.outputFluids(Fluid.of(material.getFluid(), 144))
|
||
.duration(material.getMass() * 6)
|
||
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
|
||
.EUt(material.hasProperty(PropertyKey.BLAST) ? GTValues.VA[GTValues.MV] : GTValues.VA[GTValues.ULV])
|
||
}
|
||
|
||
} else if (material.hasProperty(PropertyKey.GEM)) {
|
||
|
||
const gemItem = ChemicalHelper.get(TagPrefix.gem, material, 1)
|
||
if (gemItem.isEmpty()) return
|
||
|
||
event.recipes.gtceu.laser_engraver(`tfg:engrave_${material.getName()}_gem_to_${new String(headTagPrefix.name).toLowerCase()}_head`)
|
||
.itemInputs(gemItem.copyWithCount(Math.floor(headTagPrefix.materialAmount() / GTValues.M)))
|
||
.notConsumable(ChemicalHelper.get(TagPrefix.lens, GTMaterials.Glass, 1))
|
||
.circuit(cirucitMeta)
|
||
.itemOutputs(toolHeadItem)
|
||
.duration(material.getMass() * 6)
|
||
.EUt(GTValues.VA[GTValues.LV])
|
||
|
||
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_${new String(headTagPrefix.name).toLowerCase()}_head`)
|
||
.itemInputs(toolHeadItem)
|
||
.itemOutputs(ChemicalHelper.get(TagPrefix.dust, material, 1))
|
||
.duration(material.getMass() * 6)
|
||
.category(GTRecipeCategories.MACERATOR_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
}
|
||
// else: ignore :3
|
||
}
|
||
|
||
const processToolMortar = (toolType, material) => {
|
||
const toolItem = ToolHelper.get(toolType, material)
|
||
if (toolItem.isEmpty()) return
|
||
|
||
const usableTagPrefix = material.hasProperty(PropertyKey.GEM) ? TagPrefix.gem : TagPrefix.ingot;
|
||
const usableItem = ChemicalHelper.get(usableTagPrefix, material, 1)
|
||
|
||
if (usableItem.isEmpty()) return
|
||
|
||
event.recipes.tfc.damage_inputs_shaped_crafting(
|
||
event.shaped(toolItem, [
|
||
'CA ',
|
||
' B '
|
||
], {
|
||
A: usableItem,
|
||
B: '#tfc:rock/raw',
|
||
C: '#tfc:chisels'
|
||
})
|
||
).id(`gtceu:shaped/mortar_${material.getName()}`)
|
||
}
|
||
|
||
const processIngot = (material) => {
|
||
const ingotStack = ChemicalHelper.get(TagPrefix.ingot, material, 1)
|
||
|
||
if (material.hasFlag(MaterialFlags.GENERATE_PLATE)
|
||
&& material != GTMaterials.Wood
|
||
&& material != GTMaterials.TreatedWood
|
||
&& !material.hasProperty(PropertyKey.POLYMER))
|
||
{
|
||
const plateStack = ChemicalHelper.get(TagPrefix.plate, material, 1)
|
||
const blockStack = ChemicalHelper.get(TagPrefix.block, material, 1)
|
||
|
||
let matAmount = TagPrefix.block.getMaterialAmount(material) / GTValues.M;
|
||
|
||
if (!plateStack.isEmpty()) {
|
||
|
||
event.custom({
|
||
type: "createaddition:rolling",
|
||
input: ingotStack,
|
||
result: plateStack,
|
||
//processingTime: material.getMass() // TODO - controlled by a global config argh
|
||
}).id(`tfg:rolling/${material.getName()}_plate`)
|
||
|
||
if (!blockStack.isEmpty() && GTMaterials.Stone != material) {
|
||
|
||
// 9х Слиток -> Блок
|
||
event.recipes.createCompacting(blockStack, ingotStack.withCount(matAmount))
|
||
.heated()
|
||
.id(`tfg:compacting/${material.getName()}_block`)
|
||
}
|
||
}
|
||
else {
|
||
if (!blockStack.isEmpty()) {
|
||
|
||
// Блок из гемов -> 9 Пластин
|
||
event.recipes.createCutting(plateStack.withCount(matAmount).withChance(0.65), blockStack)
|
||
.id(`tfg:cutting/${material.getName()}_plate`)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
const processPlate = (material) => {
|
||
const item = ChemicalHelper.get(TagPrefix.plate, material, 1)
|
||
if (item.isEmpty()) return
|
||
|
||
event.remove({ id: `gtceu:shaped/plate_${material.getName()}` })
|
||
}
|
||
|
||
const processPlateDouble = (material) => {
|
||
const item = ChemicalHelper.get(TagPrefix.plateDouble, material, 1)
|
||
if (item.isEmpty()) return
|
||
|
||
event.remove({ id: `gtceu:shaped/plate_double_${material.getName()}` })
|
||
}
|
||
|
||
const processBlock = (material) => {
|
||
const item = ChemicalHelper.get(TagPrefix.block, material, 1)
|
||
if (item.isEmpty()) return
|
||
|
||
event.remove({ id: `gtceu:compressor/compress_${material.getName()}_to_block` })
|
||
}
|
||
|
||
const processFoil = (material) => {
|
||
const foilItem = ChemicalHelper.get(TagPrefix.foil, material, 4)
|
||
const plateItem = ChemicalHelper.get(TagPrefix.plate, material, 1)
|
||
|
||
if (plateItem != null && foilItem != null) {
|
||
event.custom({
|
||
type: "createaddition:rolling",
|
||
input: plateItem,
|
||
result: foilItem,
|
||
// TODO - processing time is controlled by a global config instead of setting it per-recipe...
|
||
//processingTime: material.getMass()
|
||
}).id(`tfg:rolling/${material.getName()}_foil`)
|
||
}
|
||
}
|
||
|
||
const processRodLong = (material) => {
|
||
const item = ChemicalHelper.get(TagPrefix.rodLong, material, 1)
|
||
if (item.isEmpty()) return
|
||
|
||
event.remove({ id: `gtceu:shaped/stick_long_stick_${material.getName()}` })
|
||
}
|
||
|
||
const processIngotDouble = (material) => {
|
||
if (!material.hasFlag(TFGMaterialFlags.GENERATE_DOUBLE_INGOTS)) return;
|
||
|
||
const doubleIngotStack = ChemicalHelper.get(TFGTagPrefix.ingotDouble, material, 1);
|
||
|
||
if (material.hasProperty(PropertyKey.FLUID)) {
|
||
event.recipes.gtceu.extractor(`tfg:extract_${material.getName()}_double_ingot`)
|
||
.itemInputs(doubleIngotStack)
|
||
.outputFluids(Fluid.of(material.getFluid(), 288))
|
||
.duration(material.getMass())
|
||
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
|
||
.EUt(material.hasProperty(PropertyKey.BLAST) ? GTValues.VA[GTValues.MV] : GTValues.VA[GTValues.ULV])
|
||
}
|
||
|
||
if (material.hasProperty(PropertyKey.DUST)) {
|
||
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_double_ingot`)
|
||
.itemInputs(doubleIngotStack)
|
||
.itemOutputs(ChemicalHelper.get(TagPrefix.dust, material, 2))
|
||
.duration(material.getMass())
|
||
.category(GTRecipeCategories.MACERATOR_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
}
|
||
|
||
const twoIngotStack = ChemicalHelper.get(TagPrefix.ingot, material, 2);
|
||
|
||
event.recipes.gtceu.arc_furnace(`tfg:arc_furnace_${material.getName()}_double_ingot`)
|
||
.itemInputs(doubleIngotStack)
|
||
.itemOutputs(twoIngotStack)
|
||
.duration(material.getMass() * 6)
|
||
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.LV])
|
||
|
||
event.recipes.gtceu.bender(`tfg:bend_${material.getName()}_double_ingot`)
|
||
.itemInputs(twoIngotStack)
|
||
.itemOutputs(doubleIngotStack)
|
||
.duration(material.getMass() * 6)
|
||
.EUt(GTValues.VA[GTValues.LV])
|
||
.circuit(3)
|
||
}
|
||
|
||
const processSmallOre = (material) => {
|
||
if (!material.hasFlag(TFGMaterialFlags.HAS_SMALL_TFC_ORE)) return;
|
||
|
||
const smallOre = ChemicalHelper.get(TFGTagPrefix.oreSmall, material, 1);
|
||
const smallDust = ChemicalHelper.get(TagPrefix.dustSmall, material, 1);
|
||
|
||
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_small_ore`)
|
||
.itemInputs(smallOre)
|
||
.itemOutputs(smallDust)
|
||
.duration(material.getMass())
|
||
.category(GTRecipeCategories.ORE_CRUSHING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
}
|
||
|
||
const processSmallNativeOre = (material) => {
|
||
if (!material.hasFlag(TFGMaterialFlags.HAS_SMALL_NATIVE_TFC_ORE)) return;
|
||
|
||
const smallNativeOre = ChemicalHelper.get(TFGTagPrefix.oreSmallNative, material, 1);
|
||
const smallDust = ChemicalHelper.get(TagPrefix.dustSmall, material, 1);
|
||
|
||
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_small_native_ore`)
|
||
.itemInputs(smallNativeOre)
|
||
.itemOutputs(smallDust)
|
||
.duration(material.getMass())
|
||
.category(GTRecipeCategories.ORE_CRUSHING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
}
|
||
|
||
const processPoorRawOre = (material) => {
|
||
const poorOreItem = ChemicalHelper.get(TFGTagPrefix.poorRawOre, material, 1)
|
||
const crushedOreItem = ChemicalHelper.get(TagPrefix.crushed, material, 1)
|
||
|
||
if (poorOreItem == null || crushedOreItem == null)
|
||
return;
|
||
|
||
const oreProperty = material.getProperty(PropertyKey.ORE)
|
||
const smeltingMaterial = oreProperty.getDirectSmeltResult() == null ? material : oreProperty.getDirectSmeltResult();
|
||
const multiplier = oreProperty.getOreMultiplier();
|
||
|
||
let ingotItem = null;
|
||
if (smeltingMaterial.hasProperty(PropertyKey.INGOT))
|
||
ingotItem = ChemicalHelper.get(TagPrefix.nugget, smeltingMaterial, 5)
|
||
else if (smeltingMaterial.hasProperty(PropertyKey.GEM))
|
||
ingotItem = ChemicalHelper.get(TagPrefix.gemFlawed, smeltingMaterial, 1)
|
||
else
|
||
ingotItem = ChemicalHelper.get(TagPrefix.dustSmall, smeltingMaterial, 1)
|
||
|
||
ingotItem.setCount(ingotItem.getCount() * multiplier)
|
||
crushedOreItem.setCount(crushedOreItem.getCount() * multiplier)
|
||
|
||
// Forge hammer
|
||
let hammerRecipe = event.recipes.gtceu.forge_hammer(`hammer_poor_raw_${material.getName()}_to_crushed_ore`)
|
||
.itemInputs(poorOreItem)
|
||
.category(GTRecipeCategories.ORE_FORGING)
|
||
.duration(10)
|
||
.EUt(16)
|
||
|
||
if (material.hasProperty(PropertyKey.GEM) && !TagPrefix.gem.isIgnored(material))
|
||
hammerRecipe.chancedOutput(ChemicalHelper.get(TagPrefix.gem, material, crushedOreItem.getCount()), 7500, 950)
|
||
else
|
||
hammerRecipe.chancedOutput(crushedOreItem, 7500, 950)
|
||
|
||
// Macerator
|
||
let maceratorRecipe = event.recipes.gtceu.macerator(`macerate_poor_raw_${material.getName()}_ore_to_crushed_ore`)
|
||
.category(GTRecipeCategories.ORE_CRUSHING)
|
||
.duration(400)
|
||
.EUt(2)
|
||
|
||
if (multiplier > 1) {
|
||
maceratorRecipe.itemInputs(poorOreItem)
|
||
maceratorRecipe.itemOutputs(crushedOreItem.copyWithCount(multiplier / 2))
|
||
}
|
||
else {
|
||
// TODO: Change this when Greate fixes its bug
|
||
//maceratorRecipe.chancedOutput(crushedOreItem, 5000, 750)
|
||
maceratorRecipe.itemInputs(poorOreItem.copyWithCount(2))
|
||
maceratorRecipe.itemOutputs(crushedOreItem.copyWithCount(1))
|
||
}
|
||
maceratorRecipe.chancedOutput(crushedOreItem.copyWithCount(1), 2500, 500)
|
||
maceratorRecipe.chancedOutput(crushedOreItem.copyWithCount(1), 1250, 250)
|
||
|
||
// Quern
|
||
if (multiplier > 1) {
|
||
event.recipes.tfc.quern(
|
||
crushedOreItem.copyWithCount(multiplier / 2),
|
||
poorOreItem
|
||
).id(`tfg:quern/${material.getName()}_crushed_ore_from_poor_raw_ore`)
|
||
}
|
||
else {
|
||
event.recipes.tfc.quern(
|
||
ChemicalHelper.get(TagPrefix.dustSmall, material, 2),
|
||
poorOreItem
|
||
).id(`tfg:quern/${material.getName()}_crushed_ore_from_poor_raw_ore`)
|
||
}
|
||
|
||
// Smelting
|
||
if (!material.hasProperty(PropertyKey.BLAST)) {
|
||
event.smelting(ingotItem, poorOreItem).id(`gtceu:smelting/smelt_poor_raw_${material.getName()}_ore_to_ingot`)
|
||
}
|
||
}
|
||
|
||
const processNormalRawOre = (material) => {
|
||
const oreProperty = material.getProperty(PropertyKey.ORE)
|
||
const multiplier = oreProperty.getOreMultiplier();
|
||
const normalOreItem = ChemicalHelper.get(TagPrefix.rawOre, material, 1)
|
||
const crushedOreItem = ChemicalHelper.get(TagPrefix.crushed, material, multiplier)
|
||
|
||
if (normalOreItem == null || crushedOreItem == null)
|
||
return;
|
||
|
||
const smeltingMaterial = oreProperty.getDirectSmeltResult() == null ? material : oreProperty.getDirectSmeltResult();
|
||
|
||
let ingotItem = null;
|
||
if (smeltingMaterial.hasProperty(PropertyKey.INGOT))
|
||
ingotItem = ChemicalHelper.get(TagPrefix.ingot, smeltingMaterial, multiplier)
|
||
else if (smeltingMaterial.hasProperty(PropertyKey.GEM))
|
||
ingotItem = ChemicalHelper.get(TagPrefix.gem, smeltingMaterial, multiplier)
|
||
else
|
||
ingotItem = ChemicalHelper.get(TagPrefix.dust, smeltingMaterial, multiplier)
|
||
|
||
// Forge hammer
|
||
let hammerRecipe = event.recipes.gtceu.forge_hammer(`hammer_raw_${material.getName()}_to_crushed_ore`)
|
||
.itemInputs(normalOreItem)
|
||
.category(GTRecipeCategories.ORE_FORGING)
|
||
.duration(10)
|
||
.EUt(16)
|
||
|
||
if (material.hasProperty(PropertyKey.GEM) && !TagPrefix.gem.isIgnored(material))
|
||
hammerRecipe.itemOutputs(ChemicalHelper.get(TagPrefix.gem, material, crushedOreItem.getCount()))
|
||
else
|
||
hammerRecipe.itemOutputs(crushedOreItem)
|
||
|
||
// Macerator
|
||
event.recipes.gtceu.macerator(`macerate_raw_${material.getName()}_ore_to_crushed_ore`)
|
||
.itemInputs(normalOreItem)
|
||
.itemOutputs(crushedOreItem)
|
||
.chancedOutput(crushedOreItem.copyWithCount(1), 5000, 500)
|
||
.chancedOutput(crushedOreItem.copyWithCount(1), 2500, 250)
|
||
.chancedOutput(crushedOreItem.copyWithCount(1), 1250, 250)
|
||
.category(GTRecipeCategories.ORE_CRUSHING)
|
||
.duration(400)
|
||
.EUt(2)
|
||
|
||
// Quern
|
||
event.recipes.tfc.quern(crushedOreItem, normalOreItem)
|
||
.id(`tfg:quern/${material.getName()}_crushed_ore_from_normal_raw_ore`)
|
||
|
||
// Smelting
|
||
if (!material.hasProperty(PropertyKey.BLAST)) {
|
||
event.smelting(ingotItem, normalOreItem).id(`gtceu:smelting/smelt_raw_${material.getName()}_ore_to_ingot`)
|
||
}
|
||
|
||
// Remove ore block recipes
|
||
event.remove({ id: `gtceu:compressor/compress_${material.getName()}_to_raw_ore_block` })
|
||
event.remove({ id: `gtceu:forge_hammer/decompress_${material.getName()}_to_raw_ore` })
|
||
}
|
||
|
||
const processRichRawOre = (material) => {
|
||
const oreProperty = material.getProperty(PropertyKey.ORE)
|
||
const multiplier = oreProperty.getOreMultiplier() * 2;
|
||
const richOreItem = ChemicalHelper.get(TFGTagPrefix.richRawOre, material, 1)
|
||
const crushedOreItem = ChemicalHelper.get(TagPrefix.crushed, material, multiplier)
|
||
|
||
if (richOreItem == null || crushedOreItem == null)
|
||
return;
|
||
|
||
const smeltingMaterial = oreProperty.getDirectSmeltResult() == null ? material : oreProperty.getDirectSmeltResult();
|
||
|
||
let ingotItem = null;
|
||
if (smeltingMaterial.hasProperty(PropertyKey.INGOT))
|
||
ingotItem = ChemicalHelper.get(TagPrefix.ingot, smeltingMaterial, multiplier)
|
||
else if (smeltingMaterial.hasProperty(PropertyKey.GEM))
|
||
ingotItem = ChemicalHelper.get(TagPrefix.gem, smeltingMaterial, multiplier)
|
||
else
|
||
ingotItem = ChemicalHelper.get(TagPrefix.dust, smeltingMaterial, multiplier)
|
||
|
||
// Forge hammer
|
||
let hammerRecipe = event.recipes.gtceu.forge_hammer(`hammer_rich_raw_${material.getName()}_to_crushed_ore`)
|
||
.itemInputs(richOreItem)
|
||
.category(GTRecipeCategories.ORE_FORGING)
|
||
.duration(10)
|
||
.EUt(16)
|
||
|
||
if (material.hasProperty(PropertyKey.GEM) && !TagPrefix.gem.isIgnored(material))
|
||
hammerRecipe.itemOutputs(ChemicalHelper.get(TagPrefix.gem, material, crushedOreItem.getCount()))
|
||
else
|
||
hammerRecipe.itemOutputs(crushedOreItem)
|
||
|
||
// Macerator
|
||
event.recipes.gtceu.macerator(`macerate_rich_raw_${material.getName()}_ore_to_crushed_ore`)
|
||
.itemInputs(richOreItem)
|
||
.itemOutputs(crushedOreItem)
|
||
.chancedOutput(crushedOreItem.copyWithCount(1), 5000, 750)
|
||
.chancedOutput(crushedOreItem.copyWithCount(1), 2500, 500)
|
||
.chancedOutput(crushedOreItem.copyWithCount(1), 1250, 250)
|
||
.category(GTRecipeCategories.ORE_CRUSHING)
|
||
.duration(400)
|
||
.EUt(2)
|
||
|
||
// Quern
|
||
event.recipes.tfc.quern(crushedOreItem, richOreItem)
|
||
.id(`tfg:quern/${material.getName()}_crushed_ore_from_rich_raw_ore`)
|
||
|
||
// Smelting
|
||
if (!material.hasProperty(PropertyKey.BLAST)) {
|
||
event.smelting(ingotItem, richOreItem).id(`gtceu:smelting/smelt_rich_raw_${material.getName()}_ore_to_ingot`)
|
||
}
|
||
}
|
||
|
||
const processCrushedOre = (material) => {
|
||
const crushedOreItem = ChemicalHelper.get(TagPrefix.crushed, material, 1)
|
||
const pureOreItem = ChemicalHelper.get(TagPrefix.crushedPurified, material, 1)
|
||
|
||
if (crushedOreItem != null && pureOreItem != null) {
|
||
|
||
// Bulk washing
|
||
let byproductMaterial = material.getProperty(PropertyKey.ORE).getOreByProduct(0, material);
|
||
const byproductItem = ChemicalHelper.get(TagPrefix.dust, byproductMaterial, 1)
|
||
|
||
event.recipes.greate.splashing([pureOreItem, TieredOutputItem.of(byproductItem).withChance(0.333), 'gtceu:stone_dust'], crushedOreItem)
|
||
.id(`tfg:splashing/${material.getName()}_purified_ore`)
|
||
|
||
// Dropping in water
|
||
event.custom({
|
||
type: "ae2:transform",
|
||
circumstance: {
|
||
type: "fluid",
|
||
tag: "tfc:water"
|
||
},
|
||
ingredients: [
|
||
crushedOreItem.toJson()
|
||
],
|
||
result: pureOreItem.toJson()
|
||
}).id(`tfg:ae_transform/${material.getName()}_purified_ore`)
|
||
}
|
||
}
|
||
|
||
const processImpureDust = (material) => {
|
||
const impureDustItem = ChemicalHelper.get(TagPrefix.dustImpure, material, 1)
|
||
const dustItem = ChemicalHelper.get(TagPrefix.dust, material, 1)
|
||
|
||
if (impureDustItem != null && dustItem != null) {
|
||
|
||
// Bulk washing
|
||
event.recipes.greate.splashing(dustItem, impureDustItem)
|
||
.id(`tfg:splashing/${material.getName()}_dust_from_impure`)
|
||
|
||
// Centrifuging
|
||
let byproductMaterial = material.getProperty(PropertyKey.ORE).getOreByProduct(0, material);
|
||
let byproductItem = ChemicalHelper.get(TagPrefix.dust, byproductMaterial, 1).toJson()
|
||
byproductItem.add("chance", 0.111);
|
||
|
||
event.custom({
|
||
type: 'vintageimprovements:centrifugation',
|
||
ingredients: [impureDustItem],
|
||
results: [dustItem, byproductItem],
|
||
processingTime: material.getMass() * 6 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER
|
||
}).id(`tfg:vi/centrifuge/${material.getName()}_dust_from_impure`)
|
||
|
||
// Dropping in water
|
||
event.custom({
|
||
type: "ae2:transform",
|
||
circumstance: {
|
||
type: "fluid",
|
||
tag: "tfc:water"
|
||
},
|
||
ingredients: [
|
||
impureDustItem.toJson()
|
||
],
|
||
result: dustItem.toJson()
|
||
}).id(`tfg:ae_transform/${material.getName()}_dust_from_impure`)
|
||
}
|
||
}
|
||
|
||
const processPureDust = (material) => {
|
||
const pureDust = ChemicalHelper.get(TagPrefix.dustPure, material, 1)
|
||
const dustItem = ChemicalHelper.get(TagPrefix.dust, material, 1)
|
||
|
||
if (pureDust != null && dustItem != null) {
|
||
|
||
// Bulk washing
|
||
event.recipes.greate.splashing(dustItem, pureDust)
|
||
.id(`tfg:splashing/${material.getName()}_dust_from_pure`)
|
||
|
||
// Centrifuging
|
||
let byproductMaterial = material.getProperty(PropertyKey.ORE).getOreByProduct(1, material);
|
||
let byproductItem = ChemicalHelper.get(TagPrefix.dust, byproductMaterial, 1).toJson()
|
||
byproductItem.add("chance", 0.111);
|
||
|
||
event.custom({
|
||
type: 'vintageimprovements:centrifugation',
|
||
ingredients: [pureDust],
|
||
results: [dustItem, byproductItem],
|
||
processingTime: material.getMass() * 6 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER
|
||
}).id(`tfg:vi/centrifuge/${material.getName()}_dust_from_pure`)
|
||
|
||
// Dropping in water
|
||
event.custom({
|
||
type: "ae2:transform",
|
||
circumstance: {
|
||
type: "fluid",
|
||
tag: "tfc:water"
|
||
},
|
||
ingredients: [
|
||
pureDust.toJson()
|
||
],
|
||
result: dustItem.toJson()
|
||
}).id(`tfg:ae_transform/${material.getName()}_dust_from_pure`)
|
||
}
|
||
}
|
||
|
||
const processGems = (material) => {
|
||
let gem = ChemicalHelper.get(TagPrefix.gem, material, 1);
|
||
let chipped = ChemicalHelper.get(TagPrefix.gemChipped, material, 1)
|
||
let smallDust = ChemicalHelper.get(TagPrefix.dustSmall, material, 1)
|
||
|
||
event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless(
|
||
`gtceu:${material.getName()}_bud_indicator`, [gem, '#tfc:chisels']))
|
||
.id(`shapeless/${material.getName()}_bud_indicator`)
|
||
|
||
event.shaped(smallDust,
|
||
[ 'A', 'B' ],
|
||
{ A: chipped, B: '#forge:tools/mortars'})
|
||
.id(`shapeless/mortar_chipped_${material.getName()}`)
|
||
}
|
||
|
||
const processAnvil = (material) => {
|
||
const anvilStack = ChemicalHelper.get(TFGTagPrefix.anvil, material, 1)
|
||
if (anvilStack == null)
|
||
return;
|
||
|
||
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_anvil`)
|
||
.itemInputs(anvilStack)
|
||
.itemOutputs(ChemicalHelper.get(TagPrefix.dust, material, 14))
|
||
.duration(material.getMass() * 32)
|
||
.category(GTRecipeCategories.MACERATOR_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.LV])
|
||
|
||
event.recipes.gtceu.arc_furnace(`tfg:arc_${material.getName()}_anvil`)
|
||
.itemInputs(anvilStack)
|
||
.itemOutputs(ChemicalHelper.get(TagPrefix.ingot, material, 14))
|
||
.duration(material.getMass() * 32)
|
||
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.extractor(`tfg:extract_${material.getName()}_anvil`)
|
||
.itemInputs(anvilStack)
|
||
.outputFluids(Fluid.of(material.getFluid(), 14 * 144))
|
||
.duration(material.getMass() * 32)
|
||
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
|
||
.EUt(material.hasProperty(PropertyKey.BLAST) ? GTValues.VA[GTValues.MV] : GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.alloy_smelter(`tfg:cast_${material.getName()}_anvil`)
|
||
.itemInputs(ChemicalHelper.get(TagPrefix.ingot, material, 14))
|
||
.notConsumable('gtceu:anvil_casting_mold')
|
||
.itemOutputs(anvilStack)
|
||
.duration(material.getMass() * 32)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
.category(GTRecipeCategories.INGOT_MOLDING)
|
||
|
||
event.recipes.gtceu.fluid_solidifier(`tfg:solidify_${material.getName()}_anvil`)
|
||
.inputFluids(Fluid.of(material.getFluid(), 14 * 144))
|
||
.notConsumable('gtceu:anvil_casting_mold')
|
||
.itemOutputs(anvilStack)
|
||
.duration(material.getMass() * 32)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
}
|
||
|
||
const processLamp = (material) => {
|
||
const finishedLampStack = ChemicalHelper.get(TFGTagPrefix.lamp, material, 1)
|
||
if (finishedLampStack == null)
|
||
return;
|
||
|
||
const materialDustStack = ChemicalHelper.get(TagPrefix.dust, material, 1)
|
||
const materialIngotStack = ChemicalHelper.get(TagPrefix.ingot, material, 1)
|
||
const glassDustStack = ChemicalHelper.get(TagPrefix.dust, GTMaterials.Glass, 4)
|
||
const unfinishedLampStack = ChemicalHelper.get(TFGTagPrefix.lampUnfinished, material, 1)
|
||
|
||
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_lamp`)
|
||
.itemInputs(finishedLampStack)
|
||
.itemOutputs([materialDustStack, glassDustStack])
|
||
.duration(material.getMass() * 8)
|
||
.category(GTRecipeCategories.MACERATOR_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.LV])
|
||
|
||
event.recipes.gtceu.arc_furnace(`tfg:arc_${material.getName()}_lamp`)
|
||
.itemInputs(finishedLampStack)
|
||
.itemOutputs([materialIngotStack, glassDustStack])
|
||
.duration(material.getMass() * 8)
|
||
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.assembler(`tfg:${material.getName()}_lamp`)
|
||
.itemInputs("tfc:lamp_glass", unfinishedLampStack)
|
||
.itemOutputs(finishedLampStack)
|
||
.duration(material.getMass() * 7)
|
||
.circuit(12)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.assembler(`tfg:${material.getName()}_lamp_from_liquid`)
|
||
.itemInputs(unfinishedLampStack)
|
||
.inputFluids(Fluid.of(GTMaterials.Glass.getFluid(), 576))
|
||
.itemOutputs(finishedLampStack)
|
||
.duration(material.getMass() * 7)
|
||
.circuit(13)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_unfinished_lamp`)
|
||
.itemInputs(unfinishedLampStack)
|
||
.itemOutputs(materialDustStack)
|
||
.duration(material.getMass() * 8)
|
||
.category(GTRecipeCategories.MACERATOR_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.LV])
|
||
|
||
event.recipes.gtceu.arc_furnace(`tfg:arc_${material.getName()}_unfinished_lamp`)
|
||
.itemInputs(unfinishedLampStack)
|
||
.itemOutputs(materialIngotStack)
|
||
.duration(material.getMass() * 8)
|
||
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.extractor(`tfg:extract_${material.getName()}_unfinished_lamp`)
|
||
.itemInputs(unfinishedLampStack)
|
||
.outputFluids(Fluid.of(material.getFluid(), 144))
|
||
.duration(material.getMass() * 8)
|
||
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
|
||
.EUt(material.hasProperty(PropertyKey.BLAST) ? GTValues.VA[GTValues.MV] : GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.alloy_smelter(`tfg:cast_${material.getName()}_unfinished_lamp`)
|
||
.itemInputs(materialIngotStack)
|
||
.notConsumable('tfg:lamp_casting_mold')
|
||
.itemOutputs(unfinishedLampStack)
|
||
.duration(material.getMass() * 8)
|
||
.category(GTRecipeCategories.INGOT_MOLDING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.fluid_solidifier(`tfg:solidify_${material.getName()}_unfinished_lamp`)
|
||
.inputFluids(Fluid.of(material.getFluid(), 144))
|
||
.notConsumable('tfg:lamp_casting_mold')
|
||
.itemOutputs(unfinishedLampStack)
|
||
.duration(material.getMass() * 8)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
}
|
||
|
||
const processTrapdoor = (material) => {
|
||
const trapdoorStack = ChemicalHelper.get(TFGTagPrefix.trapdoor, material, 1)
|
||
if (trapdoorStack == null)
|
||
return;
|
||
|
||
const materialDustStack = ChemicalHelper.get(TagPrefix.dust, material, 1)
|
||
const materialIngotStack = ChemicalHelper.get(TagPrefix.ingot, material, 1)
|
||
|
||
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_trapdoor`)
|
||
.itemInputs(trapdoorStack)
|
||
.itemOutputs(materialDustStack)
|
||
.duration(material.getMass() * 7)
|
||
.category(GTRecipeCategories.MACERATOR_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.LV])
|
||
|
||
event.recipes.gtceu.arc_furnace(`tfg:arc_${material.getName()}_trapdoor`)
|
||
.itemInputs(trapdoorStack)
|
||
.itemOutputs(materialIngotStack)
|
||
.duration(material.getMass() * 7)
|
||
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.extractor(`tfg:extract_${material.getName()}_trapdoor`)
|
||
.itemInputs(trapdoorStack)
|
||
.outputFluids(Fluid.of(material.getFluid(), 144))
|
||
.duration(material.getMass() * 7)
|
||
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
|
||
.EUt(material.hasProperty(PropertyKey.BLAST) ? GTValues.VA[GTValues.MV] : GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.alloy_smelter(`tfg:cast_${material.getName()}_trapdoor`)
|
||
.itemInputs(materialIngotStack)
|
||
.notConsumable('tfg:trapdoor_casting_mold')
|
||
.itemOutputs(trapdoorStack)
|
||
.duration(material.getMass() * 8)
|
||
.category(GTRecipeCategories.INGOT_MOLDING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.fluid_solidifier(`tfg:solidify_${material.getName()}_trapdoor`)
|
||
.inputFluids(Fluid.of(material.getFluid(), 144))
|
||
.notConsumable('tfg:trapdoor_casting_mold')
|
||
.itemOutputs(trapdoorStack)
|
||
.duration(material.getMass() * 7)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
}
|
||
|
||
const processChain = (material) => {
|
||
const chainStack = ChemicalHelper.get(TFGTagPrefix.chain, material, 1)
|
||
if (chainStack == null)
|
||
return;
|
||
|
||
const chain2Stack = ChemicalHelper.get(TFGTagPrefix.chain, material, 2)
|
||
|
||
const materialDustTinyStack = ChemicalHelper.get(TagPrefix.dustTiny, material, 1)
|
||
const materialNuggetStack = ChemicalHelper.get(TagPrefix.nugget, material, 1)
|
||
const materialIngotStack = ChemicalHelper.get(TagPrefix.ingot, material, 1)
|
||
|
||
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_chain`)
|
||
.itemInputs(chain2Stack)
|
||
.itemOutputs(materialDustTinyStack)
|
||
.duration(material.getMass() * 3)
|
||
.category(GTRecipeCategories.MACERATOR_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.LV])
|
||
|
||
event.recipes.gtceu.arc_furnace(`tfg:arc_${material.getName()}_chain`)
|
||
.itemInputs(chain2Stack)
|
||
.itemOutputs(materialNuggetStack)
|
||
.duration(material.getMass() * 3)
|
||
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.extractor(`tfg:extract_${material.getName()}_chain`)
|
||
.itemInputs(chainStack)
|
||
.outputFluids(Fluid.of(material.getFluid(), 9))
|
||
.duration(material.getMass() * 3)
|
||
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
|
||
.EUt(material.hasProperty(PropertyKey.BLAST) ? GTValues.VA[GTValues.MV] : GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.alloy_smelter(`tfg:cast_${material.getName()}_chain`)
|
||
.itemInputs(materialIngotStack)
|
||
.notConsumable('tfg:chain_casting_mold')
|
||
.itemOutputs(ChemicalHelper.get(TFGTagPrefix.chain, material, 16))
|
||
.duration(material.getMass() * 3)
|
||
.category(GTRecipeCategories.INGOT_MOLDING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.fluid_solidifier(`tfg:solidify_${material.getName()}_chain`)
|
||
.inputFluids(Fluid.of(material.getFluid(), 9))
|
||
.notConsumable('tfg:chain_casting_mold')
|
||
.itemOutputs(chainStack)
|
||
.duration(material.getMass() * 3)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
}
|
||
|
||
const processBell = (material) => {
|
||
const bellStack = ChemicalHelper.get(TFGTagPrefix.bell, material, 1)
|
||
if (bellStack == null)
|
||
return;
|
||
|
||
const materialDustStack = ChemicalHelper.get(TagPrefix.dust, material, 1)
|
||
const materialIngotStack = ChemicalHelper.get(TagPrefix.ingot, material, 1)
|
||
|
||
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_bell`)
|
||
.itemInputs(bellStack)
|
||
.itemOutputs(materialDustStack)
|
||
.duration(material.getMass() * 5)
|
||
.category(GTRecipeCategories.MACERATOR_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.LV])
|
||
|
||
event.recipes.gtceu.arc_furnace(`tfg:arc_${material.getName()}_bell`)
|
||
.itemInputs(bellStack)
|
||
.itemOutputs(materialIngotStack)
|
||
.duration(material.getMass() * 5)
|
||
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.extractor(`tfg:extract_${material.getName()}_bell`)
|
||
.itemInputs(bellStack)
|
||
.outputFluids(Fluid.of(material.getFluid(), 144))
|
||
.duration(material.getMass() * 5)
|
||
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.alloy_smelter(`tfg:cast_${material.getName()}_bell`)
|
||
.itemInputs(materialIngotStack)
|
||
.notConsumable('tfg:bell_casting_mold')
|
||
.itemOutputs(bellStack)
|
||
.duration(material.getMass() * 5)
|
||
.category(GTRecipeCategories.INGOT_MOLDING)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
|
||
event.recipes.gtceu.fluid_solidifier(`tfg:solidify_${material.getName()}_bell`)
|
||
.inputFluids(Fluid.of(material.getFluid(), 144))
|
||
.notConsumable('tfg:bell_casting_mold')
|
||
.itemOutputs(bellStack)
|
||
.duration(material.getMass() * 5)
|
||
.EUt(GTValues.VA[GTValues.ULV])
|
||
}
|
||
|
||
const processBars = (material) => {
|
||
const barsStack = ChemicalHelper.get(TFGTagPrefix.bars, material, 4)
|
||
const ingotStack = ChemicalHelper.get(TagPrefix.ingot, material, 1)
|
||
if (barsStack == null)
|
||
return;
|
||
|
||
event.recipes.gtceu.cutter(`tfg:${material.getName()}_bars`)
|
||
.itemInputs(ingotStack)
|
||
.itemOutputs(barsStack)
|
||
.duration(100)
|
||
.EUt(GTValues.VA[GTValues.LV])
|
||
}
|
||
|
||
forEachMaterial(material => {
|
||
const toolProperty = material.getProperty(PropertyKey.TOOL)
|
||
const ingotProperty = material.getProperty(PropertyKey.INGOT)
|
||
const oreProperty = material.getProperty(PropertyKey.ORE)
|
||
|
||
if (toolProperty != null) {
|
||
makeToolRecipe(GTToolType.SWORD, TFGTagPrefix.toolHeadSword, 'tfg:sword_head_extruder_mold', 1, material)
|
||
makeToolRecipe(GTToolType.PICKAXE, TFGTagPrefix.toolHeadPickaxe, 'tfg:pickaxe_head_extruder_mold', 2, material)
|
||
makeToolRecipe(GTToolType.AXE, TFGTagPrefix.toolHeadAxe, 'tfg:axe_head_extruder_mold', 3, material)
|
||
makeToolRecipe(GTToolType.SHOVEL, TFGTagPrefix.toolHeadShovel, 'tfg:shovel_head_extruder_mold', 4, material)
|
||
makeToolRecipe(GTToolType.HOE, TFGTagPrefix.toolHeadHoe, 'tfg:hoe_head_extruder_mold', 5, material)
|
||
makeToolRecipe(GTToolType.KNIFE, TFGTagPrefix.toolHeadKnife, 'tfg:knife_head_extruder_mold', 6, material)
|
||
makeToolRecipe(GTToolType.FILE, TFGTagPrefix.toolHeadFile, 'tfg:file_head_extruder_mold', 7, material)
|
||
makeToolRecipe(GTToolType.SAW, TFGTagPrefix.toolHeadSaw, 'tfg:saw_head_extruder_mold', 8, material)
|
||
makeToolRecipe(GTToolType.SPADE, TFGTagPrefix.toolHeadSpade, 'tfg:spade_head_extruder_mold', 9, material)
|
||
makeToolRecipe(GTToolType.MINING_HAMMER, TFGTagPrefix.toolHeadMiningHammer, 'tfg:mining_hammer_head_extruder_mold', 10, material)
|
||
makeToolRecipe(GTToolType.SCYTHE, TFGTagPrefix.toolHeadScythe, 'tfg:scythe_head_extruder_mold', 11, material)
|
||
makeToolRecipe(GTToolType.HARD_HAMMER, TFGTagPrefix.toolHeadHammer, 'tfg:hammer_head_extruder_mold', 12, material)
|
||
makeToolRecipe(GTToolType.BUTCHERY_KNIFE, TFGTagPrefix.toolHeadButcheryKnife, 'tfg:butchery_knife_head_extruder_mold', 13, material)
|
||
|
||
processToolMortar(GTToolType.MORTAR, material)
|
||
|
||
processToolHead(TFGTagPrefix.toolHeadPropick, 'tfg:propick_head_extruder_mold', 14, material)
|
||
processToolHead(TFGTagPrefix.toolHeadJavelin, 'tfg:javelin_head_extruder_mold', 15, material)
|
||
processToolHead(TFGTagPrefix.toolHeadChisel, 'tfg:chisel_head_extruder_mold', 16, material)
|
||
processToolHead(TFGTagPrefix.toolHeadMace, 'tfg:mace_head_extruder_mold', 17, material)
|
||
processToolHead(TFGTagPrefix.toolHeadMattock, 'tfg:mattock_head_extruder_mold', 18, material)
|
||
}
|
||
|
||
if (ingotProperty != null) {
|
||
processIngot(material)
|
||
processPlate(material)
|
||
processPlateDouble(material)
|
||
processBlock(material)
|
||
processFoil(material)
|
||
processRodLong(material)
|
||
processIngotDouble(material)
|
||
|
||
processAnvil(material)
|
||
processLamp(material)
|
||
processTrapdoor(material)
|
||
processChain(material)
|
||
processBell(material)
|
||
processBars(material)
|
||
}
|
||
|
||
if (oreProperty != null) {
|
||
processSmallOre(material)
|
||
processSmallNativeOre(material)
|
||
processPoorRawOre(material)
|
||
processNormalRawOre(material)
|
||
processRichRawOre(material)
|
||
|
||
processCrushedOre(material)
|
||
processImpureDust(material)
|
||
processPureDust(material)
|
||
|
||
if (material.hasProperty(PropertyKey.GEM)) {
|
||
processGems(material)
|
||
}
|
||
|
||
// Indicators
|
||
event.replaceInput({ id: `gtceu:shaped/${material.getName()}_surface_indicator`},
|
||
'minecraft:gravel', '#tfc:rock/gravel')
|
||
}
|
||
})
|
||
} |