From e8322eed47dd318c69dcbd53088ea387d16f5fc0 Mon Sep 17 00:00:00 2001 From: Victoria Fischer Date: Mon, 30 Jun 2025 20:10:21 +0200 Subject: [PATCH] patch up missing rod recipes, fix andesite alloy voiding bug, update geckolib, add butchery mod --- index.toml | 13 +++++-- kubejs/server_scripts/mods/create.js | 11 ++++++ kubejs/server_scripts/mods/powah.js | 52 +++++++++++++++++++++++-- kubejs/server_scripts/ore-processing.js | 37 +++++++++++------- mods/butchery.pw.toml | 13 +++++++ mods/geckolib.pw.toml | 16 ++++---- pack.toml | 2 +- 7 files changed, 115 insertions(+), 29 deletions(-) create mode 100644 mods/butchery.pw.toml diff --git a/index.toml b/index.toml index 1f82405..e570de4 100644 --- a/index.toml +++ b/index.toml @@ -627,7 +627,7 @@ hash = "4717847a6d54f56ed6919a1e2c3591fc73780973708e818a563753132bc7c15e" [[files]] file = "kubejs/server_scripts/mods/create.js" -hash = "37b42afa67f643e56d3ff664cf5a9413d97bbff5fe42fc6ed84ef5cf06d7e320" +hash = "b3704e9c562dc0cb1ea474d880ae985801c739681a3a43fbe81801bea5d7d486" [[files]] file = "kubejs/server_scripts/mods/create_jetpack.js" @@ -707,7 +707,7 @@ hash = "2d9109e7f1e0beed5dd325fb7939a15f6afa2f2783e31f3830d1fb6f055f3f07" [[files]] file = "kubejs/server_scripts/mods/powah.js" -hash = "93b1aee5ea41c226a2dd5e453824518ab0eeb6d15f649f0a74e5b0e4be9a2e17" +hash = "b4ec417cacfa80c7cd7115086b952583344c212109f1f62fa96c837e9f100af7" [[files]] file = "kubejs/server_scripts/mods/powder_power.js" @@ -751,7 +751,7 @@ hash = "4003082f31011049402ff31504a6db0f4fdd6c7076167109c66fa412286be462" [[files]] file = "kubejs/server_scripts/ore-processing.js" -hash = "d6b083214ed67a511b60348e7955c69513ca9380b1aee351a47301eeef28ff60" +hash = "3f493c302b8374f805d0f983baec2cf020a9ade927c66478f8d533e916947375" [[files]] file = "kubejs/server_scripts/progression/report.js" @@ -960,6 +960,11 @@ file = "mods/building-gadgets.pw.toml" hash = "8461b7344559646b5051a6d812e2cd4d43e62c8c817d17f0b2552f65306f43d4" metafile = true +[[files]] +file = "mods/butchery.pw.toml" +hash = "67a12440b89d7c88ea7552249dba464314b78dc463774110128f49e82524156d" +metafile = true + [[files]] file = "mods/caelus.pw.toml" hash = "5155ae1ca2c606df2001422a48cd167d2449160d5fe12a302753dee69af7fe92" @@ -1382,7 +1387,7 @@ metafile = true [[files]] file = "mods/geckolib.pw.toml" -hash = "598758f152e98916bc6eea2ad73a82b47a6e6934f4b0ba1e1f6593773afd1a50" +hash = "5290e7961ab2ca528b8bf3fecfbcb33240029314fd7cb2086c06c3ee13daf1fc" metafile = true [[files]] diff --git a/kubejs/server_scripts/mods/create.js b/kubejs/server_scripts/mods/create.js index 1afff63..d6fcb4c 100644 --- a/kubejs/server_scripts/mods/create.js +++ b/kubejs/server_scripts/mods/create.js @@ -109,4 +109,15 @@ ServerEvents.recipes(event => { '#forge:ender_pearls', '#kubejs:grist/build/improved' ); + + ['red', 'orange', 'yellow', 'green', 'blue', 'purple', 'magenta', 'white', 'black', 'light_gray', 'gray', 'brown', 'cyan', 'pink'].forEach(color => { + // Create colored blocks from the mixer. + // TODO: This is required due to disabling all automatic crafting recipes, maybe these can just be re-enabled somehow? + event.recipes.create.mixing(`8x minecraft:${color}_concrete_powder`, [`minecraft:${color}_dye`, '4x #forge:sand', '4x minecraft:gravel']); + event.recipes.create.mixing(`8x minecraft:${color}_concrete`, [`minecraft:${color}_dye`, '4x #forge:sand', '4x minecraft:gravel', Fluid.of('minecraft:water', 250 * 8)]); + event.recipes.create.mixing(`8x minecraft:${color}_terracotta`, [`minecraft:${color}_dye`, '8x minecraft:terracotta']); + event.recipes.create.mixing(`minecraft:${color}_concrete`, [`minecraft:${color}_concrete_powder`, Fluid.of('minecraft:water', 250)]); + event.recipes.create.mixing(`minecraft:${color}_wool`, [`minecraft:${color}_dye`, '#minecraft:wool']); + event.recipes.create.mixing(`minecraft:${color}_stained_glass`, [`minecraft:${color}_dye`, '#forge:glass/colorless']).heated(); + }); }); \ No newline at end of file diff --git a/kubejs/server_scripts/mods/powah.js b/kubejs/server_scripts/mods/powah.js index 2fb44a4..1f242db 100755 --- a/kubejs/server_scripts/mods/powah.js +++ b/kubejs/server_scripts/mods/powah.js @@ -10,7 +10,7 @@ ServerEvents.recipes(event => { 'A': 'powah:dielectric_paste', 'B': '#chipped:iron_bars', 'C': '#kubejs:grist/intelligent/improved' - }) + }); // Dielectric casings are used in nearly every powah recipe, so lets require energetic grist event.shaped('powah:dielectric_casing', [ @@ -39,8 +39,42 @@ ServerEvents.recipes(event => { 'thermal:rf_coil' ]); - event.recipes.powah.energizing(['minecraft:diamond', '#kubejs:grist/energetic/improved'], 'powah:crystal_niotic', 180000); - event.recipes.powah.energizing(['minecraft:emerald', '2x #kubejs:grist/energetic/improved'], 'powah:crystal_spirited', 1000000); + event.replaceInput({output: 'powah:thermoelectric_plate'}, + 'minecraft:blaze_powder', + '#kubejs:grist/energetic/basic' + ); + event.replaceInput({output: 'powah:thermoelectric_plate'}, + 'minecraft:redstone', + '#kubejs:grist/build/basic' + ); + + event.replaceInput({mod: 'powah'}, + 'minecraft:quartz', + Ingredient.of('minecraft:quartz').or('ae2:certus_quartz_crystal') + ); + + event.replaceInput({mod: 'powah'}, + 'minecraft:quartz_block', + Ingredient.of('minecraft:quartz_block').or('ae2:quartz_block') + ); + + // Nitro and spirited require radiant grist + event.remove({output: 'powah:crystal_nitro'}); + event.recipes.powah.energizing(['3x #kubejs:grist/energetic/radiant/block'], '2x powah:crystal_nitro', 20000000); + event.remove({output: 'powah:crystal_spirited'}); + event.recipes.powah.energizing(['powah:crystal_niotic', '2x #kubejs:grist/energetic/radiant'], '2x powah:crystal_spirited', 1000000); + + // Niotic and blazing are at the improved tier + event.remove({output: 'powah:crystal_niotic'}); + event.recipes.powah.energizing(['3x #kubejs:grist/energetic/improved/block'], '2x powah:crystal_niotic', 180000); + event.remove({output: 'powah:crystal_blazing'}); + event.recipes.powah.energizing(['3x #kubejs:grist/energetic/improved'], '2x powah:crystal_blazing', 90000); + + // Energized steel (aka hardened tier) require basic grist + event.remove({output: 'powah:steel_energized'}); + event.recipes.powah.energizing(['minecraft:iron', 'minecraft:gold', '3x #kubejs:grist/energetic/basic'], '2x powah:steel_energized', 10000); + + // Dielectric paste can be crafted with basic grist, and scaled up through machines event.shapeless('6x powah:dielectric_paste', [ 'kubejs:grist_primordeal_basic', 'kubejs:grist_energetic_basic', @@ -48,4 +82,16 @@ ServerEvents.recipes(event => { 'minecraft:clay_ball', '#alltheores:ore_hammers' ]); + // TODO: Add create mixing and thermal alloy smelting versions for dialectric paste + event.recipes.thermal.smelter('24x powah:dielectric_paste', [ + 'kubejs:grist_energetic_basic', + 'minecraft:clay_ball', + 'minecraft:redstone' + ]); + event.recipes.create.mixing('12x powah:dielectric_paste', [ + 'kubejs:grist_energetic_basic', + 'minecraft:clay_ball', + 'minecraft:redstone' + ]).heated(); + // TODO: create a crystalizer recipe with destabilized redstone? liquid grist? }); \ No newline at end of file diff --git a/kubejs/server_scripts/ore-processing.js b/kubejs/server_scripts/ore-processing.js index 31f6f92..4aec714 100755 --- a/kubejs/server_scripts/ore-processing.js +++ b/kubejs/server_scripts/ore-processing.js @@ -1,4 +1,7 @@ -// FIXME: Cannot process alltheores:raw_nickel +//FIXME: broken andesite mixing recipe creates no output +//FIXME: test create shaft and cog recipes again +//FIXME: Figure out what the original create wool and concrete coloring recipes were, add mixer variants +//FIXME: Create a water mixer route to turn concrete powder to concrete ServerEvents.recipes(event => { // Metal tiers: // Copper, iron, tin, nickel, gold, zinc, brass, invar, bronze - Pre-basic build tier, the only ores that don't require a pulverizer or smelter to process @@ -128,7 +131,6 @@ ServerEvents.recipes(event => { tin: [], gold: [], zinc: [], - // FIXME: Need to add create:andesite_alloy to #forge:ingots/andesite_alloy andesite_alloy: [4, '2x minecraft:andesite', 'tin'] }, // Andesite age: Iron pickaxe to mine, crushing wheels to crush, then the crushed ore is smelted normally. Alloys require the create mixer. Ore washing to double crushed ore is unlocked, but fans require invar instead of iron. Gears can be crafted on a crafting table @@ -264,7 +266,8 @@ ServerEvents.recipes(event => { // 4 ingots = 1 gear in the press if (gearType.id != 'minecraft:air') { - event.recipes.thermal.press(gearType, [ingotType.withCount(4), 'thermal:press_gear_die']).id(`kubejs:${metal}_gear_in_thermal_press`); + // TODO: would be fun to have a special 'high efficiency' gear press? + event.recipes.thermal.press(gearType.withCount(2), [ingotType.withCount(4), 'thermal:press_gear_die']).id(`kubejs:${metal}_gear_in_thermal_press`); } // 9 Nuggets == 1 ingot, for every material @@ -289,6 +292,16 @@ ServerEvents.recipes(event => { event.recipes.thermal.press(ingotType.withCount(9), [blockType, 'thermal:press_unpacking_die']).id(`kubejs:${metal}_ingots_from_block_in_thermal_press`); } + if (rodType.id != 'minecraft:air') { + // All metals can waste one ingot to create a rod in the crafting table + event.shapeless(rodType, [ingotType.withCount(2), '#alltheores:ore_hammers']); + // Or create two rods from one ingot in the create cutter + event.recipes.create.cutting(rodType.withCount(2), ingotType); + // Or create four rods from the thermal sawmill + event.recipes.thermal.sawmill(rodType.withCount(4), ingotType); + // TODO: Isn't there also a thermal press we can use? + } + // All alloys can be created in the thermal smelter, or a superheated create mixer if (ingredients.length > 0) { let real_ingredients = alloyIngredients(['ingots', 'dusts'], ingredients); @@ -298,15 +311,13 @@ ServerEvents.recipes(event => { } else { // If we have 3 or fewer ingredients, we can create it in the 3-slot thermal smelter if (real_ingredients.length <= 3) { - event.recipes.thermal.smelter(ingotType.withCount(ingredients[0]), real_ingredients); - event.recipes.create.mixing(ingotType.withCount(ingredients[0]), real_ingredients).heated(); + event.recipes.thermal.smelter(ingotType.withCount(ingredients[0]), real_ingredients).id(`kubejs:metals/smelting/${metal}`); } else { // Materials with 4 or more require superheating, and can only be made in the mixer - event.recipes.create.mixing(ingotType.withCount(ingredients[0]), real_ingredients).superheated(); + event.recipes.create.mixing(ingotType.withCount(ingredients[0]), real_ingredients).superheated().id(`kubejs:metals/superheated_mixing/${metal}`); } } } - // TODO: Create saw, 3x3 packing/unpacking dies, mechanical press } } @@ -413,10 +424,10 @@ ServerEvents.recipes(event => { console.warn(`No ${metal} plates available!`); } - let real_ingredients = alloyIngredients(['ingots', 'dusts'], ingredients); - + // These ones can simply have their dusts mixed in a cold mixer to create the "alloy" ingot, which for the andesite tier is only andesite alloy. + let real_ingredients = alloyIngredients(['dusts'], ingredients); if (real_ingredients.length > 0) { - event.recipes.create.mixing(ingotType.withCount(ingredients[0]), real_ingredients).heated(); + event.recipes.create.mixing(ingotType.withCount(ingredients[0]), real_ingredients).id(`kubejs:metals/cold_mixing/${metal}`); } } } @@ -444,10 +455,10 @@ ServerEvents.recipes(event => { console.error(`No ${metal} ore pulverizing available! Falling back to dust-based processing line`); } - let real_ingredients = alloyIngredients(['dusts'], ingredients); - + // Mechanical alloys can produce whole ingots from heated mixing + let real_ingredients = alloyIngredients(['ingots', 'dusts'], ingredients); if (real_ingredients.length > 0) { - event.recipes.create.mixing(dustType.withCount(ingredients[0]), real_ingredients).heated(); + event.recipes.create.mixing(ingotType.withCount(ingredients[0]), real_ingredients).heated().id(`kubejs:metals/hot_mixing/${metal}`); } } } diff --git a/mods/butchery.pw.toml b/mods/butchery.pw.toml new file mode 100644 index 0000000..2ef90cd --- /dev/null +++ b/mods/butchery.pw.toml @@ -0,0 +1,13 @@ +name = "Butchery" +filename = "butcher-3.6.1-forge-1.20.1.jar" +side = "both" + +[download] +url = "https://cdn.modrinth.com/data/6YfOmC9t/versions/YLBZX0fF/butcher-3.6.1-forge-1.20.1.jar" +hash-format = "sha512" +hash = "077a471b620f9dff6e23e53b404a8aede98634c80ffd0f12cc48ed8f475a0f202334ac7a097408560e45fe1fe5bbe6409667ac6498ac0c64a37d5f5508f044f0" + +[update] +[update.modrinth] +mod-id = "6YfOmC9t" +version = "YLBZX0fF" diff --git a/mods/geckolib.pw.toml b/mods/geckolib.pw.toml index 4b9b25f..99bba4e 100644 --- a/mods/geckolib.pw.toml +++ b/mods/geckolib.pw.toml @@ -1,13 +1,13 @@ -name = "GeckoLib" -filename = "geckolib-forge-1.20.1-4.7.1.2.jar" +name = "Geckolib" +filename = "geckolib-forge-1.20.1-4.7.2.jar" side = "both" [download] -hash-format = "sha1" -hash = "c2b5d7ccf77f505996701ba477741d7e5cd034e1" -mode = "metadata:curseforge" +url = "https://cdn.modrinth.com/data/8BmcQJ2H/versions/AiVKLYep/geckolib-forge-1.20.1-4.7.2.jar" +hash-format = "sha512" +hash = "40aefbb89e4a65c1955bd05c13cb656c0902e545741770d9395037f6a87684e91676935e0d5b7be0419abd1599272fa3aa245dc3976208b82f568d994813e314" [update] -[update.curseforge] -file-id = 6333474 -project-id = 388172 +[update.modrinth] +mod-id = "8BmcQJ2H" +version = "AiVKLYep" diff --git a/pack.toml b/pack.toml index db7c2b3..4ba7ba4 100644 --- a/pack.toml +++ b/pack.toml @@ -6,7 +6,7 @@ pack-format = "packwiz:1.1.0" [index] file = "index.toml" hash-format = "sha256" -hash = "ff8003c9cacc6a7708f6ae87c1e8387a7673749b5608bc95198bf51426d8bf25" +hash = "57c103afe30954ef158d822e714058fd8a1115af90dca61467d2c8347c9c8b60" [versions] forge = "47.4.0"