// This File has been authored by AllTheMods Staff, or a Community contributor for use in AllTheMods - AllTheMods 10. // As all AllTheMods packs are licensed under All Rights Reserved, this file is not allowed to be used in any public packs not released by the AllTheMods Team, without explicit permission. ServerEvents.recipes(allthemods => { // Target = block underneath // Adjacent = blocks around target // Catalyst = block underneath target function extractor({output, id, target, adjacent, catalyst, directions, ticks, waterlogged}) { let recipe = { "type": "xycraft_machines:extractor", "adjacent": [], "target": rule(target.type, target.block), "output": { "count": output.count || 1, "id": output.item }, "ticks": ticks, }; if (catalyst) { recipe.catalyst = rule(catalyst.type, catalyst.block); } if (waterlogged) { recipe.waterlogged_fluid = waterlogged } if (directions) { recipe.valid_directions = directions; } if (output.components) { recipe.output.components = output.components; } if(adjacent) { adjacent.forEach(adj => { recipe.adjacent.push(rule(adj.type, adj.block)); }); } if(id) { allthemods.custom(recipe).id(`allthemods:xycraft/extractor/${output.item.split(":").pop()}_${id}`); } else { allthemods.custom(recipe).id(`allthemods:xycraft/extractor/${output.item.split(":").pop()}`); } } function rule (type, block, property) { switch(type) { case "xycraft_core:block_tag_rule" : return { "predicate_type": type, "tag": block } case "xycraft_core:block_rule" : return { "predicate_type": type, "block": block } case "xycraft_core:fluid_type_rule" : return { "predicate_type": type, "fluid_type": block } case "xycraft_core:fluid_tag_rule" : return { "predicate_type": type, "tag": block } case "xycraft_core:block_state_rule" : return { "predicate_type": type, "block_state": block } case "xycraft_core:property_rule" : return { "predicate_type": type, "propery":property.propery, "value": property.value } case "xycraft_core:fuzzy_block_state_rule" : return { "predicate_type" : type, "block": block.block, "properties": block.properties } } } extractor({ output: { item:"biomeswevegone:black_ice", count: 1 }, target: { type: "xycraft_core:block_rule", block: "minecraft:packed_ice" }, adjacent: [ { type: "xycraft_core:block_rule", block: "biomeswevegone:black_sand" }, { type: "xycraft_core:block_rule", block: "biomeswevegone:black_sand" }, { type: "xycraft_core:block_rule", block: "biomeswevegone:black_sand" }, { type: "xycraft_core:block_rule", block: "biomeswevegone:black_sand" } ], catalyst: { type: "xycraft_core:block_rule", block: "biomeswevegone:black_sand" }, ticks: 40, waterlogged: 'minecraft:water' }) extractor({ output: { item:"minecraft:spore_blossom", count: 1 }, target: { type: "xycraft_core:block_rule", block: "minecraft:moss_block" }, catalyst: {type: "xycraft_core:block_rule", block: "minecraft:spore_blossom" }, ticks: 50, waterlogged: 'minecraft:water', directions: ["down"] }) extractor({ output: { item:"minecraft:sculk", count: 1 }, target: { type: "xycraft_core:block_rule", block: "minecraft:sculk" }, catalyst: {type: "xycraft_core:block_rule", block: "minecraft:sculk_catalyst" }, ticks: 50, }) extractor({ output: { item:"xycraft_world:xychorium_gem_blue", count: 1 }, target: { type: "xycraft_core:block_rule", block: "minecraft:obsidian" }, adjacent: [ { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_blue" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_blue" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_blue" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_blue" } ], catalyst: { type: "xycraft_core:fluid_type_rule", block: "minecraft:lava" }, ticks: 10, }) extractor({ output: { item:"xycraft_world:xychorium_gem_green", count: 1 }, target: { type: "xycraft_core:block_rule", block: "minecraft:obsidian" }, adjacent: [ { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_green" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_green" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_green" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_green" } ], catalyst: { type: "xycraft_core:fluid_type_rule", block: "minecraft:lava" }, ticks: 10, }) extractor({ output: { item:"xycraft_world:xychorium_gem_red", count: 1 }, target: { type: "xycraft_core:block_rule", block: "minecraft:obsidian" }, adjacent: [ { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_red" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_red" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_red" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_red" } ], catalyst: { type: "xycraft_core:fluid_type_rule", block: "minecraft:lava" }, ticks: 10, }) extractor({ output: { item:"xycraft_world:xychorium_gem_dark", count: 1 }, target: { type: "xycraft_core:block_rule", block: "minecraft:obsidian" }, adjacent: [ { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_dark" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_dark" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_dark" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_dark" } ], catalyst: { type: "xycraft_core:fluid_type_rule", block: "minecraft:lava" }, ticks: 10, }) extractor({ output: { item:"xycraft_world:xychorium_gem_light", count: 1 }, target: { type: "xycraft_core:block_rule", block: "minecraft:obsidian" }, adjacent: [ { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_light" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_light" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_light" }, { type: "xycraft_core:block_rule", block: "xycraft_world:xychorium_storage_light" } ], catalyst: { type: "xycraft_core:fluid_type_rule", block: "minecraft:lava" }, ticks: 10, }) extractor({ output: { item:"fluxnetworks:flux_dust", count: 1 }, target: { type: "xycraft_core:block_rule", block: "appflux:charged_redstone_block" }, adjacent: [ { type: "xycraft_core:block_rule", block: "minecraft:obsidian" }, { type: "xycraft_core:block_rule", block: "minecraft:obsidian" }, { type: "xycraft_core:block_rule", block: "minecraft:obsidian" }, { type: "xycraft_core:block_rule", block: "minecraft:obsidian" } ], catalyst: { type: "xycraft_core:block_rule", block: "fluxnetworks:flux_block" }, ticks: 5, }) extractor({ output: { item:"fluxnetworks:flux_dust", count: 1 }, id: "bedrock", target: { type: "xycraft_core:block_rule", block: "appflux:charged_redstone_block" }, adjacent: [ { type: "xycraft_core:block_rule", block: "minecraft:obsidian" }, { type: "xycraft_core:block_rule", block: "minecraft:obsidian" }, { type: "xycraft_core:block_rule", block: "minecraft:obsidian" }, { type: "xycraft_core:block_rule", block: "minecraft:obsidian" } ], catalyst: { type: "xycraft_core:block_rule", block: "minecraft:bedrock" }, ticks: 5, }) extractor({ output: { item:"mysticalagriculture:soulstone_cobble", count: 1 }, target: { type: "xycraft_core:block_rule", block: "mysticalagriculture:soulstone_cobble" }, catalyst: {type: "xycraft_core:block_rule", block: "mysticalagriculture:soulstone_smooth" }, ticks: 30, directions: ["down"] }) }) // This File has been authored by AllTheMods Staff, or a Community contributor for use in AllTheMods - AllTheMods 10. // As all AllTheMods packs are licensed under All Rights Reserved, this file is not allowed to be used in any public packs not released by the AllTheMods Team, without explicit permission.