Fellies/kubejs/server_scripts/fellies/kubejs/unification/additions.js

845 lines
23 KiB
JavaScript

//priority: 900
events.listen('recipes', function (event) {
materialsToUnify.forEach(function (material) {
var ore = getPreferredItemInTag(ingredient.of('#forge:ores/' + material)).id;
var ingot = getPreferredItemInTag(ingredient.of('#forge:ingots/' + material)).id;
var gem = getPreferredItemInTag(ingredient.of('#forge:gems/' + material)).id;
var crushedOre = getPreferredItemInTag(ingredient.of('#create:crushed_ores/' + material)).id;
var dust = getPreferredItemInTag(ingredient.of('#forge:dusts/' + material)).id;
var plate = getPreferredItemInTag(ingredient.of('#forge:plates/' + material)).id;
var gear = getPreferredItemInTag(ingredient.of('#forge:gears/' + material)).id;
var rod = getPreferredItemInTag(ingredient.of('#forge:rods/' + material)).id;
var wire = getPreferredItemInTag(ingredient.of('#forge:wires/' + material)).id;
gear_unification(event, material, ingot, gem, gear);
rod_unification(event, material, ingot, gem, rod);
// astralsorcery_ore_processing_infuser(event, material, ore, ingot, gem);
// bloodmagic_ore_processing_alchemy(event, material, ore, dust, gem);
// bloodmagic_ore_processing_arc(event, material, ore, dust, gem);
// create_ore_processing_with_secondary_outputs(event, material, crushedOre);
// create_gem_processing(event, material, ore, gem, dust);
// create_ingot_gem_milling(event, material, ingot, dust, gem);
// create_press_plates(event, material, gem, plate);
// emendatus_hammer_crushing(event, material, ore, dust);
// immersiveengineering_gem_crushing(event, material, dust, gem);
// immersiveengineering_ingot_crushing(event, material, dust, ingot);
// immersiveengineering_ore_processing(event, material, ore, gem);
// immersiveengineering_press_plates(event, material, ingot, gem, plate);
// occultism_ore_crushing(event, material, ore, dust, gem);
// occultism_ingot_gem_crushing(event, material, ingot, dust, gem);
// pedestals_ore_crushing(event, material, ore, dust, gem);
// pedestals_ingot_gem_crushing(event, material, ingot, dust, gem);
// thermal_press_wires(event, material, wire);
// thermal_press_plates(event, material, gem, plate);
});
// dyeSources.forEach((recipe) => {
// botania_dye_pestle_mortar(event, recipe);
// create_dye_milling(event, recipe);
// immersiveengineering_dye_crusher(event, recipe);
// mekanism_dye_enriching(event, recipe);
// pedestals_dye_crushing(event, recipe);
// thermal_dye_centrifuge(event, recipe);
// });
});
// function getPreferredItemInTag(tag) {
// const pref = wrapArray(tag.stacks).sort(({ mod: a }, { mod: b }) => compareIndices(a, b, tag))[0] || item.of(air);
// // console.info('Preferred item: ' + tag + ' => ' + pref);
// return pref;
// }
// function tagIsEmpty(tag) {
// return getPreferredItemInTag(ingredient.of(tag)).id == air;
// }
// //material unification functions
// function gear_unification(event, material, ingot, gem, gear) {
// if (gear == air) {
// return;
// }
// var output = gear,
// input,
// mold = 'immersiveengineering:mold_gear';
// if (ingot != air) {
// input = '#forge:ingots/' + material;
// } else if (gem != air) {
// input = '#forge:gems/' + material;
// } else {
// return;
// }
// // Implemented by Thermal
// // event.recipes.thermal.press(gear, [item.of(gearInput, 4), 'thermal:press_gear_die']);
// event.recipes.immersiveengineering.metal_press(output, ingredient.of(input, 4), mold);
// event.shaped(gear, [' B ', 'BAB', ' B '], {
// A: '#forge:nuggets/iron',
// B: input
// });
// }
// function rod_unification(event, material, ingot, gem, rod) {
// if (rod == air) {
// return;
// }
// event.remove({ type: 'minecraft:crafting_shaped', output: rod });
// var output = item.of(rod, 2),
// input,
// mold = 'immersiveengineering:mold_rod';
// if (ingot != air) {
// input = '#forge:ingots/' + material;
// } else if (gem != air) {
// input = '#forge:gems/' + material;
// } else {
// return;
// }
// event.recipes.thermal.press(output, [input, mold]).energy(2400);
// event.recipes.immersiveengineering.metal_press(output, input, mold);
// event.shaped(output, [' A ', ' A ', ' '], {
// A: input
// });
// }
// function astralsorcery_ore_processing_infuser(event, material, ore, ingot, gem) {
// if (ore == air) {
// return;
// }
// blacklistedMaterials = ['redstone', 'lapis', 'emerald', 'diamond', 'iron'];
// for (var i = 0; i < blacklistedMaterials.length; i++) {
// if (blacklistedMaterials[i] == material) {
// return;
// }
// }
// var input = 'forge:ores/' + material,
// output,
// count;
// if (gem != air) {
// output = gem;
// count = 5;
// } else if (ingot != air) {
// output = ingot;
// count = 3;
// } else {
// return;
// }
// event.custom({
// type: 'astralsorcery:infuser',
// fluidInput: 'astralsorcery:liquid_starlight',
// input: {
// tag: input
// },
// output: {
// item: output,
// count: count
// },
// consumptionChance: 0.1,
// duration: 100,
// consumeMultipleFluids: false,
// acceptChaliceInput: true,
// copyNBTToOutputs: false
// });
// }
// function bloodmagic_ore_processing_alchemy(event, material, ore, dust, gem) {
// if (ore == air || gem == air) {
// return;
// }
// var inputs = ['#forge:ores/' + material, '#bloodmagic:arc/cuttingfluid'],
// output = item.of(gem, 2);
// event.recipes.bloodmagic.alchemytable(output, inputs).syphon(400).ticks(200).upgradeLevel(1);
// }
// function bloodmagic_ore_processing_arc(event, material, ore, dust, gem) {
// var data = {
// recipes: []
// };
// if (ore != air && gem != air) {
// data.recipes.push({
// input: '#forge:ores/' + material,
// output: item.of(gem, 5),
// addedOutput: [],
// tool: '#bloodmagic:arc/cuttingfluid'
// });
// }
// if (gem != air && dust != air) {
// data.recipes.push({
// input: '#forge:gems/' + material,
// output: item.of(dust, 1),
// addedOutput: [],
// tool: '#bloodmagic:arc/explosive'
// });
// }
// data.recipes.forEach((recipe) => {
// event.recipes.bloodmagic
// .arc(recipe.output, recipe.input, recipe.tool, recipe.addedOutput)
// .consumeIngredient(false);
// });
// }
// function create_ore_processing_with_secondary_outputs(event, material, crushedOre) {
// if (crushedOre == air) {
// return;
// }
// var primaryOutput = crushedOre,
// stoneOutput = 'minecraft:cobblestone',
// primaryCount = 2,
// secondaryCount = 2,
// secondaryMaterial,
// input = '#forge:ores/' + material,
// processingTime = 300;
// switch (material) {
// case 'iron':
// secondaryMaterial = 'nickel';
// processingTime = 400;
// break;
// case 'nickel':
// secondaryMaterial = 'iron';
// processingTime = 350;
// break;
// case 'gold':
// secondaryMaterial = 'zinc';
// break;
// case 'copper':
// secondaryMaterial = 'gold';
// processingTime = 350;
// break;
// case 'aluminum':
// secondaryMaterial = 'iron';
// break;
// case 'lead':
// secondaryMaterial = 'silver';
// break;
// case 'silver':
// secondaryMaterial = 'lead';
// break;
// case 'uranium':
// secondaryMaterial = 'lead';
// processingTime = 400;
// break;
// case 'osmium':
// secondaryMaterial = 'tin';
// processingTime = 400;
// break;
// case 'tin':
// secondaryMaterial = 'osmium';
// processingTime = 350;
// break;
// case 'zinc':
// secondaryMaterial = 'gold';
// processingTime = 350;
// break;
// case 'iesnium':
// secondaryMaterial = 'iesnium';
// processingTime = 350;
// break;
// case 'cloggrum':
// secondaryMaterial = 'cloggrum';
// processingTime = 350;
// break;
// case 'froststeel':
// secondaryMaterial = 'froststeel';
// processingTime = 350;
// break;
// case 'regalium':
// secondaryMaterial = 'regalium';
// processingTime = 350;
// break;
// case 'utherium':
// secondaryMaterial = 'utherium';
// processingTime = 350;
// break;
// default:
// return;
// }
// var secondaryOutput = getPreferredItemInTag(ingredient.of('#create:crushed_ores/' + secondaryMaterial)).id;
// var primaryChance = 0.25,
// secondaryChance = 0.05;
// var outputs = [
// item.of(primaryOutput),
// item.of(primaryOutput, primaryCount).withChance(primaryChance),
// item.of(secondaryOutput, secondaryCount).withChance(secondaryChance)
// ];
// event.recipes.create.milling(outputs, input).processingTime(processingTime);
// primaryChance = 0.6;
// secondaryChance = 0.1;
// outputs = [
// item.of(primaryOutput),
// item.of(primaryOutput, primaryCount).withChance(primaryChance),
// item.of(secondaryOutput, secondaryCount).withChance(secondaryChance),
// Item.of(stoneOutput).withChance(0.125)
// ];
// event.recipes.create.crushing(outputs, input).processingTime(processingTime);
// }
// function create_gem_processing(event, material, ore, gem, dust) {
// if (ore == air) {
// return;
// }
// var stoneOutput = 'minecraft:cobblestone',
// processingTime = 300,
// output = gem,
// primaryCount,
// secondaryCount,
// input = '#forge:ores/' + material;
// switch (material) {
// case 'redstone':
// primaryCount = 8;
// secondaryCount = 6;
// secondaryChance = 0.25;
// output = dust;
// break;
// case 'coal':
// primaryCount = 2;
// secondaryCount = 2;
// secondaryChance = 0.5;
// break;
// case 'diamond':
// primaryCount = 2;
// secondaryCount = 1;
// secondaryChance = 0.25;
// processingTime = 500;
// break;
// case 'emerald':
// primaryCount = 2;
// secondaryCount = 1;
// secondaryChance = 0.25;
// processingTime = 500;
// break;
// case 'lapis':
// primaryCount = 8;
// secondaryCount = 4;
// secondaryChance = 0.25;
// break;
// case 'quartz':
// primaryCount = 2;
// secondaryCount = 4;
// secondaryChance = 0.5;
// processingTime = 350;
// stoneOutput = 'minecraft:netherrack';
// break;
// case 'sulfur':
// primaryCount = 6;
// secondaryCount = 2;
// secondaryChance = 0.25;
// break;
// case 'apatite':
// primaryCount = 8;
// secondaryCount = 4;
// secondaryChance = 0.25;
// break;
// case 'fluorite':
// primaryCount = 6;
// secondaryCount = 3;
// secondaryChance = 0.25;
// break;
// case 'dimensional':
// primaryCount = 6;
// secondaryCount = 3;
// secondaryChance = 0.25;
// break;
// default:
// return;
// }
// var outputs = [
// item.of(output, primaryCount),
// item.of(output, secondaryCount).withChance(secondaryChance),
// Item.of(stoneOutput).withChance(0.125)
// ];
// event.recipes.create.crushing(outputs, input).processingTime(processingTime);
// }
// function create_ingot_gem_milling(event, material, ingot, dust, gem) {
// if (dust == air) {
// return;
// }
// var input,
// outputs = [item.of(dust, 1)],
// processingTime = 300;
// if (ingot != air) {
// input = '#forge:ingots/' + material;
// } else if (gem != air) {
// input = '#forge:gems/' + material;
// } else {
// return;
// }
// event.recipes.create.milling(outputs, input).processingTime(processingTime);
// }
// function create_press_plates(event, material, gem, plate) {
// if (plate == air || gem == air) {
// return;
// }
// var output = plate;
// var input = '#forge:gems/' + material;
// event.recipes.create.pressing(output, input);
// }
// function emendatus_hammer_crushing(event, material, ore, dust) {
// if (ore == air || dust == air) {
// return;
// }
// event.remove({ id: 'immersiveengineering:crafting/hammercrushing_' + material });
// event.replaceInput(
// { id: 'emendatusenigmatica:dust_from_chunk/' + material },
// 'emendatusenigmatica:' + material + '_chunk',
// '#forge:ores/' + material
// );
// }
// function immersiveengineering_gem_crushing(event, material, dust, gem) {
// if (gem == air || dust == air) {
// return;
// }
// var output = dust,
// input = '#forge:gems/' + material;
// event.recipes.immersiveengineering.crusher(output, input).energy(2000);
// }
// function immersiveengineering_ingot_crushing(event, material, dust, ingot) {
// if (ingot == air || dust == air) {
// return;
// }
// if (material == 'signalum' || material == 'lumium' || material == 'enderium') {
// var output = dust,
// input = '#forge:ingots/' + material;
// event.recipes.immersiveengineering.crusher(output, input).energy(2000);
// }
// }
// function immersiveengineering_ore_processing(event, material, ore, gem) {
// if (ore == air || gem == air) {
// return;
// }
// var count,
// input = '#forge:ores/' + material;
// switch (material) {
// case 'sulfur':
// count = 6;
// break;
// case 'apatite':
// count = 12;
// break;
// case 'dimensional':
// count = 8;
// break;
// case 'mana':
// count = 2;
// break;
// case 'cinnabar':
// count = 2;
// break;
// case 'potassium_nitrate':
// count = 2;
// break;
// case 'bitumen':
// count = 2;
// break;
// default:
// return;
// }
// var output = item.of(gem, count);
// event.recipes.immersiveengineering.crusher(output, input).energy(2000);
// }
// function immersiveengineering_press_plates(event, material, ingot, gem, plate) {
// if (plate == air) {
// return;
// }
// //var hammer = 'immersiveengineering:hammer';
// //event.shapeless(plate, [hammer, ingot]);
// event.remove({ id: 'immersiveengineering:crafting/plate_' + material + '_hammering' });
// blacklistedMaterials = [
// 'iron',
// 'gold',
// 'copper',
// 'aluminum',
// 'silver',
// 'lead',
// 'nickel',
// 'uranium',
// 'osmium',
// 'tin',
// 'zinc',
// 'bronze',
// 'brass',
// 'constantan',
// 'electrum',
// 'steel',
// 'invar'
// ];
// for (var i = 0; i < blacklistedMaterials.length; i++) {
// if (blacklistedMaterials[i] == material) {
// return;
// }
// }
// var output = plate,
// mold = 'immersiveengineering:mold_plate';
// if (ingot != air) {
// input = '#forge:ingots/' + material;
// } else if (gem != air) {
// input = '#forge:gems/' + material;
// } else {
// return;
// }
// event.recipes.immersiveengineering.metal_press(output, input, mold).energy(2400);
// }
// function occultism_ore_crushing(event, material, ore, dust, gem) {
// if (ore == air) {
// return;
// }
// blacklistedMaterials = ['silver'];
// for (var i = 0; i < blacklistedMaterials.length; i++) {
// if (blacklistedMaterials[i] == material) {
// return;
// }
// }
// var count;
// switch (material) {
// case 'redstone':
// count = 6;
// break;
// case 'coal':
// count = 4;
// break;
// case 'lapis':
// count = 9;
// break;
// case 'quartz':
// count = 3;
// break;
// case 'sulfur':
// count = 6;
// break;
// case 'apatite':
// count = 12;
// break;
// case 'fluorite':
// count = 6;
// break;
// case 'dimensional':
// count = 8;
// break;
// default:
// count = 2;
// }
// var output,
// input = 'forge:ores/' + material,
// output = dust;
// if (gem != air) {
// output = gem;
// }
// event.custom({
// type: 'occultism:crushing',
// ingredient: {
// tag: input
// },
// result: {
// item: output,
// count: count
// },
// crushing_time: 100
// });
// }
// function occultism_ingot_gem_crushing(event, material, ingot, dust, gem) {
// if (dust == air) {
// return;
// }
// blacklistedMaterials = ['silver'];
// for (var i = 0; i < blacklistedMaterials.length; i++) {
// if (blacklistedMaterials[i] == material) {
// return;
// }
// }
// var input,
// output = dust;
// if (ingot != air) {
// input = 'forge:ingots/' + material;
// } else if (gem != air) {
// input = 'forge:gems/' + material;
// } else {
// return;
// }
// event.custom({
// type: 'occultism:crushing',
// ingredient: {
// tag: input
// },
// result: {
// item: output,
// count: 1
// },
// crushing_time: 100
// });
// }
// function pedestals_ore_crushing(event, material, ore, dust, gem) {
// if (ore == air) {
// return;
// }
// var count;
// switch (material) {
// case 'redstone':
// count = 6;
// break;
// case 'coal':
// count = 4;
// break;
// case 'lapis':
// count = 9;
// break;
// case 'quartz':
// count = 3;
// break;
// case 'sulfur':
// count = 6;
// break;
// case 'apatite':
// count = 12;
// break;
// case 'fluorite':
// count = 6;
// break;
// case 'dimensional':
// count = 8;
// break;
// default:
// count = 2;
// }
// var output,
// input = 'forge:ores/' + material,
// output = dust;
// if (gem != air) {
// output = gem;
// }
// event.custom({
// type: 'pedestals:pedestal_crushing',
// ingredient: {
// tag: input
// },
// result: {
// item: output,
// count: count
// }
// });
// event.remove({
// id: 'pedestals:pedestal_crushing/dust' + material
// });
// }
// function pedestals_ingot_gem_crushing(event, material, ingot, dust, gem) {
// if (dust == air) {
// return;
// }
// var input,
// output = dust;
// if (ingot != air) {
// input = 'forge:ingots/' + material;
// } else if (gem != air) {
// input = 'forge:gems/' + material;
// } else {
// return;
// }
// event.custom({
// type: 'pedestals:pedestal_crushing',
// ingredient: {
// tag: input
// },
// result: {
// item: output,
// count: 1
// }
// });
// }
// function thermal_press_plates(event, material, gem, plate) {
// if (plate == air || gem == air) {
// return;
// }
// var output = plate;
// var input = '#forge:gems/' + material;
// event.recipes.thermal.press(item.of(output), input);
// }
// function thermal_press_wires(event, material, wire) {
// if (wire == air) {
// return;
// }
// var output = item.of(wire, 2),
// input = '#forge:ingots/' + material,
// mold = 'immersiveengineering:mold_wire';
// event.recipes.thermal.press(output, [input, mold]).energy(2400);
// }
// //dye normalization functions
// function botania_dye_pestle_mortar(event, recipe) {
// if (recipe.type == 'petal') {
// return;
// }
// var baseCount = 2,
// multiplier = 1;
// if (recipe.type == 'large') {
// multiplier = 2;
// }
// var count = baseCount * multiplier,
// output = Item.of(recipe.primary, count),
// inputs = [recipe.input, 'botania:pestle_and_mortar'];
// event.shapeless(output, inputs);
// }
// function create_dye_milling(event, recipe) {
// var baseCount = 2,
// multiplier = 1;
// if (recipe.type == 'large') {
// multiplier = 2;
// }
// var count = baseCount * multiplier,
// outputs = [
// Item.of(recipe.primary, count),
// Item.of(recipe.secondary).withCount(count).withChance(0.25),
// Item.of(recipe.tertiary).withCount(multiplier).withChance(0.05)
// ],
// input = recipe.input;
// event.recipes.create.milling(outputs, input);
// }
// function immersiveengineering_dye_crusher(event, recipe) {
// var baseCount = 2,
// multiplier = 1;
// if (recipe.type == 'large') {
// multiplier = 2;
// }
// var count = baseCount * multiplier,
// output = Item.of(recipe.primary, count),
// extras = [
// Item.of(recipe.secondary).withCount(count).withChance(0.25),
// Item.of(recipe.tertiary).withCount(multiplier).withChance(0.05)
// ],
// input = recipe.input;
// event.recipes.immersiveengineering.crusher(output, input, extras);
// }
// function mekanism_dye_enriching(event, recipe) {
// var baseCount = 3,
// multiplier = 1;
// if (recipe.type == 'large') {
// multiplier = 2;
// }
// var count = baseCount * multiplier,
// output = Item.of(recipe.primary, count),
// input = recipe.input;
// event.recipes.mekanism.enriching(output, input);
// }
// function pedestals_dye_crushing(event, recipe) {
// var baseCount = 2,
// multiplier = 1;
// if (recipe.type == 'large') {
// multiplier = 2;
// }
// var count = baseCount * multiplier,
// output = recipe.primary,
// input = recipe.input;
// event.custom({
// type: 'pedestals:pedestal_crushing',
// ingredient: {
// item: input
// },
// result: {
// item: output,
// count: count
// }
// });
// }
// function thermal_dye_centrifuge(event, recipe) {
// var baseCount = 2,
// multiplier = 1;
// if (recipe.type == 'large') {
// multiplier = 2;
// }
// var count = baseCount * multiplier,
// outputs = [
// Item.of(recipe.primary, count),
// Item.of(recipe.secondary).withCount(count).withChance(0.25),
// Item.of(recipe.tertiary).withCount(multiplier).withChance(0.05)
// ],
// input = recipe.input;
// event.recipes.thermal.centrifuge(outputs, input);
// }