2024-03-20 20:29:50 +01:00

137 lines
4.6 KiB
JavaScript

// priority:950
// Written by EnigmaQuip as a post almost unified recipe generation script for missing recipes
ServerEvents.recipes(event => {
if (global.devLogging) {
console.log('Finishing Unifying on Dusts')
}
let dustCount = {
occult: 0,
ftbic: 0
}
global.auTags.dusts.forEach(material => {
let dust = global.itemFromTag('dusts', material)
if (dust.isEmpty()) {
console.log(`${material} does not have a dust tag entry`)
return
}
let ingotTag = Ingredient.of(`#forge:ingots/${material}`)
let oreTag = Ingredient.of(`#forge:ores/${material}`)
let rawTag = Ingredient.of(`#forge:raw_materials/${material}`)
// Occultism Crusher
if (global.loaded.Occult_Loaded) {
let crush = {
ingot: false,
ore: false,
raw: false
}
event.forEachRecipe({ type: "occultism:crushing" }, recipe => {
let recipeJson = recipe.json
if (dust.equalsIgnoringCount(Item.of(recipeJson.get('result')))) {
let input = recipeJson.get('ingredient')
if (ingotTag.test(Ingredient.of(input))) {
crush.ingot = true
} else if (oreTag.test(Ingredient.of(input))) {
crush.ore = true
} else if (rawTag.test(Ingredient.of(input))) {
crush.raw = true
}
}
})
let recipe = {
type: "occultism:crushing",
ingredient: {},
result: {},
crushing_time: 200,
ignore_crushing_multiplier: true
}
if (!ingotTag.getFirst().isEmpty() && !crush.ingot) {
let ingotRecipe = recipe
ingotRecipe.ingredient = ingotTag.toJson()
ingotRecipe.result = dust.withCount(1).toJson()
event.custom(ingotRecipe).id(`kubejs:occultism/crushing/${material}_dust_from_ingot`)
dustCount.occult++
}
if (!rawTag.getFirst().isEmpty() && !crush.raw) {
let rawRecipe = recipe
rawRecipe.ingredient = rawTag.toJson()
rawRecipe.result = dust.withCount(2).toJson()
rawRecipe.ignore_crushing_multiplier = false
event.custom(rawRecipe).id(`kubejs:occultism/crushing/${material}_dust_from_raw_material`)
dustCount.occult++
}
if (!oreTag.getFirst().isEmpty() && !crush.ore) {
let oreRecipe = recipe
oreRecipe.ingredient = oreTag.toJson()
oreRecipe.result = dust.withCount(2).toJson()
oreRecipe.crushing_time = 300
oreRecipe.ignore_crushing_multiplier = false
event.custom(oreRecipe).id(`kubejs:occultism/crushing/${material}_dust`)
dustCount.occult++
}
}
// FTBIC Macerating
if (global.loaded.FTBIC_Loaded) {
let macerate = {
ingot: false,
ore: false,
raw: false,
}
event.forEachRecipe({ type: 'ftbic:macerating' }, recipe => {
let recipeJson = recipe.json
recipeJson.get('outputItems').forEach(item => {
if (dust.equalsIgnoringCount(Item.of(item))) {
recipeJson.get('inputItems').forEach(inputJson => {
let input = inputJson.get('ingredient')
if (ingotTag.test(Ingredient.of(input))) {
macerate.ingot = true
} else if (oreTag.test(Ingredient.of(input))) {
macerate.ore = true
} else if (rawTag.test(Ingredient.of(input))) {
macerate.raw = true
}
})
}
})
})
if (!ingotTag.getFirst().isEmpty() && !macerate.ingot) {
event.custom({
"type": "ftbic:macerating",
"inputItems": [{ count: 1, ingredient: ingotTag.toJson() }],
"outputItems": [dust.toJson()]
}).id(`kubejs:ftbic/macerating/ingots/${material}_to_dust`)
dustCount.ftbic++
}
if (!oreTag.getFirst().isEmpty() && !macerate.ore) {
event.custom({
"type": "ftbic:macerating",
"inputItems": [{ count: 1, ingredient: oreTag.toJson() }],
"outputItems": [dust.withCount(2).toJson()]
}).id(`kubejs:ftbic/macerating/ores/${material}_to_dust`)
dustCount.ftbic++
}
if (!rawTag.getFirst().isEmpty() && !macerate.raw) {
event.custom({
"type": "ftbic:macerating",
"inputItems": [{ count: 1, ingredient: rawTag.toJson() }],
"outputItems": [
dust.toJson(),
{ chance: 0.35, item: dust.id }
]
}).id(`kubejs:ftbic/macerating/raw_materials/${material}_to_dust`)
dustCount.ftbic++
}
}
})
if (global.devLogging) {
console.log(`Added Dust Recipes - FTBIC: ${dustCount.ftbic}, Occultism: ${dustCount.occult}`)
// Added Dust Recipes - FTBIC: 60, Occultism: 5
}
})