/** * Greenhouse multiblock */ ServerEvents.recipes(event => { /* Machine Recipe */ event.shaped("gtceu:greenhouse", [ "LWL", "ASA", "WRW" ], { L: "minecraft:redstone_lamp", A: "#gtceu:circuits/mv", W: "gtceu:copper_single_cable", S: "gtceu:solid_machine_casing", R: "gtceu:lv_fluid_regulator" }).id("kubejs:shaped/greenhouse") /* Greenhouse Recipes */ function boost(input, factor) { let boosted = []; input.forEach(element => { let item = Item.of(element); let curCount = item.getCount() * factor; let type = item.getId(); while (curCount > item.maxStackSize) { boosted.push(Item.of(type, item.maxStackSize)); curCount -= item.maxStackSize; } if (curCount > 0) boosted.push(Item.of(type, curCount)); }) return boosted; } /** * @param {string} mod Input item mod name * @param {string} input Input item identifier * @param {number} duration Recipe duration * @param {string[]} output Base recipe output * @param {number} inputFeedbackAmount How many input items to add to output */ function Greenhouse(mod, input, duration, output, inputFeedbackAmount) { // Create new boosted output item array let boostedOutputs = boost(output, 2) // Push sapling/seed inputs (unboosted) onto output arrays if (inputFeedbackAmount > 0) { output.push(Item.of(`${mod}:${input}`, inputFeedbackAmount)); boostedOutputs.push(Item.of(`${mod}:${input}`, inputFeedbackAmount)); } event.recipes.gtceu.greenhouse(`kubejs:${input}`) .circuit(1) .notConsumable(InputItem.of(Item.of(`${mod}:${input}`))) .inputFluids(Fluid.of("minecraft:water", 24000)) .itemOutputs(output) .duration(duration) .EUt(80) event.recipes.gtceu.greenhouse(`kubejs:${input}_boosted`) .circuit(2) .notConsumable(InputItem.of(Item.of(`${mod}:${input}`))) .itemInputs("1x gtceu:fertilizer") .inputFluids(Fluid.of("minecraft:water", 16000)) .itemOutputs(boostedOutputs) .duration(duration / 2) .EUt(80) } // //// Trees ////// Greenhouse("gtceu", "rubber_sapling", 1280, ["32x gtceu:rubber_log", "8x gtceu:sticky_resin"], 4) Greenhouse("minecraft", "oak_sapling", 1280, ["64x minecraft:oak_log"], 4) Greenhouse("minecraft", "dark_oak_sapling", 1280, ["64x minecraft:dark_oak_log"], 4) Greenhouse("minecraft", "spruce_sapling", 1280, ["64x minecraft:spruce_log"], 4) Greenhouse("minecraft", "birch_sapling", 1280, ["64x minecraft:birch_log"], 4) Greenhouse("minecraft", "acacia_sapling", 1280, ["64x minecraft:acacia_log"], 4) Greenhouse("minecraft", "jungle_sapling", 1280, ["64x minecraft:jungle_log"], 4) Greenhouse("minecraft", "azalea", 1280, ["64x minecraft:oak_log"], 4) Greenhouse("minecraft", "flowering_azalea", 1280, ["64x minecraft:oak_log"], 4) Greenhouse("minecraft", "cherry_sapling", 1280, ["64x minecraft:cherry_log"], 4) Greenhouse("minecraft", "mangrove_propagule", 1280, ["64x minecraft:mangrove_log"], 4) Greenhouse("minecraft", "chorus_flower", 1280, ["32x minecraft:chorus_fruit"], 4) Greenhouse("minecraft", "warped_fungus", 1280, ["64x minecraft:warped_stem", "32x minecraft:warped_wart_block", "16x minecraft:shroomlight"], 4) Greenhouse("minecraft", "crimson_fungus", 1280, ["64x minecraft:crimson_stem", "32x minecraft:nether_wart_block", "16x minecraft:shroomlight"], 4) Greenhouse("thermal", "rubberwood_sapling", 1280, ["64x thermal:rubberwood_log"], 4) // //// Crops ////// Greenhouse("minecraft", "sugar_cane", 640, ["32x minecraft:sugar_cane"], 0) // TODO: Increase water requirement for Kelp Greenhouse("minecraft", "kelp", 640, ["32x minecraft:kelp"], 0) Greenhouse("minecraft", "bamboo", 640, ["48x minecraft:bamboo"], 0) Greenhouse("minecraft", "cactus", 640, ["32x minecraft:cactus"], 0) Greenhouse("minecraft", "wheat_seeds", 640, ["32x minecraft:wheat"], 0) Greenhouse("minecraft", "carrot", 640, ["32x minecraft:carrot"], 0) Greenhouse("minecraft", "potato", 640, ["32x minecraft:potato"], 0) Greenhouse("minecraft", "beetroot_seeds", 640, ["32x minecraft:beetroot"], 0) Greenhouse("minecraft", "sweet_berries", 640, ["32x minecraft:sweet_berries"], 0) Greenhouse("minecraft", "glow_berries", 640, ["32x minecraft:glow_berries"], 0) Greenhouse("minecraft", "cocoa_beans", 640, ["32x minecraft:cocoa_beans"], 0) Greenhouse("minecraft", "sea_pickle", 640, ["32x minecraft:sea_pickle"], 0) Greenhouse("minecraft", "melon_seeds", 640, ["16x minecraft:melon"], 0) Greenhouse("minecraft", "pumpkin_seeds", 640, ["16x minecraft:pumpkin"], 0) Greenhouse("minecraft", "nether_wart", 640, ["16x minecraft:nether_wart"], 0) Greenhouse("minecraft", "red_mushroom", 640, ["16x minecraft:red_mushroom"], 0) Greenhouse("minecraft", "brown_mushroom", 640, ["16x minecraft:brown_mushroom"], 0) // //// Flowers & Cosmetic Blocks ////// let flowers = [ "wither_rose", "cornflower", "sunflower", "peony", "red_tulip", "poppy", "rose_bush", "blue_orchid", "orange_tulip", "dandelion", "pink_tulip", "pink_petals", "allium", "lilac", "lily_of_the_valley", "oxeye_daisy", "azure_bluet", "white_tulip", "pitcher_plant", "lily_pad", "weeping_vines", "twisting_vines", "vine", "moss_block", "glow_lichen", "tube_coral_fan", "brain_coral_fan", "bubble_coral_fan", "fire_coral_fan", "horn_coral_fan" ] flowers.forEach(flower => { Greenhouse("minecraft", flower, 640, [Item.of(flower, 48)], 0); }) // Torchflowers are grown from seeds Greenhouse("minecraft", "torchflower_seeds", 640, [Item.of("torchflower", 48)], 0); // A way to get grass blocks event.recipes.gtceu.greenhouse("kubejs:grass_block") .circuit(1) .notConsumable(InputItem.of(Item.of("minecraft:grass_block"))) .itemInputs("64x dirt") .inputFluids(Fluid.of("minecraft:water", 24000)) .itemOutputs("64x grass_block") .duration(640) .EUt(80) }) ServerEvents.recipes(event => { event.custom({ type: "thermal:insolator", "ingredient": { "item": "gtceu:rubber_sapling" }, "result": [ { "item": "gtceu:rubber_log", "chance": 6.0 }, { "item": "gtceu:sticky_resin", "chance": 1.25 }, { "item": "gtceu:rubber_sapling", "chance": 1.1 } ], "energy_mod": 3.0, "water_mod": 3.0 }).id("kubejs:thermal/insolator/rubber_sapling") event.custom({ type: "thermal:insolator", "ingredient": { "item": "minecraft:pink_petals", }, "result": [ { "item": "minecraft:pink_petals", "chance": 2.0 } ], "energy_mod": 1.0, "water_mod": 1.0 }).id("kubejs:thermal/insolator/pink_petals") })