zen-flow
Version:
MineTweaker ZenScript made easy.
846 lines (826 loc) • 29 kB
JavaScript
import util from 'node:util';
const object = (x) => x !== null && !Array.isArray(x) && typeof x === "object";
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 ingredient = (ingredient2) => object(ingredient2) ? stack(ingredient2) : ingredient2;
const bonus$1 = (bonus2) => `${bonus2.id} % ${Math.round(bonus2.chance * 100)}`;
const cast = (cast2) => cast2 ? [
cast2.id,
!!cast2.consume
] : [null, false];
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 capitalise = (x) => `${x[0].toUpperCase()}${x.slice(1)}`;
const clamp = (min, max, n) => Math.max(min, Math.min(max, n));
const addGrinder = (id, recipe$1) => {
const bonus = (bonus2) => `${bonus2.id}, ${clamp(0, 1, bonus2.chance)}`;
const out = recipe(
ingredient(recipe$1.input),
ingredient(id),
Math.max(1, recipe$1.turns),
recipe$1.bonus && bonus(recipe$1.bonus.primary),
recipe$1.bonus?.secondary && bonus(recipe$1.bonus.secondary)
);
return `mods.appeng.Grinder.addRecipe(${out});`;
};
const removeGrinder = (id) => `mods.appeng.Grinder.removeRecipe(${id});`;
const addInscriber = (id, recipe$1) => {
const out = recipe(
[recipe$1.center],
recipe$1.top,
recipe$1.bottom ?? null,
ingredient(id),
literal(capitalise(recipe$1.type))
);
return `mods.appeng.Inscriber.addRecipe(${out});`;
};
const removeInscriber = (id) => `mods.appeng.Inscriber.removeRecipe(${id});`;
const addCompressor = (id, recipe$1) => {
const out = recipe(
id,
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 = (ingredient$1, recipe$1) => {
const out = recipe(
ingredient(ingredient$1),
recipe$1.map((row) => array(9)(row.map(id)))
);
return `mods.avaritia.ExtremeCrafting.addShaped(${out});`;
};
const removeExtreme = (id) => `mods.avaritia.ExtremeCrafting.remove(${id});`;
const createBlock = (name, recipe$1) => {
const out = recipe(
literal(name),
literal(recipe$1.id),
literal(recipe$1.material),
typeof recipe$1.texture === "string" ? literal(recipe$1.texture) : literal(recipe$1.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 = (name, recipe$1) => {
const out = recipe(
literal(name),
literal(recipe$1.id),
typeof recipe$1.texture === "string" ? literal(recipe$1.texture) : literal(recipe$1.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 = (material, recipe$1) => {
const out = recipe(
literal(material),
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 = (id, recipe$1) => {
const out = recipe(
id,
clamp(0, 1, recipe$1.n),
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 = (liquid, id) => {
const out = recipe(id, stack(liquid));
return `mods.exnihilo.Crucible.addRecipe(${out});`;
};
const removeCrucible = (id) => `mods.exnihilo.Crucible.removeRecipe(${id});`;
const addCrucibleFuel = (id, n) => {
const out = recipe(id, n);
return `mods.exnihilo.Crucible.addHeatSource(${out});`;
};
const removeCrucibleFuel = (id) => `mods.exnihilo.Crucible.removeHeatSource(${id});`;
const addHammer = (id, recipe$1) => {
const items = Object.entries(recipe$1).map((entry) => ({
id: entry[0],
chance: object(entry[1]) ? entry[1].n : entry[1],
modifier: object(entry[1]) ? entry[1].modifier : 0
})).flat();
const out = recipe(
id,
items.map((item) => item.id),
items.map((item) => item.chance),
items.map((item) => item.modifier)
);
return `mods.exnihilo.Hammer.addRecipe(${out});`;
};
const removeHammer = (id) => `mods.exnihilo.Hammer.removeRecipe(${id});`;
const addSieve = (id, recipe$1) => {
const items = Object.entries(recipe$1).map((entry) => Array.from({ length: Math.ceil(entry[1]) }).map((_, i) => ({
id: entry[0],
chance: entry[1] - i < 1 ? Math.round(1 / (entry[1] - i)) : 1
}))).flat();
const out = recipe(
id,
items.map((item) => item.id),
array(9)(items.map((item) => item.chance))
);
return `mods.exnihilo.Sieve.addRecipe(${out});`;
};
const removeSieve = (id) => `mods.exnihilo.Sieve.removeRecipe(${id});`;
const addQED = (ingredient$1, recipe$1) => {
const out = recipe(
ingredient(ingredient$1),
shaped(recipe$1)
);
return `mods.extraUtils.QED.addShapedRecipe(${out});`;
};
const removeQED = (id) => `mods.extraUtils.QED.removeRecipe(${id});`;
const addCarpenter = (id, recipe$1) => {
const out = recipe(
ingredient(id),
shaped(recipe$1.recipe),
recipe$1.liquid && stack(recipe$1.liquid),
Math.max(1, Math.round(recipe$1.ticks)),
recipe$1.top
);
return `mods.forestry.Carpenter.addRecipe(${out});`;
};
const removeCarpenter = (id, liquid) => `mods.forestry.Carpenter.removeRecipe(${recipe(id, liquid)});`;
const addCentrifuge = (id, recipe$1) => {
const out = recipe(
Object.entries(recipe$1.out).map(([id2, chance]) => bonus$1({ id: id2, chance })),
id,
recipe$1.ticks
);
return `mods.forestry.Centrifuge.addRecipe(${out});`;
};
const removeCentrifuge = (id) => `mods.forestry.Centrifuge.removeRecipe(${id});`;
const addFermenter = (liquid, recipe$1) => {
const out = recipe(
liquid.id,
recipe$1.catalyst,
recipe$1.liquid.id,
recipe$1.liquid.n,
liquid.n / recipe$1.liquid.n
);
return `mods.forestry.Fermenter.addRecipe(${out});`;
};
const removeFermenter = (id) => `mods.forestry.Fermenter.removeRecipe(${id});`;
const addFermenterFuel = (id, recipe$1) => {
const out = recipe(
id,
recipe$1.cycles,
recipe$1.burn
);
return `mods.forestry.Fermenter.addFuel(${out});`;
};
const removeFermenterFuel = (id) => `mods.forestry.Fermenter.removeFuel(${id});`;
const addMoistener = (id, recipe$1) => {
const out = recipe(
id,
recipe$1.input,
recipe$1.ticks
);
return `mods.forestry.Moistener.addRecipe(${out});`;
};
const removeMoistener = (id) => `mods.forestry.Moistener.removeRecipe(${id});`;
const addSqueezer = (liquid, recipe$1) => {
const out = recipe(
stack(liquid),
bonus$1(recipe$1.bonus),
recipe$1.input.map(ingredient),
recipe$1.ticks
);
return `mods.forestry.Squeezer.addRecipe(${out});`;
};
const removeSqueezer = (id, recipe$1) => `mods.forestry.Squeezer.removeRecipe(${recipe(id, recipe$1)});`;
const addStill = (liquid, recipe$1) => {
const out = recipe(
stack(liquid),
stack(recipe$1.liquid),
recipe$1.ticks
);
return `mods.forestry.Still.addRecipe(${out});`;
};
const removeStill = (liquid, recipe$1) => `mods.forestry.Still.removeRecipe(${recipe(liquid, recipe$1)});`;
const addFabricator = (id, recipe$1) => {
const out = recipe(
id,
shaped(recipe$1.recipe),
recipe$1.n,
recipe$1.cast
);
return `mods.forestry.ThermionicFabricator.addCast(${out});`;
};
const removeFabricator = (id) => `mods.forestry.ThermionicFabricator.removeCast(${id});`;
const addFabricatorGlass = (id, recipe$1) => {
const out = recipe(
recipe$1.n,
id,
recipe$1.temp
);
return `mods.forestry.ThermionicFabricator.addSmelting(${out});`;
};
const removeFabricatorGlass = (id) => `mods.forestry.ThermionicFabricator.removeSmelting(${id});`;
const addChestLoot = (id, recipe$1) => {
const out = recipe(
literal(recipe$1.chest),
id,
recipe$1.chance,
recipe$1.n
);
return `vanilla.loot.addChestLoot(${out});`;
};
const removeChestLoot = (id, chest) => `vanilla.loot.removeChestLoot(${recipe(literal(chest), id)});`;
const addSeed = (id) => `vanilla.seeds.addSeed(${id});`;
const removeSeed = (id) => `vanilla.seeds.removeSeed(${id});`;
const addShaped = (item, recipe$1) => {
const out = recipe(
ingredient(item),
shaped(recipe$1)
);
return `recipes.addShaped(${out});`;
};
const removeShaped = (id, recipe$1) => {
const out = recipe(
id,
recipe$1 && shaped(recipe$1)
);
return `recipes.removeShaped(${out});`;
};
const addShapeless = (item, recipe$1) => {
const out = recipe(
ingredient(item),
array(3)(recipe$1)
);
return `recipes.addShapeless(${out});`;
};
const removeShapeless = (id, recipe$1) => {
const out = recipe(
id,
recipe$1 && array(3)(recipe$1)
);
return `recipes.removeShapeless(${out});`;
};
const add = (item, recipe) => {
if (Array.isArray(recipe)) return addShapeless(item, recipe);
return addShaped(item, recipe);
};
const remove = (id) => `recipes.remove(${id});`;
const addMirror = (item, recipe$1) => {
const out = recipe(
ingredient(item),
shaped(recipe$1)
);
return `recipes.addShapedMirrored(${out});`;
};
const addFurnace = (id, recipe$1) => `furnace.addRecipe(${recipe(id, recipe$1.input, recipe$1.xp)});`;
const removeFurnace = (id, recipe$1) => {
if (typeof recipe$1 === "string") return `furnace.remove(${recipe(id, recipe$1)});`;
return `furnace.remove(${recipe(id)});`;
};
const addFurnaceFuel = (id, n) => `furnace.setFuel(${recipe(id, n)});`;
const removeFurnaceFuel = (id) => addFurnaceFuel(id, 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 = (id, recipe$1) => {
const out = recipe(
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, weight$1) => {
const out = recipe(weight(weight$1)(id));
return `mods.mfr.MiningLaser.addOre(${out});`;
};
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 = (id, recipe) => [
addLaserOre(id, recipe.weight),
addLaserFoci(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) => {
const out = recipe(weight(weight$1)(id));
return `mods.mfr.SludgeBoiler.addDrop(${out});`;
};
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 withName = (name$1) => (id) => `${id}.displayName = ${name(name$1)};`;
const withTag = (tag) => (id) => {
return `${id}.withTag(${util.inspect(tag).replace(/(:\s?)'([^']+)'/gm, '$1"$2"')})`;
};
const ENCHANTMENTS = {
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 });
const withTooltip = (...tooltip$1) => (id) => `${id}.addTooltip(${tooltip(...tooltip$1)});`;
const withTooltipShift = (...tooltip$1) => (id) => `${id}.addShiftTooltip(${tooltip(...tooltip$1)});`;
const bonus = (bonus2) => bonus2 ? [
bonus2.id,
Math.round(bonus2.chance * 100)
] : [];
const addMagmaCrucible = (liquid, recipe$1) => {
const out = recipe(
recipe$1.rf,
recipe$1.input,
stack(liquid)
);
return `mods.thermalexpansion.Crucible.addRecipe(${out});`;
};
const removeMagmaCrucible = (id) => `mods.thermalexpansion.Crucible.removeRecipe(${id});`;
const addRedstoneFurnace = (item, recipe$1) => {
const out = recipe(
recipe$1.rf,
recipe$1.input,
ingredient(item)
);
return `mods.thermalexpansion.Furnace.addRecipe(${out});`;
};
const removeRedstoneFurnace = (id) => `mods.thermalexpansion.Furnace.removeRecipe(${id});`;
const addInsolator = (item, recipe$1) => {
const out = recipe(
recipe$1.rf,
ingredient(recipe$1.input.left),
ingredient(recipe$1.input.right),
ingredient(item),
...bonus(recipe$1.bonus)
);
return `mods.thermalexpansion.Insolator.addRecipe(${out});`;
};
const removeInsolator = (input) => `mods.thermalexpansion.Insolator.removeRecipe(${recipe(input.left, input.right)});`;
const addPulverizer = (item, recipe$1) => {
const out = recipe(
recipe$1.rf,
recipe$1.input,
ingredient(item),
...bonus(recipe$1.bonus)
);
return `mods.thermalexpansion.Pulverizer.addRecipe(${out});`;
};
const removePulverizer = (id) => `mods.thermalexpansion.Pulverizer.removeRecipe(${id});`;
const addSawmill = (item, recipe$1) => {
const out = recipe(
recipe$1.rf,
recipe$1.input,
ingredient(item),
...bonus(recipe$1.bonus)
);
return `mods.thermalexpansion.Sawmill.addRecipe(${out});`;
};
const removeSawmill = (id) => `mods.thermalexpansion.Sawmill.removeRecipe(${id});`;
const addInductionSmelter = (item, recipe$1) => {
const out = recipe(
recipe$1.rf,
ingredient(recipe$1.input[1]),
ingredient(recipe$1.input[0]),
ingredient(item),
...bonus(recipe$1.bonus)
);
return `mods.thermalexpansion.Smelter.addRecipe(${out});`;
};
const removeInductionSmelter = (input) => `mods.thermalexpansion.Smelter.removeRecipe(${recipe(input.left, input.right)});`;
const addTransposerFill = (item, recipe$1) => {
const out = recipe(
recipe$1.rf,
recipe$1.input,
ingredient(item),
stack(recipe$1.liquid)
);
return `mods.thermalexpansion.Transposer.addFillRecipe(${out});`;
};
const removeTransposerFill = (input) => `mods.thermalexpansion.Transposer.removeFillRecipe(${recipe(input.id, input.liquid)});`;
const addTransposerExtract = (liquid, recipe$1) => {
const out = recipe(
recipe$1.rf,
recipe$1.input,
stack(liquid),
...bonus(recipe$1.bonus)
);
return `mods.thermalexpansion.Transposer.addExtractRecipe(${out});`;
};
const removeTransposerExtract = (id) => `mods.thermalexpansion.Transposer.removeExtractRecipe(${id});`;
const addCastingBasin = (id, recipe$1) => {
const out = recipe(
id,
stack(recipe$1.liquid),
...cast(recipe$1.cast),
recipe$1.ticks
);
return `mods.tconstruct.Casting.addBasinRecipe(${out});`;
};
const removeCastingBasin = (id) => `mods.tconstruct.Casting.removeBasinRecipe(${id});`;
const addCastingTable = (id, recipe$1) => {
const out = recipe(
id,
stack(recipe$1.liquid),
...cast(recipe$1.cast),
recipe$1.ticks
);
return `mods.tconstruct.Casting.addTableRecipe(${out});`;
};
const removeCastingTable = (id) => `mods.tconstruct.Casting.removeTableRecipe(${id});`;
const addDryingRack = (id, recipe$1) => {
const out = recipe(
recipe$1.input,
id,
recipe$1.ticks
);
return `mods.tconstruct.Drying.addRecipe(${out});`;
};
const removeDryingRack = (id) => `mods.tconstruct.Drying.removeRecipe(${id});`;
const MODIFIERS = {
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 = (liquid, recipe$1) => {
const out = recipe(
recipe$1.input,
stack(liquid),
recipe$1.temperature,
recipe$1.render
);
return `mods.tconstruct.Smeltery.addMelting(${out});`;
};
const removeSmelteryFluid = (id) => `mods.tconstruct.Smeltery.removeMelting(${id});`;
const addSmelteryAlloy = (alloy, recipe$1) => {
const out = recipe(
stack(alloy),
recipe$1.map(stack)
);
return `mods.tconstruct.Smeltery.addAlloy(${out});`;
};
const removeSmelteryAlloy = (id) => `mods.tconstruct.Smeltery.removeAlloy(${id});`;
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 MATERIALS = {
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 = (material, recipe$1) => {
const out = recipe(
literal(material),
literal(recipe$1.name),
recipe$1.level,
recipe$1.durability,
recipe$1.speed * 100,
recipe$1.damage,
recipe$1.modifier,
typeof recipe$1.reinforced === "number" ? recipe$1.reinforced : 0,
typeof recipe$1.stonebound === "number" ? recipe$1.stonebound : 0,
literal(recipe$1.color.name),
recipe$1.color.tool
);
return `mods.tconstruct.ToolStats.setStats(${out});`;
};
const setMaterialName = (material, name) => {
const out = recipe(
literal(material),
literal(name)
);
return `mods.tconstruct.ToolStats.setDisplayName(${out});`;
};
const setMaterialMiningLevel = (material, n) => {
const out = recipe(literal(material), n);
return `mods.tconstruct.ToolStats.setHarvestLevel(${out});`;
};
const setMaterialDurability = (material, n) => {
const out = recipe(literal(material), n);
return `mods.tconstruct.ToolStats.setDurability(${out});`;
};
const setMaterialSpeed = (material, n) => {
const out = recipe(literal(material), n * 100);
return `mods.tconstruct.ToolStats.setSpeed(${out});`;
};
const setMaterialDamage = (material, n) => {
const out = recipe(literal(material), n);
return `mods.tconstruct.ToolStats.setDamage(${out});`;
};
const setMaterialHandleModifier = (material, n) => {
const out = recipe(literal(material), n);
return `mods.tconstruct.ToolStats.setHandleModifier(${out});`;
};
const setMaterialReinforcedLevel = (material, n) => {
const out = recipe(literal(material), 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 = (material, recipe$1) => {
const out = recipe(
literal(material),
recipe$1.durability,
recipe$1.drawSpeed,
float(recipe$1.flightSpeed)
);
return `mods.tconstruct.ToolStats.setBowStats(${out});`;
};
const setBowMaterialDurability = (material, durability) => {
const out = recipe(literal(material), durability);
return `mods.tconstruct.ToolStats.setBowDurability(${out});`;
};
const setBowMaterialDrawspeed = (material, drawspeed) => {
const out = recipe(literal(material), drawspeed);
return `mods.tconstruct.ToolStats.setBowDrawspeed(${out});`;
};
const setBowMaterialFlightSpeed = (material, flightSpeed) => {
const out = recipe(
literal(material),
float(flightSpeed)
);
return `mods.tconstruct.ToolStats.setBowFlightSpeed(${out});`;
};
const setArrowStats = (material, recipe$1) => {
const out = recipe(
literal(material),
float(recipe$1.mass),
float(recipe$1.breakChance),
float(recipe$1.accuracy)
);
return `mods.tconstruct.ToolStats.setArrowStats(${out});`;
};
const setArrowMass = (material, mass) => {
const out = recipe(
literal(material),
float(mass)
);
return `mods.tconstruct.ToolStats.setArrowMass(${out});`;
};
const setArrowBreakChance = (material, breakChance) => {
const out = recipe(
literal(material),
float(breakChance)
);
return `mods.tconstruct.ToolStats.setArrowBreakChance(${out});`;
};
const setArrowAccuracy = (material, accuracy) => {
const out = recipe(
literal(material),
float(accuracy)
);
return `mods.tconstruct.TooLStats.setArrowAccuracy(${out});`;
};
export { COLOR, ENCHANTMENTS, FOCI, HARVESTER_TYPE, MATERIALS, MODIFIERS, STYLE, add, addBiomeRubberTree, addBlacklistAutospawner, addCarpenter, addCastingBasin, addCastingTable, addCentrifuge, addChestLoot, addComposter, addCompressor, addCrucible, addCrucibleFuel, addDryingRack, addExtreme, addFabricator, addFabricatorGlass, addFermenter, addFermenterFuel, addFurnace, addFurnaceFuel, addGrinder, addHammer, addHarvester, addInductionSmelter, addInscriber, addInsolator, addLaser, addLaserFoci, addLaserOre, addMagmaCrucible, addMirror, addMoistener, addOreDict, addPlanter, addPulverizer, addQED, addRedstoneFurnace, addRepairMaterial, addSawmill, addSeed, addShaped, addShapeless, addSieve, addSludgeBoiler, addSmelteryAlloy, addSmelteryFluid, addSmelteryFuel, addSqueezer, addStill, addTransposerExtract, addTransposerFill, createBlock, createItem, createLiquid, createMaterial, hide, joinOreDict, mirrorOreDict, remove, removeBiomeRubberTree, removeBlacklistAutospawner, removeCarpenter, removeCastingBasin, removeCastingTable, removeCentrifuge, removeChestLoot, removeComposter, removeCompressor, removeCrucible, removeCrucibleFuel, removeDryingRack, removeExtreme, removeFabricator, removeFabricatorGlass, removeFermenter, removeFermenterFuel, removeFurnace, removeFurnaceFuel, removeGrinder, removeHammer, removeInductionSmelter, removeInscriber, removeInsolator, removeLaserFoci, removeLaserOre, removeMagmaCrucible, removeModifier, removeMoistener, removeOreDict, removePulverizer, removeQED, removeRedstoneFurnace, removeRepairMaterial, removeSawmill, removeSeed, removeShaped, removeShapeless, removeSieve, removeSludgeBoiler, removeSmelteryAlloy, removeSmelteryFluid, removeSmelteryFuel, removeSqueezer, removeStill, removeTransposerExtract, removeTransposerFill, rename, setArrowAccuracy, setArrowBreakChance, setArrowMass, setArrowStats, setBowMaterialDrawspeed, setBowMaterialDurability, setBowMaterialFlightSpeed, setBowMaterialStats, setMaterialDamage, setMaterialDurability, setMaterialHandleModifier, setMaterialLevelStonebound, setMaterialMiningLevel, setMaterialName, setMaterialReinforcedLevel, setMaterialSpeed, setMaterialStats, setMaterialStyle, show, withEnchantment, withName, withTag, withTooltip, withTooltipShift };