Files
ATM10/minecraft/kubejs/server_scripts/mods/Xycraft/Extractor.js
2026-01-27 17:19:00 +00:00

225 lines
9.6 KiB
JavaScript

// 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.