Loot Table Event 
This event allows you to modify loot tables directly. To read more about the differences between the two main events, check out the event difference page.
The event fires after other mods inject their loot changes into vanilla tables allowing you to remove or update them.
Loot Tables 
getLootTableIds 
Returns an array of all available loot table ids. Can optionally be filtered.
- Syntax: 
getLootTableIds()getLootTableIds(filter: string | regex)
 
LootJS.lootTables(event => {
    let ids = event.getLootTableIds()
})LootJS.lootTables(event => {
    let ids = event.getLootTableIds(/.*chests\/.*/)
})getLootTable 
Returns a loot table by the given id or null if no loot table is found.
- Syntax: 
getLootTable(id: string)
 
LootJS.lootTables(event => {
    let table = event.getLootTable("minecraft:chests/simple_dungeon")
})hasLootTable 
Returns whether the loot table with the given id exists.
- Syntax: 
hasLootTable(id: string)
 
LootJS.lootTables(event => {
    let exists = event.hasLootTable("minecraft:chests/simple_dungeon")
})clearLootTables 
Clears all loot tables matching the given filter.
Alternatively, you can call .clear() directly on the loot table object obtained from getLootTable.
- Syntax: 
clearLootTables(filter: string | regex)
 
LootJS.lootTables(event => {
    event.clearLootTables(/.*chests.*/)
})create 
Creates a new loot table.
- Syntax: 
create(id: string, type?: LootType), defaults toLootType.CHESTif not provided
 
LootJS.lootTables(event => {
    event.create("lootjs:table1", LootType.ENTITY).createPool(pool => {
        // edit the pool
    })
    // uses default type
    event.create("lootjs:table2").createPool(pool => {
        // edit the pool
    })
})modifyLootTables 
Returns all loot tables matching the given filters as a compound. The compound allows you to modify all loot tables at once.
Alternatively, you can filter by loot table type. Loot table types are defined under the type key within the table JSON. As an example, the loot table minecraft:blocks/bricks in the JSON below uses block as its type in line 2.
{
    "type": "minecraft:block", 
    "pools": [
        {
            // ...
        }
    ],
    "random_sequence": "minecraft:blocks/bricks"
}- Syntax: 
modifyLootTables(filter: LootTableFilter | LootTableFilter[])
 
A LootTableFilter can be a string, regex, or a LootType.
enum LootType {
    CHEST,
    BLOCK,
    ENTITY,
    EQUIPMENT,
    FISHING,
    ARCHAEOLOGY,
    GIFT,
    VAULT,
    SHEARING,
    PIGLIN_BARTER,
}LootJS.lootTables(event => {
    event.modifyLootTables(/.*chests\/.*/).createPool(pool => {
        // edit the pool
    })
    event.modifyLootTables(LootType.CHEST).createPool(pool => {
        // edit the pool
    })
})LootJS.lootTables(event => {
    event.modifyLootTables(LootType.CHEST, "minecraft:gameplay/fishing").createPool(pool => {
        // edit the pool
    })
    event.modifyLootTables(LootType.CHEST, LootType.ENTITY).createPool(pool => {
        // edit the pool
    })
})Block Loot Tables 
getBlockTable 
Returns a loot table for the given block or null if no loot table is found.
- Syntax: 
getBlockTable(block: string | Block)
 
LootJS.lootTables(event => {
    let table = event.getBlockTable("minecraft:diamond_ore")
})modifyBlockTables 
Returns all loot tables matching the given blocks as a compound. The compound allows you to modify all loot tables at once.
IMPORTANT
Because of the load order of Minecraft since 1.21, loot tables are loaded before tags exist. It's not possible to use modifyBlockTables with a tag.
If you need to modify by tags, consider using the loot modifier event.
- Syntax: 
modifyBlockTables(filter: string | string[] | Block | Block[])
 
LootJS.lootTables(event => {
    event.modifyBlockTables("minecraft:diamond_ore").createPool(pool => {
        // edit the pool
    })
})LootJS.lootTables(event => {
    event.modifyBlockTables("minecraft:diamond_ore", "minecraft:emerald_ore").createPool(pool => {
        // edit the pool
    })
})Entity Loot Tables 
getEntityTable 
Returns a loot table for the given entity or null if no loot table is found.
- Syntax: 
getEntityTable(entity: string | EntityType)
 
LootJS.lootTables(event => {
    let table = event.getEntityTable("minecraft:sheep")
})modifyEntityTables 
Returns all loot tables matching the given entities as a compound. The compound allows you to modify all loot tables at once.
IMPORTANT
Because of the load order of Minecraft since 1.21, loot tables are loaded before tags exist. It's not possible to use modifyEntityTables with a tag.
If you need to modify by tags, consider using the loot modifier event.
- Syntax: 
modifyEntityTables(filter: string | string[] | EntityType | EntityType[])
 
LootJS.lootTables(event => {
    event.modifyEntityTables("minecraft:sheep").createPool(pool => {
        // edit the pool
    })
})LootJS.lootTables(event => {
    event.modifyEntityTables("minecraft:sheep", "minecraft:pig").createPool(pool => {
        // edit the pool
    })
})