Added mod files

This commit is contained in:
Jacob Vinding
2025-12-26 21:38:55 +01:00
parent 64c4d60c47
commit c4ad0f3e2e
5039 changed files with 894558 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
The keymods folder is for misc changes involving the key mods for CABIN
These mods likely also have changes in the main scripts like chapters.js and tags.js

View File

@@ -0,0 +1,70 @@
ServerEvents.recipes(event => {
// Most Ad Astra Recipes are added in chapters.js
event.recipes.create.mixing(("3x ad_astra:steel_ingot"),["3x minecraft:iron_ingot", "minecraft:coal"]).heated()
event.remove({type: "ad_astra:alloying"})
event.remove({type: "ad_astra:compressing"})
event.remove({type: "ad_astra:cryo_freezing"})
event.remove({type: "ad_astra:nasa_workbench"})
event.remove({type: "ad_astra:refining"})
// Remove all the recipes we don't want from Ad Astra
// We're in an awkward situation where we want half of the recipes and don't want the other half
let begoneEarth = [
"tier_1_rover", "launch_pad",
"steel_cable", "desh_cable", "desh_fluid_pipe", "ostrum_fluid_pipe", "cable_duct", "fluid_pipe_duct",
"coal_generator", "compressor", "etrionic_blast_furnace", "nasa_workbench", "fuel_refinery", "oxygen_loader",
"solar_panel", "water_pump", "oxygen_distributor", "gravity_normalizer", "energizer", "cryo_freezer", "oxygen_sensor",
/* "ti_69", "wrench",*/ "zip_gun",
"etrionic_capacitor", "gas_tank", "large_gas_tank", // "photovoltaic_etrium_cell",
"oxygen_gear", "wheel", "engine_frame", "fan", "rocket_nose_cone",
"rocket_fin"
]
let begoneRegex = [
/^ad_astra:(space|netherite_space|jet_suit)_(helmet|suit|pants|boots)$/,
"ad_astra:jet_suit",
/^ad_astra:(steel|desh|ostrum|calorite)_(tank|engine)$/,
]
begoneEarth.forEach(begone => { event.remove({ id: `ad_astra:${begone}` }) })
begoneRegex.forEach(begone => { event.remove({ id: begone }) })
event.replaceInput({ id: "ad_astra:ti_69" }, "#forge:plates/steel", "kubejs:matter_plastics")
})
ServerEvents.highPriorityData(event=>{
let spaceStationRecipe = {
type: "ad_astra:space_station_recipe",
dimension: "ad_astra:earth_orbit",
ingredients: [
{
ingredient: {
item: "kubejs:computation_matrix"
},
count: 64
},
{
ingredient: {
item: "kubejs:enderium_machine"
},
count: 64
},
{
ingredient: {
item: "ae2:controller"
},
count: 64
},
{
ingredient: {
tag: "forge:storage_blocks/iron"
},
count: 64
}
],
structure: "ad_astra:space_station"
}
event.addJson("ad_astra:recipes/space_station/earth_orbit_space_station", spaceStationRecipe)
spaceStationRecipe.dimension = "ad_astra:moon_orbit"
event.addJson("ad_astra:recipes/space_station/moon_orbit_space_station", spaceStationRecipe)
})

View File

@@ -0,0 +1,8 @@
// priority: 1
ServerEvents.recipes(event => {
event.remove({ output: "ae2:vibration_chamber" })
event.remove({ id: "ae2:transform/flawed_budding_quartz" })
event.remove({ id: "ae2:transform/chipped_budding_quartz" })
event.remove({ id: "ae2:transform/damaged_budding_quartz" })
})

View File

@@ -0,0 +1,13 @@
// priority: 1
wood_types.push("architects_palette:twisted")
ServerEvents.recipes(event => {
event.remove({ id: "architects_palette:smelting/charcoal_block_from_logs_that_burn_smoking" })
event.remove({ id: "architects_palette:charcoal_block" })
event.stonecutting("architects_palette:charcoal_block", "minecraft:charcoal")
donutCraft(event, Item.of("architects_palette:plating_block", 8), "create:iron_sheet", "minecraft:stone")
event.replaceInput({ id: "architects_palette:wither_lamp" }, "architects_palette:withered_bone", "tconstruct:necrotic_bone")
event.replaceInput({ id: "architects_palette:withered_bone_block" }, "architects_palette:withered_bone", "tconstruct:necrotic_bone")
event.remove({ id: "architects_palette:withered_bone" })
})

View File

@@ -0,0 +1,58 @@
// priority: 1
ServerEvents.recipes(event => {
// casing recipe changes
let tweak_casing = (name, mats) => {
event.remove({ output: name + "_casing"})
event.shapeless(Item.of(name + "_casing", 2), mats)
}
tweak_casing("create:andesite", ["create:andesite_alloy", "#minecraft:logs"])
tweak_casing("create:copper", ["create:copper_sheet", "#minecraft:logs"])
tweak_casing("create:railway", ["create:golden_sheet", "minecraft:deepslate"])
tweak_casing("create:brass", ["create:brass_sheet", "#minecraft:logs"])
tweak_casing("kubejs:zinc", ["create:zinc_ingot", "minecraft:stone"])
tweak_casing("kubejs:lead", ["thermal:lead_plate", "minecraft:deepslate"])
tweak_casing("kubejs:invar", ["thermal:invar_ingot", "minecraft:stone"])
tweak_casing("kubejs:enderium", ["minecraft:ender_pearl", "minecraft:obsidian"])
tweak_casing("kubejs:fluix", ["thermal:lead_plate", "minecraft:blackstone"])
// tweak_casing('alloyed:steel', ["alloyed:steel_sheet", '#minecraft:logs'])
tweak_casing("create:refined_radiance", ["create:refined_radiance", "#minecraft:logs"])
tweak_casing("create:shadow_steel", ["create:shadow_steel", "#minecraft:logs"])
// recipe changes
event.replaceInput({ id: "create:crafting/kinetics/adjustable_chain_gearshift" }, "create:electron_tube", "minecraft:redstone")
event.replaceInput({ id: "create:crafting/kinetics/rope_pulley" }, "#forge:wool", "#supplementaries:ropes")
// windmill recipe tweaks
event.remove({ id: "create:crafting/kinetics/white_sail" })
event.shaped("2x create:white_sail", [
"SSS",
"NAN",
"SSS"
], {
A: "#forge:wool",
N: "minecraft:iron_nugget",
S: "minecraft:stick"
})
// tweak obsidian crushing recipe
event.remove({ id: "create:crushing/obsidian" })
event.recipes.create.crushing("create:powdered_obsidian", "minecraft:obsidian")
// recompacting obsidian dust into its resource
event.recipes.create.compacting("#forge:dusts/obsidian", "minecraft:obsidian")
// Gravel and red sand washing buffs
event.remove({ id: "create:splashing/gravel" })
event.recipes.create.splashing([
Item.of(Item.of("minecraft:iron_nugget", 2)).withChance(0.125),
Item.of("minecraft:flint").withChance(0.25)
], "minecraft:gravel")
event.remove({ id: "create:splashing/red_sand" })
event.recipes.create.splashing([
Item.of(Item.of("minecraft:gold_nugget", 2)).withChance(0.125),
Item.of("minecraft:dead_bush").withChance(0.05)
], "minecraft:red_sand")
// unify dough and allow the slime recipe to take dough from farmer's delight
event.remove({ id: "create:crafting/appliances/dough" })
event.replaceOutput({ id: "farmersdelight:wheat_dough_from_water" }, "farmersdelight:wheat_dough", "create:dough")
event.replaceOutput({ id: "farmersdelight:wheat_dough_from_eggs" }, "farmersdelight:wheat_dough", "create:dough")
event.replaceInput({ id: "create:crafting/appliances/slime_ball" }, "create:dough", "#forge:dough")
})

View File

@@ -0,0 +1,7 @@
ServerEvents.recipes(event => {
// Recipes that don't use item tags when they should be
event.replaceInput({id: "createdeco:cast_iron_ingot"}, "createdeco:cast_iron_nugget","#forge:nuggets/cast_iron")
event.replaceInput({id: "createdeco:cast_iron_ingot_from_cast_iron_block"}, "createdeco:cast_iron_block","#forge:storage_blocks/cast_iron")
event.replaceInput([{id: "createdeco:cast_iron_block"}, {id: "createdeco:cast_iron_nugget_from_cast_iron_ingot"}], "createdeco:cast_iron_ingot","#forge:ingots/cast_iron")
event.replaceInput({id: "minecraft:pressing/cast_iron_sheet"}, "createdeco:cast_iron_ingot","#forge:ingots/cast_iron")
})

View File

@@ -0,0 +1,44 @@
// priority: 1
ServerEvents.recipes(event => {
// Fix farmer's delight recipe conflict with rechiseled
event.remove({ id: "farmersdelight:flint_knife" })
event.remove({ id: "farmersdelight:iron_knife" })
event.remove({ id: "farmersdelight:golden_knife" })
event.remove({ id: "farmersdelight:diamond_knife" })
event.shaped("farmersdelight:flint_knife", ["S ", " M"], { M: "minecraft:flint", S: "#forge:rods/wooden" })
event.shaped("farmersdelight:iron_knife", ["S ", " M"], { M: "minecraft:iron_ingot", S: "#forge:rods/wooden" })
event.shaped("farmersdelight:golden_knife", ["S ", " M"], { M: "minecraft:gold_ingot", S: "#forge:rods/wooden" })
event.shaped("farmersdelight:diamond_knife", ["S ", " M"], { M: "minecraft:diamond", S: "#forge:rods/wooden" })
// Modify farmer's delight log stripping
event.remove({ input: "#minecraft:logs", type: "farmersdelight:cutting" })
// laziness and its consequences have been a distaster for the human race
wood_types.forEach(wood => {
let log = wood + "_log"
if (!Item.exists(log)) {
log = wood + "_stem"
}
let woodLog = wood + "_wood"
if (!Item.exists(woodLog)) {
woodLog = wood + "_hyphae"
}
let strippedLog = log.replace(":",":stripped_")
let strippedWood = woodLog.replace(":",":stripped_")
if (Item.exists(log) && Item.exists(strippedLog)) {
event.custom({
"type": "farmersdelight:cutting",
"ingredients": [{ "item": log }],
"tool": { "tag": "forge:tools/axes" },
"result": [{ "item": strippedLog }, { "item": "farmersdelight:tree_bark" }]
})
}
if (Item.exists(woodLog) && Item.exists(strippedWood)) {
event.custom({
"type": "farmersdelight:cutting",
"ingredients": [{ "item": woodLog }],
"tool": { "tag": "forge:tools/axes" },
"result": [{ "item": strippedWood }, { "item": "farmersdelight:tree_bark" }]
})
}
})
})

View File

@@ -0,0 +1,4 @@
// priority: 1
ServerEvents.recipes(event => {
event.remove({ id:"ftbquests:loot_crate_opener"})
})

View File

@@ -0,0 +1,47 @@
// priority: 1
ServerEvents.recipes(event => {
// unify the output
event.replaceOutput({ id: "occultism:crushing/obsidian_dust" }, "occultism:obsidian_dust", "create:powdered_obsidian")
// Remove unwanted ore miner ores
event.remove({ id: "occultism:miner/ores/redstone_ore" })
event.remove({ id: "occultism:miner/ores/aluminum_ore" })
event.remove({ id: "occultism:miner/ores/tin_ore" })
event.remove({ id: "occultism:miner/ores/silver_ore" })
event.remove({ id: "occultism:miner/deeps/deepslate_redstone_ore" })
event.remove({ id: "occultism:miner/deeps/deepslate_aluminum_ore" })
event.remove({ id: "occultism:miner/deeps/deepslate_tin_ore" })
event.remove({ id: "occultism:miner/deeps/deepslate_silver_ore" })
// Silver replacements
event.replaceInput({ id: "occultism:crafting/magic_lamp_empty" }, "#forge:ingots/silver", "#forge:ingots/iron")
event.replaceInput({ id: "occultism:crafting/lens_frame" }, "#forge:ingots/silver", "#forge:ingots/zinc")
event.replaceInput({ type: "occultism:ritual" }, "#forge:dusts/silver", "#forge:dusts/zinc")
event.replaceInput({ type: "occultism:ritual" }, "#forge:ingots/silver", "#forge:ingots/zinc")
event.replaceInput({ type: "occultism:ritual" }, "#forge:storage_blocks/silver", "#forge:storage_blocks/zinc")
// use dust instead of raw ore for ritual recipes
event.replaceInput({ type: "occultism:ritual" }, "#forge:raw_materials/silver", "#forge:dusts/zinc")
event.replaceInput({ type: "occultism:ritual" }, "#forge:raw_materials/iron", "#forge:dusts/iron")
event.replaceInput({ type: "occultism:ritual" }, "#forge:raw_materials/gold", "#forge:dusts/gold")
event.replaceInput({ type: "occultism:ritual" }, "#forge:raw_materials/copper", "#forge:dusts/copper")
// crushing unification
event.replaceOutput({ type: "occultism:crushing" }, "occultism:iron_dust", "thermal:iron_dust")
event.replaceOutput({ type: "occultism:crushing" }, "occultism:gold_dust", "thermal:gold_dust")
event.replaceOutput({ type: "occultism:crushing" }, "occultism:copper_dust", "thermal:copper_dust")
event.replaceOutput({ type: "occultism:crushing" }, "occultism:iron_dust", "thermal:iron_dust")
event.replaceOutput({ type: "occultism:crushing" }, "occultism:gold_dust", "thermal:gold_dust")
event.replaceOutput({ type: "occultism:crushing" }, "occultism:silver_dust", "thermal:silver_dust")
})
// PlayerEvents.loggedIn(event => {
// if (!global.occultism_reload) {
// global.occultism_reload = true
// event.server.runCommandSilent(`reload`)
// }
// })

View File

@@ -0,0 +1,49 @@
// priority: 1
ServerEvents.recipes(event => {
// So many recipes that we don't want
event.remove({ mod: "projectred_core" })
// red alloy ingot
event.recipes.create.compacting([Item.of("projectred_core:red_ingot")], [Fluid.of("thermal:redstone", 250).toJson(), Item.of("minecraft:copper_ingot")] )
event.recipes.create.compacting([Item.of("projectred_core:red_ingot")], [Item.of("minecraft:redstone", 4), Item.of("minecraft:copper_ingot")] )
event.recipes.thermal.smelter("projectred_core:red_ingot", ["minecraft:copper_ingot", "minecraft:redstone"])
// recreate the circuit plate smelting recipes
event.smelting(Item.of("projectred_core:plate", 2), "minecraft:smooth_stone")
// recreate illumar recipes
colours.forEach(c=>{
event.shapeless(`projectred_core:${c}_illumar`, ["minecraft:glowstone_dust", "minecraft:glowstone_dust", "#forge:dyes/" + c, "#forge:dyes/" + c])
})
// recreate screwdriver recipe
event.shaped("projectred_core:screwdriver", [
"I ",
" IB",
" BI"
], {
I: "#forge:ingots/iron",
B: "#forge:dyes/blue"
})
// Platformed plate
// The projectred transmission script replaces red ingot with red alloy wire
event.shapeless("projectred_core:platformed_plate", [
"projectred_core:plate",
Platform.isLoaded("projectred_transmission") ? "projectred_transmission:red_alloy_wire" : "projectred_core:red_ingot",
"create:andesite_alloy"
]).id("kubejs:platformed_plate")
// Circuit cutting. Projectred Transmission circuit recipes are added in the circuit script in the mods folder
let circuit = (id, override) => {
if (override)
event.remove({ output: id })
event.stonecutting(Item.of(id, 1), "projectred_core:platformed_plate")
}
circuit("minecraft:repeater", false)
circuit("minecraft:comparator", false)
circuit("create:pulse_repeater", true)
circuit("create:pulse_extender", true)
circuit("create:pulse_timer", true)
circuit("create:powered_latch", true)
circuit("create:powered_toggle_latch", true)
})

View File

@@ -0,0 +1,278 @@
// priority: 1
wood_types.push("tconstruct:greenheart")
wood_types.push("tconstruct:skyroot")
wood_types.push("tconstruct:bloodshroom")
wood_types.push("tconstruct:enderbark")
ServerEvents.recipes(event => {
// It is possible to duplicate rails in 1.20.1 Minecraft, so we need to remove rail melting
event.custom({
"type": "tconstruct:melting",
"ingredient": [
{
"item": "minecraft:iron_bars"
}
],
"result": {
"amount": 30,
"tag": "forge:molten_iron"
},
"temperature": 800,
"time": 35
}).id("tconstruct:smeltery/melting/metal/iron/nugget_3")
event.custom({
"type": "tconstruct:melting",
"ingredient": [
{
"item": "minecraft:stonecutter"
},
{
"item": "minecraft:piston"
},
{
"item": "minecraft:sticky_piston"
}
],
"result": {
"amount": 90,
"tag": "forge:molten_iron"
},
"temperature": 800,
"time": 60
}).id("tconstruct:smeltery/melting/metal/iron/ingot_1")
event.remove({ id: "tconstruct:smeltery/melting/metal/gold/powered_rail" })
// Obsidian pane crafting
// Not sure where the original recipe went
event.shaped(Item.of("tconstruct:obsidian_pane", 8), [
"SSS",
"SSS"
], {
S: "minecraft:obsidian"
})
// melt blaze rods into blazing blood
event.custom({
"type": "tconstruct:melting",
"ingredient": { "tag": "forge:rods/blaze" },
"result": { "fluid": "tconstruct:blazing_blood", "amount": 100 },
"temperature": 790,
"time": 40
})
// Melt redstone into destabilized redstone
event.custom({
"type": "tconstruct:melting",
"ingredient": { "item": "minecraft:redstone" },
"result": { "fluid": "thermal:redstone", "amount": 100 },
"temperature": 300,
"time": 10
});
event.custom({
"type": "tconstruct:melting",
"ingredient": { "item": "minecraft:redstone_block" },
"result": { "fluid": "thermal:redstone", "amount": 900 },
"temperature": 500,
"time": 90
});
// Remove coin cast
event.remove({ id: "tconstruct:smeltery/casts/sand_casts/coins" })
event.remove({ id: "tconstruct:smeltery/casts/red_sand_casts/coins" })
event.remove({ id: "tconstruct:smeltery/casts/gold_casts/coins" })
let coinMaterials = [
"iron",
"gold",
"copper",
"netherite",
"tin",
"lead",
"silver",
"nickel",
"bronze",
"electrum",
"invar",
"constantan",
"signalum",
"lumium",
"enderium"
];
coinMaterials.forEach(material => {
event.remove({ id: `tconstruct:smeltery/casting/metal/${material}/coin_gold_cast` })
event.remove({ id: `tconstruct:smeltery/casting/metal/${material}/coin_sand_cast` })
})
// Chains can be crafted using Zinc
event.remove({ id: "tconstruct:smeltery/melting/metal/iron/chain" })
// Remove enchanted apple melting recipe
event.remove({ id: "tconstruct:smeltery/melting/metal/gold/enchanted_apple" })
// Remove Tconstruct cheese since it only costs milk to craft and cheese already exists on the moon.
event.remove({ id: "tconstruct:smeltery/casting/cheese_block" })
event.remove({ id: "tconstruct:smeltery/casting/cheese_ingot_gold_cast" })
event.remove({ id: "tconstruct:smeltery/casting/cheese_ingot_sand_cast" })
})
ServerEvents.tags("item", event => {
// zinc anvils
event.get("tconstruct:anvil_metal").add("create:zinc_block")
event.remove("tconstruct:anvil_metal", "#forge:storage_blocks/bronze")
event.add("forge:ingots/seared_brick", "tconstruct:seared_brick")
event.add("forge:ingots/scorched_brick", "tconstruct:scorched_brick")
})
ServerEvents.tags("block", event => {
event.remove("tconstruct:anvil_metal", "#forge:storage_blocks/bronze")
event.get("tconstruct:mineable/melting_blacklist")
.add("#forge:storage_blocks/raw_iron")
.add("#forge:storage_blocks/raw_copper")
.add("#forge:storage_blocks/raw_gold")
.add("#forge:storage_blocks/raw_zinc")
.add("#forge:storage_blocks/raw_lead")
.add("#forge:storage_blocks/raw_nickel")
})
ServerEvents.highPriorityData(event => {
// Use crushed ore instead of raw ore for the autosmelt modifier
event.addJson("tconstruct:recipes/tools/modifiers/ability/autosmelt", {
"type": "tconstruct:modifier",
"allow_crystal": true,
"check_trait_level": true,
"inputs": [
{ "tag": "create:crushed_raw_materials" },
{ "item": "minecraft:blast_furnace" },
{ "tag": "forge:ingots" },
{ "tag": "forge:storage_blocks/coal" },
{ "tag": "forge:storage_blocks/coal" }
],
"level": 1,
"result": "tconstruct:autosmelt",
"slots": { "abilities": 1 },
"tools": { "tag": "tconstruct:modifiable/harvest" }
})
// Make Melting exclusive to the melting pan
event.addJson("tconstruct:recipes/tools/modifiers/ability/melting", {
"type": "tconstruct:modifier",
"allow_crystal": true,
"check_trait_level": true,
"inputs": [
{
"item": "minecraft:blaze_rod"
},
{
"ingredient": [
{
"item": "tconstruct:seared_melter"
},
{
"item": "tconstruct:smeltery_controller"
},
{
"item": "tconstruct:foundry_controller"
}
]
},
{
"item": "minecraft:blaze_rod"
},
{
"item": "minecraft:lava_bucket"
},
{
"item": "minecraft:lava_bucket"
}
],
"level": 1,
"result": "tconstruct:melting",
"slots": {
"abilities": 1
},
"tools": [
{
"item": "tconstruct:melting_pan"
}
]
})
event.addJson("tconstruct:tinkering/tool_definitions/melting_pan", {
"modules": [
{
"type": "tconstruct:material_stats",
"primary_part": 0,
"stat_types": [
"tconstruct:plating_shield",
"tconstruct:limb"
]
},
{
"type": "tconstruct:default_materials",
"materials": [
{
"type": "tconstruct:random"
},
{
"type": "tconstruct:random"
}
]
},
{
"type": "tconstruct:material_traits",
"hooks": [
"tconstruct:rebalanced_trait"
],
"material_index": 1,
"stat_type": "tconstruct:limb"
},
{
"type": "tconstruct:base_stats",
"stats": {
"tconstruct:block_amount": 10.0,
"tconstruct:harvest_tier": "minecraft:iron",
"tconstruct:knockback_resistance": 0.1,
"tconstruct:mining_speed": 6.0
}
},
{
"type": "tconstruct:modifier_slots",
"slots": {
"abilities": 2,
"defense": 1,
"upgrades": 1
}
},
{
"type": "tconstruct:melting_fluid_effective",
"ignore_tier": false,
"inverted_type": "mantle:tag",
"predicate_type": "mantle:inverted",
"tag": "tconstruct:mineable/melting_blacklist",
"temperature": 1500
},
{
"type": "tconstruct:volatile_flag",
"flag": "tconstruct:force_melting"
},
{
"type": "tconstruct:vein_aoe",
"max_distance": 0
},
{
"type": "tconstruct:traits",
"traits": [
{
"level": 2,
"name": "tconstruct:melting"
},
{
"level": 1,
"name": "tconstruct:tank"
}
]
},
{
"type": "tconstruct:dual_option_interaction"
}
]
})
})

View File

@@ -0,0 +1,220 @@
// priority: 1
wood_types.push("thermal:rubberwood")
ServerEvents.recipes(event => {
// filter augment recipe change
event.remove({ id: "thermal:augments/item_filter_augment" })
event.shapeless("thermal:item_filter_augment", ["create:filter", "thermal:lapis_gear"])
// Augments that do nothing in 1.18.2
event.remove({ id: "thermal:augments/rs_control_augment" })
event.remove({ id: "thermal:augments/side_config_augment" })
// Silver replacements
event.replaceInput({ id: "thermal:augments/rf_coil_storage_augment" }, "#forge:ingots/silver", "#forge:ingots/iron")
event.replaceInput({ id: "thermal:augments/rf_coil_xfer_augment" }, "#forge:ingots/silver", "#forge:ingots/iron")
event.replaceInput({ id: "thermal:augments/rf_coil_augment" }, "#forge:ingots/silver", "#forge:ingots/iron")
event.replaceInput({ id: "thermal:tools/detonator" }, "#forge:ingots/silver", "#forge:ingots/lead")
// why are these even recipes?
event.remove({ id: "thermal:lightning_charge/zombified_piglin_from_pig"})
event.remove({ id: "thermal:lightning_charge/witch_from_villager"})
// duplicate storage block recipes
event.remove({ id: "thermal:storage/carrot_block" })
event.remove({ id: "thermal:storage/potato_block" })
event.remove({ id: "thermal:storage/beetroot_block" })
// Obsidian pulverizing
event.recipes.thermal.pulverizer(["create:powdered_obsidian"], "#forge:obsidian", 0, 8000)
// Ender pearl pulverizing
event.replaceOutput({ id: "thermal:machines/pulverizer/pulverizer_ender_pearl" }, "thermal:ender_pearl_dust", "ae2:ender_dust")
event.replaceOutput({ id: "thermal:earth_charge/ender_pearl_dust_from_ender_pearl" }, "thermal:ender_pearl_dust", "ae2:ender_dust")
// Bitumen crushing recipes
event.recipes.create.crushing([Item.of("thermal:bitumen"), Item.of("thermal:bitumen", 2).withChance(0.75), Item.of("thermal:tar", 1).withChance(0.75), Item.of("minecraft:sand").withChance(0.25)], "thermal:oil_sand")
event.recipes.create.crushing([Item.of("thermal:bitumen"), Item.of("thermal:bitumen", 2).withChance(0.75), Item.of("thermal:tar", 1).withChance(0.75), Item.of("minecraft:red_sand").withChance(0.25)], "thermal:oil_red_sand")
// ruby and sapphire block recipes
let blockTemplate = [ "III", "III", "III" ]
event.shaped(Item.of("thermal:ruby_block", 1), blockTemplate, { I: "#forge:gems/ruby"})
event.shapeless(Item.of("thermal:ruby", 9), ["#forge:storage_blocks/ruby"])
event.shaped(Item.of("thermal:sapphire_block", 1), blockTemplate, { I: "#forge:gems/sapphire"})
event.shapeless(Item.of("thermal:sapphire", 9), ["#forge:storage_blocks/sapphire"])
// Ruby and sapphire dusts from pulverizing
event.recipes.thermal.pulverizer("thermal:sapphire_dust", "thermal:sapphire", 0, 4000)
event.recipes.thermal.pulverizer("thermal:ruby_dust", "thermal:ruby", 0, 4000)
// Ruby and sapphire dusts from earth charges
event.shapeless(Item.of("thermal:ruby_dust"), ["#forge:gems/ruby", "thermal:earth_charge"])
event.shapeless(Item.of("thermal:sapphire_dust"), ["#forge:gems/sapphire", "thermal:earth_charge"])
// Make molten glass with the cruicible
event.recipes.thermal.crucible(Fluid.of("tconstruct:molten_glass", 1000), "#forge:sand", 0, 6000)
event.recipes.thermal.crucible(Fluid.of("tconstruct:molten_glass", 1000), "#forge:glass/colorless", 0, 3000)
// Gourmand fuel recipes for farmer's delight crates
event.custom({"type": "thermal:gourmand_fuel", "ingredient": {"item": "farmersdelight:carrot_crate"}, "energy": 48000})
event.custom({"type": "thermal:gourmand_fuel", "ingredient": {"item": "farmersdelight:potato_crate"}, "energy": 16000})
event.custom({"type": "thermal:gourmand_fuel", "ingredient": {"item": "farmersdelight:beetroot_crate"}, "energy": 16000})
event.custom({"type": "thermal:gourmand_fuel", "ingredient": {"item": "farmersdelight:cabbage_crate"}, "energy": 32000})
event.custom({"type": "thermal:gourmand_fuel", "ingredient": {"item": "farmersdelight:onion_crate"}, "energy": 32000})
event.custom({"type": "thermal:gourmand_fuel", "ingredient": {"item": "farmersdelight:tomato_crate"}, "energy": 16000})
// Igneous Extruder recipes
let bedrock_cobblegen = (adjacent, output) => {
event.custom({
"type": "thermal:rock_gen",
"adjacent": adjacent,
"below": "minecraft:bedrock",
"result": { "item": output }
})
}
bedrock_cobblegen("minecraft:packed_ice", "minecraft:andesite")
bedrock_cobblegen("architects_palette:polished_packed_ice", "minecraft:granite")
bedrock_cobblegen("architects_palette:chiseled_packed_ice", "minecraft:diorite")
// Also add igneous extruder recipes for the 2 create stone gen recipes
event.custom({
"type": "thermal:rock_gen",
"adjacent": "create:chocolate",
"result": { "item": "create:scoria"}
})
event.custom({
"type": "thermal:rock_gen",
"adjacent": "create:honey",
"result": { "item": "create:limestone"}
})
// thermal dynamics stuff
// thermal dynamics might be split into a compatability mod eventually
// Energy duct recipe change
event.remove({ output: "thermal:energy_duct" })
event.shaped("8x thermal:energy_duct", [ "PMP" ], {
P: "thermal:invar_ingot",
M: "minecraft:redstone"
})
// Remove existing insolator flower recipes since we're adding them back anyways
event.remove({ type: "thermal:insolator", input: "#minecraft:flowers", not:{ input:"#minecraft:saplings" } })
Ingredient.of("#minecraft:flowers").itemIds.forEach(flower => {
// Automatically adds all flowers as thermal insolator recipes. We're blacklisting special cases like leaves and saplings which are occasionally tagged as flowers for some reason
if( !( Ingredient.of("#minecraft:saplings").test(flower) || Ingredient.of("#minecraft:leaves").test(flower) ) ) {
event.custom({
"type": "thermal:insolator",
"ingredient": {
"item": flower
},
"result": [
{
"item": flower,
"chance": 2
}
],
"experience": 0
})
}
})
// port melting recipes for dusts, ingots and gems
const TICMETALS = [
"aluminum",
"amethyst_bronze",
"brass",
"bronze",
"cobalt",
"constantan",
// "copper",
"electrum",
"enderium",
// "gold",
"hepatizon",
"invar",
// "iron",
"knightslime",
// "lead",
"lumium",
"manyullyn",
"netherite",
// "nickel",
"osmium",
"pewter",
"pig_iron",
"platinum",
"queens_slime",
"refined_glowstone",
"refined_obsidian",
"rose_gold",
"signalum",
"silver",
"slimesteel",
"soulsteel",
"steel",
"tin",
"tungsten",
"uranium"// ,
// "zinc"
];
const TICGEMS = [
"diamond",
"emerald",
"quartz",
"amethyst",
]
TICMETALS.forEach(metal=>{
if (Ingredient.of(`#forge:dusts/${metal}`).first != Item.empty) {
event.custom({
type:"thermal:crucible",
ingredients:{tag: `forge:dusts/${metal}`},
result:{fluid: `tconstruct:molten_${metal}`, amount: 90},
energy:5000
}).id(`kubejs:crucible/${metal}/dust`)
}
})
TICMETALS.concat(["copper", "gold", "iron", "lead", "nickel", "zinc"]).forEach(metal=>{
let ingotTag = `forge:ingots/${metal}`
let rodTag = `forge:rods/${metal}`
let fluid = `tconstruct:molten_${metal}`
if (Ingredient.of("#" + ingotTag).first != Item.empty) {
event.recipes.thermal.crucible(Fluid.of(fluid, 90), "#" + ingotTag, 0, 5000).id(`kubejs:crucible/${metal}/ingot`)
event.recipes.thermal.chiller(getPreferredItemFromTag(ingotTag), [Fluid.of(fluid, 90), "thermal:chiller_ingot_cast"]).id(`kubejs:chiller/${metal}/ingot`)
}
if (Ingredient.of("#" + rodTag).first != Item.empty) {
event.recipes.thermal.chiller(getPreferredItemFromTag(rodTag), [Fluid.of(fluid, 45), "thermal:chiller_rod_cast"]).id(`kubejs:chiller/${metal}/rod`)
}
})
TICGEMS.forEach(gem=>{
let gemTag = `forge:gems/${gem}`
let fluid = `tconstruct:molten_${gem}`
if (Ingredient.of(`#forge:gems/${gem}`).first != Item.empty) {
event.recipes.thermal.crucible(Fluid.of(fluid, 100), "#" + gemTag, 0, 5000).id(`kubejs:crucible/${gem}/gem`)
}
})
const OTHER_INGOTS = [
{name: "brick", fluid: "tconstruct:molten_clay"},
{name: "seared_brick", fluid: "tconstruct:seared_stone"},
{name: "scorched_brick", fluid: "tconstruct:scorched_stone"},
{name: "netherite_scrap", fluid: "tconstruct:molten_debris"}
]
OTHER_INGOTS.forEach(material=>{
let name = material.name
let ingotTag = "forge:ingots/" + material.name
let fluid = material.fluid
if (Ingredient.of("#" + ingotTag).first != Item.empty) {
event.recipes.thermal.crucible(Fluid.of(fluid, 90), "#" + ingotTag, 0, 5000).id(`kubejs:crucible/${name}`)
event.recipes.thermal.chiller(getPreferredItemFromTag(ingotTag), [Fluid.of(fluid, 90), "thermal:chiller_ingot_cast"]).id(`kubejs:chiller/${name}`)
}
})
// Ball recipes
event.recipes.thermal.chiller("minecraft:slime_ball", [Fluid.of("tconstruct:earth_slime", 250), "thermal:chiller_ball_cast"]).id("kubejs:chiller/slime_ball");
event.recipes.thermal.chiller("tconstruct:sky_slime_ball", [Fluid.of("tconstruct:sky_slime", 250), "thermal:chiller_ball_cast"]).id("kubejs:chiller/sky_slime_ball");
event.recipes.thermal.chiller("tconstruct:ender_slime_ball", [Fluid.of("tconstruct:ender_slime", 250), "thermal:chiller_ball_cast"]).id("kubejs:chiller/ender_slime_ball");
event.recipes.thermal.chiller("tconstruct:blood_slime_ball", [Fluid.of("tconstruct:blood", 250), "thermal:chiller_ball_cast"]).id("kubejs:chiller/blood_slime_ball");
})
ServerEvents.lowPriorityData(event => {
addChiselingRecipe(event, "kubejs:chiseling_recipes/thermal/beetroot_block", ["farmersdelight:beetroot_crate", "thermal:beetroot_block"])
addChiselingRecipe(event, "kubejs:chiseling_recipes/thermal/carrot_block", ["farmersdelight:carrot_crate", "thermal:carrot_block"])
addChiselingRecipe(event, "kubejs:chiseling_recipes/thermal/potato_block", ["farmersdelight:potato_crate", "thermal:potato_block"])
})

View File

@@ -0,0 +1,9 @@
// priority: 1
ServerEvents.recipes(event => {
// Might be considered as part of chapter 1
event.remove({ output: "strainers:iron_mesh" })
let strainerPattern = ["SSS", "MAM", "SSS"]
event.shaped("kubejs:strainer_filter", strainerPattern,
{ A: "farmersdelight:canvas", M: "farmersdelight:canvas", S: "minecraft:stick" }).id("kubejs:sediment_strainer")
})