Fellies/kubejs[vs]/server_scripts/recipes/woodcutting.js

414 lines
16 KiB
JavaScript

// priority: 10
events.listen('recipes', function (event) {
// Woodcutting
const woodcutting = (output, input, count) => {
// Druidcraft Woodcutter
event.custom({
type: "druidcraft:woodcutting",
ingredient: Ingredient.of(input).toJson(),
result: output,
count: count
})
// TODO: Other woodcutters here as needed (eg. Environmental Sawmill).
}
// Wood Types
const minecraftOverworldWoodTypes = [
'acacia',
'birch',
'dark_oak',
'jungle',
'oak',
'spruce'
]
const minecraftNetherWoodTypes = [
'crimson',
'warped'
]
const atmosphericWoodTypes = [
'rosewood',
'morado',
'yucca',
'kousa',
'aspen',
'grimwood'
]
const autumnityWoodTypes = [
'maple'
]
const biomesOPlentyWoodTypes = [
'fir',
'redwood',
'cherry',
'mahogany',
'jacaranda',
'palm',
'willow',
'dead',
'magic',
'umbran',
'hellbark'
]
const astralSorceryWoodTypes = [
'infused_wood'
]
const botaniaWoodTypes = [
'livingwood',
'mossy_livingwood',
'dreamwood',
'mossy_dreamwood',
'shimmerwood'
]
const druidcraftWoodTypes = [
'darkwood',
'elder'
]
const endergeticExpansionWoodTypes = [
'poise'
]
// Note: This will normally be done manually.
const engineersDecorWoodTypes = [
'old_industrial_wood'
]
const enhancedMushroomsWoodTypes = [
'red_mushroom',
'brown_mushroom',
'glowshroom'
]
// Sneak previews. ;)
const environmentalWoodTypes = [
'cherry',
'willow',
'wisteria'
]
const forbiddenArcanusWoodTypes = [
'arcane_edelwood',
'cherrywood',
'edelwood',
'mysterywood'
]
// Note: IE has very weird naming conventions. Best to do manually normally.
const immersiveEngineeringWoodTypes = [
'treated'
]
const quarkWoodTypes = [
'white_stained',
'orange_stained',
'magenta_stained',
'light_blue_stained',
'yellow_stained',
'lime_stained',
'pink_stained',
'gray_stained',
'light_gray_stained',
'cyan_stained',
'purple_stained',
'blue_stained',
'brown_stained',
'green_stained',
'red_stained',
'black_stained',
]
const structurizeWoodTypes = [
'cactus'
]
// Note: Driftwood's Item IDs vary for the Wood variants, ie. it is just 'driftwood', not 'driftwood_wood'.
const upgradeAquaticWoodTypes = [
'driftwood',
'river'
]
// OUTPUT QUANTITIES
// Vanilla things:
const buttons_per_plank = 4
const doors_per_plank = 1
const fences_per_plank = 1
const fence_gates_per_plank = 1
const ladders_per_plank = 2
const planks_per_log = 4
const pressure_plates_per_plank = 2
const trapdoors_per_plank = 1
const signs_per_plank = 1
const slabs_per_plank = 2
const stairs_per_plank = 1
const buttons_per_log = buttons_per_plank * planks_per_log
const doors_per_log = doors_per_plank * planks_per_log
const fences_per_log = fences_per_plank * planks_per_log
const fence_gates_per_log = fence_gates_per_plank * planks_per_log
const ladders_per_log = ladders_per_plank * planks_per_log
const pressure_plates_per_log = pressure_plates_per_plank * planks_per_log
const signs_per_log = signs_per_plank * planks_per_log
const slabs_per_log = slabs_per_plank * planks_per_log
const stairs_per_log = stairs_per_plank * planks_per_log
const trapdoors_per_log = trapdoors_per_plank * planks_per_log
// Modded things:
const panels_per_plank = 1
const seats_per_plank = 1
const supports_per_plank = 1
const vertical_slabs_per_plank = slabs_per_plank
const vertical_planks_per_plank = 1
const decorative_blocks_beams_per_log = 1
const druidcraft_beams_per_log = 1
const panels_per_log = panels_per_plank * planks_per_log
const pantries_per_log = 1
const palisades_per_log = 3
const seats_per_log = seats_per_plank * planks_per_log
const sign_posts_per_log = signs_per_log
const supports_per_log = supports_per_plank * planks_per_log
const vertical_planks_per_log = planks_per_log
const vertical_slabs_per_log = slabs_per_log
const val_posts_per_log = 2
const planks_per_panel = 1
const vertical_planks_per_panel = 1
// Atmospheric
var atmosphericLogsTags = []
var atmosphericStrippedLogs = []
var atmosphericWoods = []
var atmosphericStrippedWoods = []
var atmosphericPlanks = []
var atmosphericVerticalPlanks = []
var atmosphericSlabs = []
var atmosphericVerticalSlabs = []
var atmosphericStairs = []
var atmosphericSigns = []
var atmosphericLadders = []
var atmosphericFences = []
var atmosphericFenceGates = []
var atmosphericButtons = []
var atmosphericTrapdoors = []
var atmosphericDoors = []
var atmosphericPressurePlates = []
atmosphericWoodTypes.forEach(function(element) {
atmosphericLogsTags.push('#atmospheric:'.concat(element).concat('_logs'))
atmosphericStrippedLogs.push('atmospheric:stripped_'.concat(element).concat('_log'))
atmosphericWoods.push('atmospheric:'.concat(element).concat('_log'))
atmosphericStrippedWoods.push('atmospheric:stripped_'.concat(element).concat('_log'))
atmosphericPlanks.push('atmospheric:'.concat(element).concat('_planks'))
atmosphericVerticalPlanks.push('atmospheric:vertical_'.concat(element).concat('_planks'))
atmosphericSlabs.push('atmospheric:'.concat(element).concat('_slab'))
atmosphericVerticalSlabs.push('atmospheric:'.concat(element).concat('_vertical_slab'))
atmosphericStairs.push('atmospheric:'.concat(element).concat('_stairs'))
atmosphericSigns.push('atmospheric:'.concat(element).concat('_sign'))
atmosphericLadders.push('atmospheric:'.concat(element).concat('_ladder'))
atmosphericFences.push('atmospheric:'.concat(element).concat('_fence'))
atmosphericFenceGates.push('atmospheric:'.concat(element).concat('_fence_gate'))
atmosphericButtons.push('atmospheric:'.concat(element).concat('_button'))
atmosphericTrapdoors.push('atmospheric:'.concat(element).concat('_trapdoor'))
atmosphericDoors.push('atmospheric:'.concat(element).concat('_door'))
atmosphericPressurePlates.push('atmospheric:'.concat(element).concat('_pressure_plate'))
})
for (let i = 0; i < atmosphericWoodTypes.length; i++) {
// Log Woodcutting
woodcutting(atmosphericPlanks[i], atmosphericLogsTags[i], planks_per_log)
woodcutting(atmosphericVerticalPlanks[i], atmosphericLogsTags[i], vertical_planks_per_log)
woodcutting(atmosphericSlabs[i], atmosphericLogsTags[i], slabs_per_log)
woodcutting(atmosphericVerticalSlabs[i], atmosphericLogsTags[i], vertical_slabs_per_log)
woodcutting(atmosphericStairs[i], atmosphericLogsTags[i], stairs_per_log)
woodcutting(atmosphericSigns[i], atmosphericLogsTags[i], signs_per_log)
woodcutting(atmosphericLadders[i], atmosphericLogsTags[i], ladders_per_log)
woodcutting(atmosphericFences[i], atmosphericLogsTags[i], fences_per_log)
woodcutting(atmosphericFenceGates[i], atmosphericLogsTags[i], fence_gates_per_log)
woodcutting(atmosphericButtons[i], atmosphericLogsTags[i], buttons_per_log)
woodcutting(atmosphericTrapdoors[i], atmosphericLogsTags[i], trapdoors_per_log)
woodcutting(atmosphericDoors[i], atmosphericLogsTags[i], doors_per_log)
woodcutting(atmosphericPressurePlates[i], atmosphericLogsTags[i], pressure_plates_per_log)
// Plank Woodcutting
woodcutting(atmosphericVerticalPlanks[i], atmosphericPlanks[i], vertical_planks_per_plank)
woodcutting(atmosphericSlabs[i], atmosphericPlanks[i], slabs_per_plank)
woodcutting(atmosphericVerticalSlabs[i], atmosphericPlanks[i], vertical_slabs_per_plank)
woodcutting(atmosphericStairs[i], atmosphericPlanks[i], stairs_per_plank)
woodcutting(atmosphericSigns[i], atmosphericPlanks[i], signs_per_plank)
woodcutting(atmosphericLadders[i], atmosphericPlanks[i], ladders_per_plank)
woodcutting(atmosphericFences[i], atmosphericPlanks[i], fences_per_plank)
woodcutting(atmosphericFenceGates[i], atmosphericPlanks[i], fence_gates_per_plank)
woodcutting(atmosphericButtons[i], atmosphericPlanks[i], buttons_per_plank)
woodcutting(atmosphericTrapdoors[i], atmosphericPlanks[i], trapdoors_per_plank)
woodcutting(atmosphericDoors[i], atmosphericPlanks[i], doors_per_plank)
woodcutting(atmosphericPressurePlates[i], atmosphericPlanks[i], pressure_plates_per_plank)
// Misc
woodcutting(atmosphericPlanks[i], atmosphericVerticalPlanks[i], vertical_planks_per_plank)
}
// Autumnity
// TODO: Planks, Vertical Planks, Slabs, Stairs, Ladders, Signs, Fences, Fence Gates, Buttons, Doors
// Biomes O Plenty
// TODO: Way too much. :'(
// Botania
// TODO: All of it.
// Decorative Blocks
woodcutting('decorative_blocks:acacia_palisade', '#minecraft:acacia_logs', 3)
woodcutting('decorative_blocks:acacia_seat', 'minecraft:acacia_planks', 1)
woodcutting('decorative_blocks:acacia_seat', '#minecraft:acacia_logs', 4)
woodcutting('decorative_blocks:acacia_support', 'minecraft:acacia_planks', 1)
woodcutting('decorative_blocks:acacia_support', '#minecraft:acacia_logs', 4)
woodcutting('decorative_blocks:acacia_beam', '#minecraft:acacia_logs', 1)
// TODO: Add non-acacia stuff.
// Decorative Blocks - Biomes O Plenty
// TODO: All of it. :/
// Decorative Blocks - Abnormals
// TODO: All of it. :/
// Druidcraft
woodcutting('druidcraft:acacia_panels', '#minecraft:acacia_logs', 4)
woodcutting('druidcraft:birch_panels', '#minecraft:birch_logs', 4)
woodcutting('druidcraft:dark_oak_panels', '#minecraft:dark_oak_logs', 4)
woodcutting('druidcraft:darkwood_panels', '#druidcraft:darkwood_logs', 4)
woodcutting('druidcraft:elder_panels', '#druidcraft:elder_logs', 4)
woodcutting('druidcraft:jungle_panels', '#minecraft:jungle_logs', 4)
woodcutting('druidcraft:oak_panels', '#minecraft:oak_logs', 4)
woodcutting('druidcraft:spruce_panels', '#minecraft:spruce_logs', 4)
// Make sure to check this again if Druidcraft adds Crimson / Warped panels.
// Endergetic Expansion
// TODO: Planks, Vertical Planks, Slabs, Stairs, Ladders, Signs, Fences, Fence Gates, Buttons, Doors
// Engineer's Decor
// TODO: A bunch of Treated Wood stuff.
// Enhanced Mushrooms
// TODO: Planks, Vertical Planks, Slabs, Stairs, Ladders, Signs, Fences, Fence Gates, Buttons, Doors
// Environmental
// (do this whenever it actually releases)
// TODO: Planks, Vertical Planks, Slabs, Stairs, Ladders, Signs, Fences, Fence Gates, Buttons, Doors
// Farmer's Delight
woodcutting('farmersdelight:acacia_pantry', '#minecraft:acacia_logs', 1)
woodcutting('farmersdelight:birch_pantry', '#minecraft:birch_logs', 1)
woodcutting('farmersdelight:crimson_pantry', '#minecraft:crimson_stems', 1)
woodcutting('farmersdelight:dark_oak_pantry', '#minecraft:dark_oak_logs', 1)
woodcutting('farmersdelight:jungle_pantry', '#minecraft:jungle_logs', 1)
woodcutting('farmersdelight:oak_pantry', '#minecraft:oak_logs', 1)
woodcutting('farmersdelight:spruce_pantry', '#minecraft:spruce_logs', 1)
woodcutting('farmersdelight:warped_pantry', '#minecraft:warped_stems', 1)
// Immersive Engineering
// TODO: A bunch of Treated Wood stuff.
// Macaw's Stuff
// Minecraft
woodcutting('minecraft:acacia_sign', '#minecraft:acacia_logs', 2)
woodcutting('minecraft:acacia_slab', '#minecraft:acacia_logs', 8)
woodcutting('minecraft:acacia_stairs', '#minecraft:acacia_logs', 4)
woodcutting('minecraft:acacia_fence', '#minecraft:acacia_logs', 3)
woodcutting('minecraft:acacia_fence_gate', '#minecraft:acacia_logs', 2)
woodcutting('minecraft:acacia_trapdoor', '#minecraft:acacia_logs', 4)
woodcutting('minecraft:acacia_pressure_plate', 'minecraft:acacia_planks', 2)
woodcutting('minecraft:acacia_pressure_plate', '#minecraft:acacia_logs', 8)
woodcutting('minecraft:acacia_door', '#minecraft:acacia_logs', 2)
// TODO: Add non-acacia stuff.
// Supplementaries - Vanilla
woodcutting('supplementaries:item_shelf', '#minecraft:wooden_slabs', 1)
woodcutting('supplementaries:sign_post_acacia', 'minecraft:acacia_planks', 1)
woodcutting('supplementaries:sign_post_acacia', '#minecraft:acacia_logs', 4)
woodcutting('supplementaries:sign_post_birch', 'minecraft:birch_planks', 1)
woodcutting('supplementaries:sign_post_birch', '#minecraft:birch_logs', 4)
woodcutting('supplementaries:sign_post_crimson', 'minecraft:crimson_planks', 1)
woodcutting('supplementaries:sign_post_crimson', '#minecraft:crimson_stems', 4)
woodcutting('supplementaries:sign_post_dark_oak', 'minecraft:dark_oak_planks', 1)
woodcutting('supplementaries:sign_post_dark_oak', '#minecraft:dark_oak_logs', 4)
woodcutting('supplementaries:sign_post_jungle', 'minecraft:jungle_planks', 1)
woodcutting('supplementaries:sign_post_jungle', '#minecraft:jungle_logs', 4)
woodcutting('supplementaries:sign_post_oak', 'minecraft:oak_planks', 1)
woodcutting('supplementaries:sign_post_oak', '#minecraft:oak_logs', 4)
woodcutting('supplementaries:sign_post_spruce', 'minecraft:spruce_planks', 1)
woodcutting('supplementaries:sign_post_spruce', '#minecraft:spruce_logs', 4)
woodcutting('supplementaries:sign_post_warped', 'minecraft:warped_planks', 1)
woodcutting('supplementaries:sign_post_warped', '#minecraft:warped_stems', 4)
// Supplementaries - Atmospheric
woodcutting('supplementaries:sign_post_rosewood', 'atmospheric:rosewood_planks', 1)
woodcutting('supplementaries:sign_post_rosewood', '#atmospheric:rosewood_logs', 4)
woodcutting('supplementaries:sign_post_kousa', 'atmospheric:kousa_planks', 1)
woodcutting('supplementaries:sign_post_kousa', '#atmospheric:kousa_logs', 4)
woodcutting('supplementaries:sign_post_aspen', 'atmospheric:aspen_planks', 1)
woodcutting('supplementaries:sign_post_aspen', '#atmospheric:aspen_logs', 4)
woodcutting('supplementaries:sign_post_morado', 'atmospheric:morado_planks', 1)
woodcutting('supplementaries:sign_post_morado', '#atmospheric:morado_logs', 4)
woodcutting('supplementaries:sign_post_grimwood', 'atmospheric:grimwood_planks', 1)
woodcutting('supplementaries:sign_post_grimwood', '#atmospheric:grimwood_logs', 4)
woodcutting('supplementaries:sign_post_yucca', 'atmospheric:yucca_planks', 1)
woodcutting('supplementaries:sign_post_yucca', '#atmospheric:yucca_logs', 4)
// Supplementaries - Autumnity
woodcutting('supplementaries:sign_post_maple', 'autumnity:maple_planks', 1)
woodcutting('supplementaries:sign_post_maple', '#autumnity:maple_logs', 4)
// Supplementaries - Endergetic Expansion
woodcutting('supplementaries:sign_post_poise', 'endergetic:poise_planks', 1)
woodcutting('supplementaries:sign_post_poise', '#endergetic:poise_stems', 4)
// Supplementaries - Enhanced Mushrooms
woodcutting('supplementaries:sign_post_red_mushroom', 'enhanced_mushrooms:red_mushroom_planks', 1)
woodcutting('supplementaries:sign_post_red_mushroom', '#enhanced_mushrooms:red_mushroom_stems', 4)
woodcutting('supplementaries:sign_post_brown_mushroom', 'enhanced_mushrooms:brown_mushroom_planks', 1)
woodcutting('supplementaries:sign_post_brown_mushroom', '#enhanced_mushrooms:brown_mushroom_stems', 4)
// Supplementaries - Upgrade Aquatic
woodcutting('supplementaries:sign_post_driftwood', 'upgrade_aquatic:driftwood_planks', 1)
woodcutting('supplementaries:sign_post_driftwood', '#upgrade_aquatic:driftwood_logs', 4)
woodcutting('supplementaries:sign_post_river', 'upgrade_aquatic:river_planks', 1)
woodcutting('supplementaries:sign_post_river', '#upgrade_aquatic:river_logs', 4)
// Quark
woodcutting('quark:vertical_acacia_planks', 'minecraft:acacia_planks', 1)
woodcutting('quark:vertical_acacia_planks', '#minecraft:acacia_logs', 4)
woodcutting('quark:acacia_post', '#minecraft:acacia_logs', 3)
woodcutting('quark:stripped_acacia_post', '#minecraft:acacia_logs', 3)
woodcutting('quark:acacia_vertical_slab', 'minecraft:acacia_planks', 2)
woodcutting('quark:acacia_vertical_slab', '#minecraft:acacia_logs', 8)
woodcutting('quark:acacia_ladder', 'minecraft:acacia_planks', 2)
woodcutting('quark:acacia_ladder', '#minecraft:acacia_logs', 8)
// TODO: Add non-acacia stuff.
// Upgrade Aquatic
// TODO: Planks, Vertical PLanks, Slabs, Stairs, Ladders, Signs, Fences, Fence Gates, Buttons, Doors
// Valhelsia Structures
woodcutting('valhelsia_structures:acacia_post', '#minecraft:acacia_logs', 2)
woodcutting('valhelsia_structures:birch_post', '#minecraft:birch_logs', 2)
woodcutting('valhelsia_structures:dark_oak_post', '#minecraft:dark_oak_logs', 2)
woodcutting('valhelsia_structures:jungle_post', '#minecraft:jungle_logs', 2)
woodcutting('valhelsia_structures:oak_post', '#minecraft:oak_logs', 2)
woodcutting('valhelsia_structures:spruce_post', '#minecraft:spruce_logs', 2)
// Make sure to check this again after the Valhelsia Structures update to add the new posts.
})