UNPKG

zen-flow

Version:
980 lines (960 loc) 32.9 kB
'use strict'; var util = require('node:util'); const float = (n) => `${n}F`; const literal = (x) => `"${x}"`; const list = (n) => (arr) => { if (arr.length > n) return ` ${arr.join(",\n ")} `; return arr.join(", "); }; const array = (n) => (arr) => `[${list(n)(arr)}]`; const id = (id2) => typeof id2 === "string" ? id2 : "null"; const weight = (weight2) => (id2) => `${id2}.weight(${weight2})`; const stack = (stack2) => `${stack2.id} * ${stack2.n}`; const bonus$1 = (bonus2) => `${bonus2.id} % ${Math.round(bonus2.p * 100)}`; const liquid = (liquid2) => { if (!liquid2.id.startsWith("<liquid:")) throw new Error("ID is not a liquid"); return `${liquid2.id} * ${liquid2.mb}`; }; const ingredient = (ingredient2) => typeof ingredient2 === "string" ? ingredient2 : stack(ingredient2); const cast = (cast2) => { if (typeof cast2 === "string") return [cast2, false]; if (!cast2) return [null, false]; return [cast2.id, cast2.consume]; }; const shaped = (recipe2) => { const f = (...arr) => { for (const x of arr) { if (typeof x === "string") return x; } return null; }; const matrix = [[ f(recipe2.square, recipe2.ring, recipe2.corner, recipe2[1]), f(recipe2.square, recipe2.ring, recipe2.edge, recipe2[2]), f(recipe2.ring, recipe2.corner, recipe2[3]) ], [ f(recipe2.square, recipe2.ring, recipe2.edge, recipe2[4]), f(recipe2.square, recipe2.center, recipe2[5]), f(recipe2.ring, recipe2.edge, recipe2[6]) ], [ f(recipe2.ring, recipe2.corner, recipe2[7]), f(recipe2.ring, recipe2.edge, recipe2[8]), f(recipe2.ring, recipe2.corner, recipe2[9]) ]]; if (matrix[0][2] === null && matrix[1][2] === null && matrix[2].every((x) => x === null)) { matrix[0].splice(-1); matrix[1].splice(-1); matrix.splice(-1); } return array(2)(matrix.map((row) => array(3)(row.map(id)))); }; const COLOR = { black: "\\u00A70", darkBlue: "\\u00A71", darkGreen: "\\u00A72", darkAqua: "\\u00A73", darkRed: "\\u00A74", darkPurple: "\\u00A75", gold: "\\u00A76", gray: "\\u00A77", darkGray: "\\u00A78", blue: "\\u00A79", green: "\\u00A7a", aqua: "\\u00A7b", red: "\\u00A7c", lightPurple: "\\u00A7d", yellow: "\\u00A7e", white: "\\u00A7f" }; const STYLE = { obfuscated: "\\u00A7k", bold: "\\u00A7l", strikethrough: "\\u00A7m", underline: "\\u00A7n", italic: "\\u00A7o" }; const name = (...texts) => literal(texts.map((text) => { if (typeof text === "string") return text; return [ text.color && COLOR[text.color], text.style && STYLE[text.style], text.text, (text.color ?? text.style) && "\\u00A7r" ].filter((x) => x !== void 0).join(""); }).join("")); const tooltip = (...tooltips) => tooltips.map((tooltip2) => { if (typeof tooltip2 === "string") return literal(tooltip2); let out = literal(tooltip2.text); if (tooltip2.style) out = `format.${tooltip2.style}(${out})`; if (tooltip2.color) out = `format.${tooltip2.color}(${out})`; return out; }).join(" + "); const recipe = (...args) => list(3)(args.filter((x) => x !== void 0).map((x) => { if (Array.isArray(x)) return array(3)(x); if (x === null) return "null"; return x; })); const clamp = (min, max, n) => Math.max(min, Math.min(max, n)); const addGrinder = (recipe$1) => { const out = recipe( ingredient(recipe$1.input), ingredient(recipe$1.output), Math.max(1, Math.round(recipe$1.turns)), ...recipe$1.bonus?.map((bonus) => `${bonus.id}, ${clamp(0, 1, bonus.p)}`) ?? [] ); return `mods.appeng.Grinder.addRecipe(${out});`; }; const removeGrinder = (input) => `mods.appeng.Grinder.removeRecipe(${input});`; const addPressInscriber = (type) => (recipe$1) => { const out = recipe( [recipe$1.input.center], recipe$1.input.top, recipe$1.input.bottom ?? null, ingredient(recipe$1.output), literal(type) ); return `mods.appeng.Inscriber.addRecipe(${out});`; }; const addInscriber = addPressInscriber("Inscribe"); const addPress = addPressInscriber("Press"); const removePressInscriber = (output) => `mods.appeng.Inscriber.removeRecipe(${output});`; const addCompressor = (recipe$1) => { const out = recipe( recipe$1.output, Math.max(1, recipe$1.input.n), recipe$1.input.id, recipe$1.exact ); return `mods.avaritia.Compressor.add(${out});`; }; const removeCompressor = (id) => `mods.avaritia.Compressor.remove(${id});`; const addExtreme = (output) => (input) => { const out = recipe( ingredient(output), input.map((row) => array(9)(row.map(id))) ); return `mods.avaritia.ExtremeCrafting.addShaped(${out});`; }; const removeExtreme = (id) => `mods.avaritia.ExtremeCrafting.remove(${id});`; const createBlock = (id) => (recipe$1) => { const out = recipe( literal(recipe$1.name), literal(id), literal(recipe$1.material), typeof recipe$1.texture === "string" ? literal(recipe$1.texture) : literal(id), typeof recipe$1.creativeTab === "string" && literal(recipe$1.creativeTab), typeof recipe$1.renderType === "number" ? recipe$1.renderType : 1, recipe$1.drops, recipe$1.unbreakable, typeof recipe$1.hardness === "number" && float(recipe$1.hardness), typeof recipe$1.lightLevel === "number" && float(recipe$1.lightLevel), recipe$1.opacity ); return `mods.content.Block.registerBlock(${out});`; }; const createItem = (id) => (recipe$1) => { const out = recipe( literal(recipe$1.name), literal(id), typeof recipe$1.texture === "string" ? literal(recipe$1.texture) : literal(id), typeof recipe$1.creativeTab === "string" ? literal(recipe$1.creativeTab) : literal("misc"), typeof recipe$1.damage === "number" ? recipe$1.damage : 0, typeof recipe$1.stackSize === "number" ? recipe$1.stackSize : 64, typeof recipe$1.toolType === "string" ? literal(recipe$1.toolType) : literal("pickaxe"), typeof recipe$1.level === "number" ? recipe$1.level : 0, !!recipe$1.is3d, (recipe$1.tooltip ?? []).map(literal) ); return `mods.content.Item.registerItem(${out});`; }; const createLiquid = (id) => (recipe$1) => { const out = recipe( literal(id), recipe$1.density, !!recipe$1.gaseous, recipe$1.luminosity, recipe$1.temperature, recipe$1.viscosity, recipe$1.color, !!recipe$1.setFire, typeof recipe$1.castingMaterial === "number" ? recipe$1.castingMaterial : 0, typeof recipe$1.texture?.still === "string" ? literal(recipe$1.texture.still) : null, typeof recipe$1.texture?.flowing === "string" ? literal(recipe$1.texture.flowing) : null ); return `mods.content.Fluid.registerFluid(${out});`; }; const createMaterial = (id) => (recipe$1) => { const out = recipe( literal(id), literal(recipe$1.name), literal(recipe$1.color.name), recipe$1.resource, recipe$1.id, recipe$1.level, recipe$1.durability, recipe$1.speed, recipe$1.damage, recipe$1.reinforced, recipe$1.color.tool, recipe$1.value, recipe$1.modifier, recipe$1.stonebound, !!recipe$1.buildParts, recipe$1.modifiers, literal(recipe$1.tooltip), recipe$1.arrow.mass, recipe$1.arrow.breakChance, recipe$1.bow.drawSpeed, recipe$1.bow.speed, Array.isArray(recipe$1.nativeModifiers) && array(1)([array(2)(recipe$1.nativeModifiers.map(ingredient))]), Array.isArray(recipe$1.nativeEnchantments) && literal(recipe$1.nativeEnchantments.join(" ")) ); return `mods.content.Material.registerMaterial(${out});`; }; const addComposter = (recipe$1) => { const out = recipe( recipe$1.id, recipe$1.fill, typeof recipe$1.color === "string" && literal(recipe$1.color) ); return `mods.exnihilo.Composting.addRecipe(${out});`; }; const removeComposter = (id) => `mods.exnihilo.Composting.removeRecipe(${id});`; const addCrucible = (output) => (input) => { const out = recipe(input, liquid(output)); return `mods.exnihilo.Crucible.addRecipe(${out});`; }; const removeCrucible = (output) => `mods.exnihilo.Crucible.removeRecipe(${output});`; const addCrucibleFuel = (input) => { const out = recipe(input.id, input.n); return `mods.exnihilo.Crucible.addHeatSource(${out});`; }; const removeCrucibleFuel = (input) => `mods.exnihilo.Crucible.removeHeatSource(${input});`; const addHammer = (input) => (...output) => { const out = recipe( input, output.map((bonus) => bonus.id), output.map((bonus) => bonus.p), output.map((bonus) => bonus.luck ?? 0) ); return `mods.exnihilo.Hammer.addRecipe(${out});`; }; const removeHammer = (input) => `mods.exnihilo.Hammer.removeRecipe(${input});`; const addSieve = (input) => (...output) => { const out = recipe( input, output.map((bonus) => bonus.id), output.map((bonus) => Math.round(1 / bonus.p)) ); return `mods.exnihilo.Sieve.addRecipe(${out});`; }; const removeSieve = (input) => `mods.exnihilo.Sieve.removeRecipe(${input});`; const addQED = (output) => (input) => { const out = recipe( ingredient(output), shaped(input) ); return `mods.extraUtils.QED.addShapedRecipe(${out});`; }; const removeQED = (output) => `mods.extraUtils.QED.removeRecipe(${output});`; const addCarpenter = (recipe$1) => { const out = recipe( ingredient(recipe$1.output), shaped(recipe$1.input), recipe$1.liquid && liquid(recipe$1.liquid), Math.max(1, Math.round(recipe$1.ticks)), recipe$1.top ); return `mods.forestry.Carpenter.addRecipe(${out});`; }; const removeCarpenter = (output, liquid) => `mods.forestry.Carpenter.removeRecipe(${recipe(output, liquid)});`; const addCentrifuge = (recipe$1) => { const out = recipe( recipe$1.output.map(bonus$1), recipe$1.input, recipe$1.ticks ); return `mods.forestry.Centrifuge.addRecipe(${out});`; }; const removeCentrifuge = (input) => `mods.forestry.Centrifuge.removeRecipe(${input});`; const addFermenter = (recipe$1) => { const out = recipe( recipe$1.output.id, recipe$1.catalyst, recipe$1.input.id, recipe$1.input.mb, recipe$1.output.mb / recipe$1.input.mb ); return `mods.forestry.Fermenter.addRecipe(${out});`; }; const removeFermenter = (input) => `mods.forestry.Fermenter.removeRecipe(${input});`; const addFermenterFuel = (recipe$1) => { const out = recipe( recipe$1.id, recipe$1.cycles, recipe$1.burn ); return `mods.forestry.Fermenter.addFuel(${out});`; }; const removeFermenterFuel = (input) => `mods.forestry.Fermenter.removeFuel(${input});`; const addMoistener = (recipe$1) => { const out = recipe( recipe$1.output, recipe$1.input, recipe$1.ticks ); return `mods.forestry.Moistener.addRecipe(${out});`; }; const removeMoistener = (output) => `mods.forestry.Moistener.removeRecipe(${output});`; const addSqueezer = (recipe$1) => { const out = recipe( liquid(recipe$1.output), bonus$1(recipe$1.bonus), recipe$1.input.map(ingredient), recipe$1.ticks ); return `mods.forestry.Squeezer.addRecipe(${out});`; }; const removeSqueezer = (output, input) => `mods.forestry.Squeezer.removeRecipe(${recipe(output, input)});`; const addStill = (recipe$1) => { const out = recipe( liquid(recipe$1.output), liquid(recipe$1.input), recipe$1.ticks ); return `mods.forestry.Still.addRecipe(${out});`; }; const removeStill = (output, input) => `mods.forestry.Still.removeRecipe(${recipe(output, input)});`; const addFabricator = (recipe$1) => { const out = recipe( ingredient(recipe$1.output), shaped(recipe$1.input), recipe$1.glass, recipe$1.cast ); return `mods.forestry.ThermionicFabricator.addCast(${out});`; }; const removeFabricator = (output) => `mods.forestry.ThermionicFabricator.removeCast(${output});`; const addFabricatorGlass = (recipe$1) => { const out = recipe( recipe$1.mb, recipe$1.id, recipe$1.temperature ); return `mods.forestry.ThermionicFabricator.addSmelting(${out});`; }; const removeFabricatorGlass = (input) => `mods.forestry.ThermionicFabricator.removeSmelting(${input});`; const withName = (name$1) => (id) => `${id}.displayName = ${name(name$1)};`; const withTag = (tag) => (id) => `${id}.withTag(${util.inspect(tag).replace(/(:\s?)'([^']+)'/gm, '$1"$2"')})`; const withWeight = (weight) => (id) => `${id}.weight(${weight})`; const ENCHANTMENT = { protection: 0, fireProtection: 1, featherFalling: 2, blastProtection: 3, projectileProtection: 4, respiration: 5, aquaAffinity: 6, thorns: 7, sharpness: 16, smite: 17, baneOfAntrophods: 18, knockback: 19, fireAspect: 20, looting: 21, efficiency: 32, silkTouch: 33, unbreaking: 34, fortune: 35, power: 48, punch: 49, flame: 50, infinity: 51 }; const withEnchantment = (...enchantments) => withTag({ ench: enchantments.map((enchantment) => ({ id: typeof enchantment.id === "number" ? enchantment.id : ENCHANTMENT[enchantment.id], lvl: enchantment.lvl })) }); const withTooltip = (...tooltip$1) => (id) => `${id}.addTooltip(${tooltip(...tooltip$1)});`; const withTooltipShift = (...tooltip$1) => (id) => `${id}.addShiftTooltip(${tooltip(...tooltip$1)});`; const addChestLoot = (id) => (...loots) => loots.map((loot) => { const out = recipe( literal(id), withWeight(typeof loot.p === "number" ? loot.p * 100 : 100)(loot.id), loot.min, loot.max ); return `vanilla.loot.addChestLoot(${out});`; }).join("\n"); const removeChestLoot = (chest) => (...ids) => ids.map((id) => `vanilla.loot.removeChestLoot(${recipe(literal(chest), id)});`).join("\n"); const addSeed = (seed) => `vanilla.seeds.addSeed(${withWeight(typeof seed.p === "number" ? seed.p * 100 : 100)(seed.id)});`; const removeSeed = (id) => `vanilla.seeds.removeSeed(${id});`; const maybe = (fn) => (x) => { if (x === null || x === void 0) return void 0; return fn(x); }; const addShaped = (output) => (input) => { const out = recipe( ingredient(output), shaped(input) ); return `recipes.addShaped(${out});`; }; const removeShaped = (output, input) => { const out = recipe( output, maybe(shaped)(input) ); return `recipes.removeShaped(${out});`; }; const addShapeless = (output) => (input) => { const out = recipe( ingredient(output), array(3)(input) ); return `recipes.addShapeless(${out});`; }; const removeShapeless = (output, input) => { const out = recipe( output, maybe(array(3))(input) ); return `recipes.removeShapeless(${out});`; }; const add = (output) => (input) => { if (Array.isArray(input)) return addShapeless(output)(input); return addShaped(output)(input); }; const remove = (output) => `recipes.remove(${output});`; const addMirror = (output) => (input) => { const out = recipe( ingredient(output), shaped(input) ); return `recipes.addShapedMirrored(${out});`; }; const addFurnace = (recipe$1) => `furnace.addRecipe(${recipe(recipe$1.output, recipe$1.input, recipe$1.xp)});`; const removeFurnace = (output, input) => { if (typeof input === "string") return `furnace.remove(${recipe(output, input)});`; return `furnace.remove(${recipe(output)});`; }; const addFurnaceFuel = (fuel) => (n) => `furnace.setFuel(${recipe(fuel, n)});`; const removeFurnaceFuel = (fuel) => addFurnaceFuel(fuel)(0); const addBlacklistAutospawner = (id) => `mods.mfr.AutoSpawner.addBlacklist(${literal(id)});`; const removeBlacklistAutospawner = (id) => `mods.mfr.AutoSpawner.removeBlacklist(${literal(id)});`; const HARVESTER_TYPE = { tree: "tree", leaf: "treeLeaf", block: "normal", column: "column", treeInverse: "treeFlipped" }; const addHarvester = (recipe$1) => { const out = recipe( recipe$1.id, recipe$1.bonus && array(3)(recipe$1.bonus.map((x) => { if (typeof x === "string") return x; if ("n" in x) return stack(x); return bonus$1(x); })), literal(HARVESTER_TYPE[recipe$1.type]) ); return `mods.mfr.Harvester.addHarvestable(${out});`; }; const addLaserOre = (id) => (n) => `mods.mfr.MiningLaser.addOre(${recipe(weight(n)(id))});`; const removeLaserOre = (id) => `mods.mfr.MiningLaser.removeOre(${recipe(id)});`; const FOCI = { white: 0, orange: 1, magenta: 2, lightBlue: 3, yellow: 4, lime: 5, pink: 6, gray: 7, lightGray: 8, cyan: 9, purple: 10, blue: 11, brown: 12, green: 13, red: 14, black: 15 }; const addLaserFoci = (id) => (foci) => `mods.mfr.MiningLaser.addPreferredOre(${recipe(FOCI[foci], id)});`; const removeLaserFoci = (id) => (foci) => `mods.mfr.MiningLaser.removePreferredOre(${recipe(FOCI[foci], id)});`; const addLaser = (recipe) => [ addLaserOre(recipe.id)(recipe.weight), addLaserFoci(recipe.id)(recipe.foci) ].join("\n"); const addPlanter = (id) => `mods.mfr.Planter.addPlantable(${id});`; const addBiomeRubberTree = (id) => `mods.mfr.RubberTree.addBiome(${recipe(literal(id))});`; const removeBiomeRubberTree = (id) => `mods.mfr.RubberTree.removeBiome(${recipe(literal(id))});`; const addSludgeBoiler = (id) => (weight$1) => `mods.mfr.SludgeBoiler.addDrop(${recipe(weight(weight$1)(id))});`; const removeSludgeBoiler = (id) => `mods.mfr.SludgeBoiler.removeDrop(${recipe(id)});`; const hide = (id) => `mods.nei.NEI.hide(${id});`; const show = (id) => `mods.nei.NEI.addEntry(${id});`; const rename = (id) => (name) => `mods.nei.NEI.overrideName(${recipe(id, literal(name))});`; const addOreDict = (dict) => (id) => `${dict}.add(${id});`; const removeOreDict = (dict) => (id) => `${dict}.remove(${id});`; const joinOreDict = (a) => (b) => `${a}.addAll(${b});`; const mirrorOreDict = (a) => (b) => `${a}.mirror(${b});`; const bonus = (bonus2) => bonus2 ? [bonus2.id, Math.round(bonus2.p * 100)] : []; const addMagmaCrucible = (recipe$1) => { const out = recipe( recipe$1.rf, recipe$1.input, liquid(recipe$1.output) ); return `mods.thermalexpansion.Crucible.addRecipe(${out});`; }; const removeMagmaCrucible = (input) => `mods.thermalexpansion.Crucible.removeRecipe(${input});`; const addRedstoneFurnace = (recipe$1) => { const out = recipe( recipe$1.rf, recipe$1.input, ingredient(recipe$1.output) ); return `mods.thermalexpansion.Furnace.addRecipe(${out});`; }; const removeRedstoneFurnace = (input) => `mods.thermalexpansion.Furnace.removeRecipe(${input});`; const addInsolator = (recipe$1) => { const out = recipe( recipe$1.rf, ingredient(recipe$1.input.left), ingredient(recipe$1.input.right), ingredient(recipe$1.output), ...bonus(recipe$1.bonus) ); return `mods.thermalexpansion.Insolator.addRecipe(${out});`; }; const removeInsolator = (input) => `mods.thermalexpansion.Insolator.removeRecipe(${recipe(input.left, input.right)});`; const addPulverizer = (recipe$1) => { const out = recipe( recipe$1.rf, recipe$1.input, ingredient(recipe$1.output), ...bonus(recipe$1.bonus) ); return `mods.thermalexpansion.Pulverizer.addRecipe(${out});`; }; const removePulverizer = (input) => `mods.thermalexpansion.Pulverizer.removeRecipe(${input});`; const addSawmill = (recipe$1) => { const out = recipe( recipe$1.rf, recipe$1.input, ingredient(recipe$1.output), ...bonus(recipe$1.bonus) ); return `mods.thermalexpansion.Sawmill.addRecipe(${out});`; }; const removeSawmill = (input) => `mods.thermalexpansion.Sawmill.removeRecipe(${input});`; const addInductionSmelter = (recipe$1) => { const out = recipe( recipe$1.rf, ingredient(recipe$1.input.left), ingredient(recipe$1.input.right), ingredient(recipe$1.output), ...bonus(recipe$1.bonus) ); return `mods.thermalexpansion.Smelter.addRecipe(${out});`; }; const removeInductionSmelter = (input) => `mods.thermalexpansion.Smelter.removeRecipe(${recipe(input.left, input.right)});`; const addTransposerFill = (recipe$1) => { const out = recipe( recipe$1.rf, recipe$1.input, ingredient(recipe$1.output), liquid(recipe$1.liquid) ); return `mods.thermalexpansion.Transposer.addFillRecipe(${out});`; }; const removeTransposerFill = (recipe$1) => `mods.thermalexpansion.Transposer.removeFillRecipe(${recipe(recipe$1.input, recipe$1.liquid)});`; const addTransposerExtract = (recipe$1) => { const out = recipe( recipe$1.rf, recipe$1.input, liquid(recipe$1.output), ...bonus(recipe$1.bonus) ); return `mods.thermalexpansion.Transposer.addExtractRecipe(${out});`; }; const removeTransposerExtract = (input) => `mods.thermalexpansion.Transposer.removeExtractRecipe(${input});`; const addCastingBasin = (recipe$1) => { const out = recipe( recipe$1.output, liquid(recipe$1.input), ...cast(recipe$1.cast), recipe$1.ticks ); return `mods.tconstruct.Casting.addBasinRecipe(${out});`; }; const removeCastingBasin = (output) => `mods.tconstruct.Casting.removeBasinRecipe(${output});`; const addCastingTable = (recipe$1) => { const out = recipe( recipe$1.output, liquid(recipe$1.input), ...cast(recipe$1.cast), recipe$1.ticks ); return `mods.tconstruct.Casting.addTableRecipe(${out});`; }; const removeCastingTable = (output) => `mods.tconstruct.Casting.removeTableRecipe(${output});`; const addDryingRack = (recipe$1) => { const out = recipe( recipe$1.input, recipe$1.output, recipe$1.ticks ); return `mods.tconstruct.Drying.addRecipe(${out});`; }; const removeDryingRack = (output) => `mods.tconstruct.Drying.removeRecipe(${output});`; const MODIFIER = { lvl1: "Tier1Free", lvl2: "Tier1.5Free", lvl3: "Tier2Free", silkTouch: "Silk Touch", luck: "Lapis", fiery: "Blaze", sharpness: "ModAttack", beheading: "Beheading", diamond: "Diamond", reinforced: "Reinforced", haste: "Redstone", necrotic: "Necrotic", emerald: "Emerald", smite: "ModSmite", knockback: "Piston", baneOfAnthropods: "ModAntiSpider", flux: "Flux" }; const removeModifier = (id) => `mods.tconstruct.Modifiers.remove(${literal(id)});`; const addSmelteryFluid = (recipe$1) => { const out = recipe( recipe$1.input, liquid(recipe$1.output), recipe$1.temperature, recipe$1.render ); return `mods.tconstruct.Smeltery.addMelting(${out});`; }; const removeSmelteryFluid = (input) => `mods.tconstruct.Smeltery.removeMelting(${input});`; const addSmelteryAlloy = (recipe$1) => { const output = typeof recipe$1.output === "string" ? { id: recipe$1.output, mb: recipe$1.input.reduce((acc, cur) => acc + cur.mb, 0) } : recipe$1.output; const out = recipe( liquid(output), recipe$1.input.map(liquid) ); return `mods.tconstruct.Smeltery.addAlloy(${out});`; }; const removeSmelteryAlloy = (output) => `mods.tconstruct.Smeltery.removeAlloy(${output});`; const addSmelteryFuel = (id) => (recipe$1) => { const out = recipe( id, recipe$1.temperature, recipe$1.ticks ); return `mods.tconstruct.Smeltery.addFuel(${out});`; }; const removeSmelteryFuel = (id) => `mods.tconstruct.Smeltery.removeFuel(${id});`; const MATERIAL = { wood: "Wood", stone: "Stone", iron: "Iron", flint: "Flint", cactus: "Cactus", bone: "Bone", obsidian: "Obsidian", alumite: "Alumite", netherrack: "Netherrack", slimeBlue: "Blue Slime", slimeGreen: "Green Slime", paper: "Paper", cobalt: "Cobalt", ardite: "Ardite", manyullyn: "Manyullyn", copper: "Copper", bronze: "Bronze", steel: "Steel", pigIron: "Pig Iron", lead: "Lead", silver: "Silver", ferrous: "Ferrous", shiny: "Shiny", electrum: "Electrum", invar: "Invar", woodMagical: "Magical Wood", bedrock: "Bedrockium", unstable: "Unstable Induced" }; const addRepairMaterial = (id) => (recipe$1) => { const out = recipe( id, literal(recipe$1.material), recipe$1.n ); return `mods.tconstruct.Tweaks.addRepairMaterial(${out});`; }; const removeRepairMaterial = (id, material) => { const out = recipe( id, typeof material === "string" && literal(material) ); return `mods.tconstruct.Tweaks.removeRepairMaterial(${out});`; }; const setMaterialStats = (id) => (stats) => { const out = recipe( literal(id), literal(stats.name), stats.level, stats.durability, stats.speed * 100, stats.damage, stats.modifier, typeof stats.reinforced === "number" ? stats.reinforced : 0, typeof stats.stonebound === "number" ? stats.stonebound : 0, literal(stats.color.name), stats.color.tool ); return `mods.tconstruct.ToolStats.setStats(${out});`; }; const setMaterialName = (id) => (name) => { const out = recipe( literal(id), literal(name) ); return `mods.tconstruct.ToolStats.setDisplayName(${out});`; }; const setMaterialMiningLevel = (id) => (n) => { const out = recipe(literal(id), n); return `mods.tconstruct.ToolStats.setHarvestLevel(${out});`; }; const setMaterialDurability = (id) => (n) => { const out = recipe(literal(id), n); return `mods.tconstruct.ToolStats.setDurability(${out});`; }; const setMaterialSpeed = (id) => (n) => { const out = recipe(literal(id), n * 100); return `mods.tconstruct.ToolStats.setSpeed(${out});`; }; const setMaterialDamage = (id) => (n) => { const out = recipe(literal(id), n); return `mods.tconstruct.ToolStats.setDamage(${out});`; }; const setMaterialHandleModifier = (id) => (n) => { const out = recipe(literal(id), n); return `mods.tconstruct.ToolStats.setHandleModifier(${out});`; }; const setMaterialReinforcedLevel = (id) => (n) => { const out = recipe(literal(id), n); return `mods.tconstruct.ToolStats.setReinforcedLevel(${out});`; }; const setMaterialLevelStonebound = (material) => (n) => { const out = recipe(literal(material), n); return `mods.tconstruct.ToolStats.setStoneboundLevel(${out});`; }; const setMaterialStyle = (material) => (style) => { const out = recipe( literal(material), literal(style) ); return `mods.tconstruct.ToolStats.setStyle(${out});`; }; const setBowMaterialStats = (id) => (stats) => { const out = recipe( literal(id), stats.durability, stats.drawSpeed, float(stats.flightSpeed) ); return `mods.tconstruct.ToolStats.setBowStats(${out});`; }; const setBowMaterialDurability = (id) => (n) => { const out = recipe(literal(id), n); return `mods.tconstruct.ToolStats.setBowDurability(${out});`; }; const setBowMaterialDrawspeed = (id) => (n) => { const out = recipe(literal(id), n); return `mods.tconstruct.ToolStats.setBowDrawspeed(${out});`; }; const setBowMaterialFlightSpeed = (id) => (n) => { const out = recipe( literal(id), float(n) ); return `mods.tconstruct.ToolStats.setBowFlightSpeed(${out});`; }; const setArrowStats = (id) => (stats) => { const out = recipe( literal(id), float(stats.mass), float(stats.breakChance * 100), float(stats.accuracy * 100) ); return `mods.tconstruct.ToolStats.setArrowStats(${out});`; }; const setArrowMass = (id) => (n) => { const out = recipe( literal(id), float(n) ); return `mods.tconstruct.ToolStats.setArrowMass(${out});`; }; const setArrowBreakChance = (id) => (n) => { const out = recipe( literal(id), float(n * 100) ); return `mods.tconstruct.ToolStats.setArrowBreakChance(${out});`; }; const setArrowAccuracy = (id) => (n) => { const out = recipe( literal(id), float(n * 100) ); return `mods.tconstruct.TooLStats.setArrowAccuracy(${out});`; }; exports.COLOR = COLOR; exports.ENCHANTMENT = ENCHANTMENT; exports.FOCI = FOCI; exports.HARVESTER_TYPE = HARVESTER_TYPE; exports.MATERIAL = MATERIAL; exports.MODIFIER = MODIFIER; exports.STYLE = STYLE; exports.add = add; exports.addBiomeRubberTree = addBiomeRubberTree; exports.addBlacklistAutospawner = addBlacklistAutospawner; exports.addCarpenter = addCarpenter; exports.addCastingBasin = addCastingBasin; exports.addCastingTable = addCastingTable; exports.addCentrifuge = addCentrifuge; exports.addChestLoot = addChestLoot; exports.addComposter = addComposter; exports.addCompressor = addCompressor; exports.addCrucible = addCrucible; exports.addCrucibleFuel = addCrucibleFuel; exports.addDryingRack = addDryingRack; exports.addExtreme = addExtreme; exports.addFabricator = addFabricator; exports.addFabricatorGlass = addFabricatorGlass; exports.addFermenter = addFermenter; exports.addFermenterFuel = addFermenterFuel; exports.addFurnace = addFurnace; exports.addFurnaceFuel = addFurnaceFuel; exports.addGrinder = addGrinder; exports.addHammer = addHammer; exports.addHarvester = addHarvester; exports.addInductionSmelter = addInductionSmelter; exports.addInscriber = addInscriber; exports.addInsolator = addInsolator; exports.addLaser = addLaser; exports.addLaserFoci = addLaserFoci; exports.addLaserOre = addLaserOre; exports.addMagmaCrucible = addMagmaCrucible; exports.addMirror = addMirror; exports.addMoistener = addMoistener; exports.addOreDict = addOreDict; exports.addPlanter = addPlanter; exports.addPress = addPress; exports.addPulverizer = addPulverizer; exports.addQED = addQED; exports.addRedstoneFurnace = addRedstoneFurnace; exports.addRepairMaterial = addRepairMaterial; exports.addSawmill = addSawmill; exports.addSeed = addSeed; exports.addShaped = addShaped; exports.addShapeless = addShapeless; exports.addSieve = addSieve; exports.addSludgeBoiler = addSludgeBoiler; exports.addSmelteryAlloy = addSmelteryAlloy; exports.addSmelteryFluid = addSmelteryFluid; exports.addSmelteryFuel = addSmelteryFuel; exports.addSqueezer = addSqueezer; exports.addStill = addStill; exports.addTransposerExtract = addTransposerExtract; exports.addTransposerFill = addTransposerFill; exports.createBlock = createBlock; exports.createItem = createItem; exports.createLiquid = createLiquid; exports.createMaterial = createMaterial; exports.hide = hide; exports.joinOreDict = joinOreDict; exports.mirrorOreDict = mirrorOreDict; exports.remove = remove; exports.removeBiomeRubberTree = removeBiomeRubberTree; exports.removeBlacklistAutospawner = removeBlacklistAutospawner; exports.removeCarpenter = removeCarpenter; exports.removeCastingBasin = removeCastingBasin; exports.removeCastingTable = removeCastingTable; exports.removeCentrifuge = removeCentrifuge; exports.removeChestLoot = removeChestLoot; exports.removeComposter = removeComposter; exports.removeCompressor = removeCompressor; exports.removeCrucible = removeCrucible; exports.removeCrucibleFuel = removeCrucibleFuel; exports.removeDryingRack = removeDryingRack; exports.removeExtreme = removeExtreme; exports.removeFabricator = removeFabricator; exports.removeFabricatorGlass = removeFabricatorGlass; exports.removeFermenter = removeFermenter; exports.removeFermenterFuel = removeFermenterFuel; exports.removeFurnace = removeFurnace; exports.removeFurnaceFuel = removeFurnaceFuel; exports.removeGrinder = removeGrinder; exports.removeHammer = removeHammer; exports.removeInductionSmelter = removeInductionSmelter; exports.removeInsolator = removeInsolator; exports.removeLaserFoci = removeLaserFoci; exports.removeLaserOre = removeLaserOre; exports.removeMagmaCrucible = removeMagmaCrucible; exports.removeModifier = removeModifier; exports.removeMoistener = removeMoistener; exports.removeOreDict = removeOreDict; exports.removePressInscriber = removePressInscriber; exports.removePulverizer = removePulverizer; exports.removeQED = removeQED; exports.removeRedstoneFurnace = removeRedstoneFurnace; exports.removeRepairMaterial = removeRepairMaterial; exports.removeSawmill = removeSawmill; exports.removeSeed = removeSeed; exports.removeShaped = removeShaped; exports.removeShapeless = removeShapeless; exports.removeSieve = removeSieve; exports.removeSludgeBoiler = removeSludgeBoiler; exports.removeSmelteryAlloy = removeSmelteryAlloy; exports.removeSmelteryFluid = removeSmelteryFluid; exports.removeSmelteryFuel = removeSmelteryFuel; exports.removeSqueezer = removeSqueezer; exports.removeStill = removeStill; exports.removeTransposerExtract = removeTransposerExtract; exports.removeTransposerFill = removeTransposerFill; exports.rename = rename; exports.setArrowAccuracy = setArrowAccuracy; exports.setArrowBreakChance = setArrowBreakChance; exports.setArrowMass = setArrowMass; exports.setArrowStats = setArrowStats; exports.setBowMaterialDrawspeed = setBowMaterialDrawspeed; exports.setBowMaterialDurability = setBowMaterialDurability; exports.setBowMaterialFlightSpeed = setBowMaterialFlightSpeed; exports.setBowMaterialStats = setBowMaterialStats; exports.setMaterialDamage = setMaterialDamage; exports.setMaterialDurability = setMaterialDurability; exports.setMaterialHandleModifier = setMaterialHandleModifier; exports.setMaterialLevelStonebound = setMaterialLevelStonebound; exports.setMaterialMiningLevel = setMaterialMiningLevel; exports.setMaterialName = setMaterialName; exports.setMaterialReinforcedLevel = setMaterialReinforcedLevel; exports.setMaterialSpeed = setMaterialSpeed; exports.setMaterialStats = setMaterialStats; exports.setMaterialStyle = setMaterialStyle; exports.show = show; exports.withEnchantment = withEnchantment; exports.withName = withName; exports.withTag = withTag; exports.withTooltip = withTooltip; exports.withTooltipShift = withTooltipShift; exports.withWeight = withWeight;