AStages
scripts/gen_schema_pages.py instead.AStages “Simple Restrictions” schema (1.20.1), pkl4mc dialect.
AStages’ real gating engine (item/recipe/mob/ore/crop/dimension/effect/enchant/loot/pet/ region/screen/structure restrictions) is populated entirely at runtime through its Java API, authored via KubeJS startup scripts (it mixes into KubeJS’s own ScriptManager reload), there is no static JSON format for it, so it’s out of scope for a JSON-emitting tool.
“Simple Restrictions” is the one part of AStages that IS static JSON: a config-folder-driven shorthand (10 built-in kinds) that internally maps to the same engine. Not vanilla datapack content either, place rendered output at config/astages/simple_restrictions/astages/<kind>.json (fixed filenames below, one array per kind, no “name” field, pick output().files keys accordingly).
Each entry’s id is stored as "simple/<id>" internally (that prefix is stripped by AStages itself when matching commands), this schema adds it for you, just write the plain id.
Usage
amends "@pkl4mc/astages_simple_restrictions.pkl"Example
simple_restrictions
// AStages Simple Restrictions - one example per kind.
// Output goes to config/astages/simple_restrictions/astages/<kind>.json, not a datapack path.
amends "@pkl4mc/astages_simple_restrictions.pkl"
item {
new { id = "no_diamond"; stage = "early_game"; item = "minecraft:diamond" }
}
mod {
new { id = "no_ae2"; stage = "early_game"; mod = "ae2" }
}
dimension {
new { id = "no_end"; stage = "early_game"; dimension = "minecraft:the_end" }
}
gui {
new { id = "no_ender_chest"; stage = "early_game"; gui = "minecraft:generic_9x3" }
}
ore {
new {
id = "hide_diamond_ore"
stage = "early_game"
original = "minecraft:diamond_ore"
replacement = "minecraft:stone"
affectsPlayerActions = true
}
}
structure {
new { id = "no_stronghold"; stage = "early_game"; structure = "minecraft:stronghold" }
}
tame {
new { id = "no_wolf_taming"; stage = "early_game"; entity = "minecraft:wolf" }
}
mount {
new { id = "no_horse_riding"; stage = "early_game"; entity = "minecraft:horse" }
}
recipe {
new {
id = "no_beacon"
stage = "early_game"
recipeType = "minecraft:crafting"
recipe = "minecraft:beacon"
}
}
armor {
new { id = "no_netherite_armor"; stage = "early_game"; item = "minecraft:netherite_chestplate" }
}