199 lines
7.4 KiB
JavaScript
199 lines
7.4 KiB
JavaScript
/**
|
|
* 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")
|
|
})
|