Just drop the file read_json_from_mod.js (on Gist link at the bottom) at startup_scripts and use like below:
at client_scripts:
ClientEvents.highPriorityAssets(event => {
let json = global.readJsonFileFromMod("assets", "minecraft", "minecraft:blockstates/acacia_button.json")
console.log(JsonIO.toPrettyString(json))
let json2 = global.readJsonFileFromMod("assets", "create", "create:models/entity/crafting_blueprint_large.json")
console.log(JsonIO.toPrettyString(json2))
let json3 = global.readJsonFileFromMod("assets", "create", "create:blockstates/analog_lever.json")
console.log(JsonIO.toPrettyString(json3))
let jsonFolder = global.readJsonFolderFromMod("assets", "bloodmagic", "schematics")
console.log(jsonFolder)
let jsonFolder2 = global.readJsonFolderFromMod("assets", "bloodmagic", "schematics/room_pools", (rl => rl.path.contains("dungeon")))
console.log(jsonFolder2)
})
at server_scripts: (works for low/highPriorityData)
ServerEvents.highPriorityData(event => {
let json = global.readJsonFileFromMod("data", "bloodmagic", "bloodmagic:living_armor/fire_resist.json")
console.log(JsonIO.toPrettyString(json))
let json2 = global.readJsonFileFromMod("data", "bloodmagic", "forge:loot_modifiers/global_loot_modifiers.json")
console.log(JsonIO.toPrettyString(json2))
let json3 = global.readJsonFileFromMod("data", "minecraft", "minecraft:trim_material/copper.json")
console.log(JsonIO.toPrettyString(json3))
let jsonFolder = global.readJsonFolderFromMod("data", "minecraft", "trim_material")
console.log(jsonFolder)
let jsonFolder2 = global.readJsonFolderFromMod("data", "minecraft", "trim_material", (rl => rl.path.contains("redstone")))
console.log(jsonFolder2)
})
This is great for when you need to add dynamic custom datapack files that depends on some mod files.
https://gist.github.com/pietro-lopes/1471e43c6acef411fd98f10908185fae



