Ex Deorum is great. Scripting it is not — until now.
Ex Deorum KJS replaces that with a complete implementation and adds the twelve recipe types that were never exposed, then goes further and lets you register new Ex Deorum content from a script.
All thirteen, from a server script:
sieve · compressed_sieve · hammer · compressed_hammer · crook · crucible_heat_source · lava_crucible · water_crucible · barrel_compost · barrel_mixing · barrel_fluid_mixing · barrel_fluid_transformation · ore_chunk
ServerEvents.recipes(event => {
event.recipes.exdeorum.sieve('minecraft:prismarine_shard', 'minecraft:clay', 'exdeorum:string_mesh')
.binomial(3, 0.2)
event.recipes.exdeorum.crucible_heat_source('minecraft:furnace', 4).lit(true)
event.recipes.exdeorum.barrel_mixing('minecraft:calcite', 'minecraft:bone_meal', Fluid.of('minecraft:water', 1000))
})
No more hand-writing loot number providers or block state predicates. Chain what you mean:
.constant(4) — always 4.chance(0.25) — one roll at 25%.uniform(1, 3) — a flat roll between 1 and 3.binomial(9, 0.12) — 9 rolls at 12% each.lit(true), .axis('y'), .state('distance', 1) — pin a block predicate to a stateNine targets, one event:
ExDeorumEvents.registry('sieve', event => {
event.create('obsidian')
.soundType('stone').strength(4.0).needsCorrectTool(true).mineableWith('pickaxe')
.craftedFrom('minecraft:obsidian', 'minecraft:polished_blackstone_slab')
})
ExDeorumEvents.registry('mesh', event => {
event.create('copper_mesh').material('#c:ingots/copper')
})
Blocks: sieve, compressed_sieve, barrel, lava_crucible, water_crucible
Items: mesh, hammer, compressed_hammer, ore_chunk
One create(...) call gives you the block or item plus:
mineable/ tag entry, so "needs the correct tool" actually worksNew meshes go into #exdeorum:sieve_meshes and are enchantable with Efficiency and Fortune. New hammers go into #exdeorum:hammers and mine what a hammer mines. Ore chunks derive their ore tag from their own name and carry the same "only if the tag has something in it" condition Ex Deorum puts on its own.
You still supply block textures and models — Ex Deorum's own templates do the shaping, so it is a blockstate and a two-line model each. A complete worked example for all five block types ships with the addon.
Available for 1.21.1 and 26.1.2, NeoForge.
Every recipe type and every builder method is documented with a working example in wiki in the repository, along with a ready-to-run example script covering all thirteen recipe types and all nine registry targets.