Skip to content

For pack makers

The kilns have no recipe list in their code. Everything they make comes from one recipe type, slowlight:ageing, so a datapack or a KubeJS script can add, change or remove any of it.

The recipe

{
  "type": "slowlight:ageing",
  "ingredient": { "item": "minecraft:honey_bottle" },
  "result": { "id": "slowlight:mead", "count": 1 },
  "days": 2
}

Drop it into data/<your pack>/recipe/ and every kiln can make it. days counts on the world's game time (24000 ticks to a day), so a slept night doesn't cheat the wait, and nothing is lost while the chunk is unloaded.

Two fields are optional:

  • long_days: the Long Kiln's own wait for a whole stack. Without it the Long Kiln takes days × 3. (The Ember Kiln always takes half of days.)
  • condition: the days count only while it holds. Every part of it is optional:
Field Values Notes
sky open, covered open sky above the kiln, or a roof over it
weather clear, rain, thunder rain and thunder count only where rain actually falls on the kiln
time day, night
dimension a dimension id, such as minecraft:the_nether see below
"condition": { "sky": "open", "time": "night" }

dimension works differently from the rest: a recipe that names one only exists in that dimension, and there it comes before a recipe for the same item that names none. That's how cobblestone turns mossy in the Overworld but to blackstone in the Nether.

To take a recipe away, override its file with your own (Slowlight's are in data/slowlight/recipe/ageing/), or remove it with KubeJS.

KubeJS

Two ways work, and neither needs anything from Slowlight beyond the mod itself:

// Works because the recipe type has a codec. No schema needed.
ServerEvents.recipes(event => {
  event.custom({
    type: 'slowlight:ageing',
    ingredient: { item: 'minecraft:rotten_flesh' },
    result: { id: 'minecraft:leather' },
    days: 3
  })
  event.remove({ type: 'slowlight:ageing', output: 'slowlight:mead' })
})
// Works because a recipe schema ships as a data file
// (data/slowlight/kubejs/recipe_schema/ageing.json).
ServerEvents.recipes(event => {
  event.recipes.slowlight.ageing('4x minecraft:bone_meal', 'minecraft:rotten_flesh', 2)
})

The schema is a data file, not a plugin, so Slowlight has no compile-time dependency on KubeJS and nothing goes wrong when it isn't installed.

On other versions

  • 1.20.1: recipes go in data/<your pack>/recipes/ (plural), and results are written {"item": ..., "count": ...} (Slowlight's ageing recipes accept "id" too). KubeJS 6 has no recipe schemas, so only event.custom and event.remove work; event.recipes.slowlight.ageing doesn't exist there.
  • 26.1.2, 26.2, 26.3: ingredients can be a plain item id. There's no KubeJS build for 26.2 or 26.3 yet.

See Versions for everything else that differs.

Tags

  • #slowlight:pressable: what the Flower Press takes. It includes #minecraft:flowers and #c:flowers, so most modded flowers already work; add to it for anything else.