// Priority: 1
/**
 * ════════════════════════════════════════════════════════════════
 *
 *                   █████╗  ██████╗ ███████╗
 *                  ██╔══██╗██╔═══██╗██╔════╝
 *                  ███████║██║   ██║█████╗
 *                  ██╔══██║██║   ██║██╔══╝
 *                  ██║  ██║╚██████╔╝██║
 *                  ╚═╝  ╚═╝ ╚═════╝ ╚═╝
 *
 *                       Age of Fate
 *                   A Minecraft Modpack
 *                      By KnightDexx
 * ════════════════════════════════════════════════════════════════
 *
 * ┌─────────────────────────────────────────────────────────┐
 * │             CHEST LOOT BALANCE SYSTEM                   │
 * ├─────────────────────────────────────────────────────────┤
 * │ @file        02_chest_balance.js                        │
 * │ @copyright   KnightDexx's Modded Minecraft World        │
 * │ @modpack     Age of Fate (AOF)                          │
 * │ @version     1.0                                        │
 * │                                                          │
 * │ PORTED: 1.20.1 → 1.21.1 NeoForge                       │
 * │                                                          │
 * │ BREAKING CHANGES FIXED:                                  │
 * │   • LootJS API overhaul in 1.21:                        │
 * │     OLD: event.addLootTableModifier(filter)             │
 * │     NEW: event.addTableModifier(filter)                 │
 * │   • HOTFIX: global.AOF_LOOT is undefined inside         │
 * │     LootJS.modifiers() because LootJS fires its event   │
 * │     after normal script globals are set. Config is now  │
 * │     defined locally in this file to avoid timing issue. │
 * └─────────────────────────────────────────────────────────┘
 *
**/

// ═══════════════════════════════════════════════════════════
// LOCAL CONFIG (self-contained — no global dependency)
// LootJS.modifiers() fires at a different time than script
// load order, so global.AOF_LOOT is not reliably available.
// ═══════════════════════════════════════════════════════════

const CHEST_CONFIG = {
  ENABLED: true, // Set to false to disable chest loot nerfs

  BLACKLIST: {
    MODS: [
      'allthemodium',
      'allthecompressed'
    ],
    ITEMS: [
      'minecraft:enchanted_golden_apple',
      'minecraft:netherite_ingot',
      'minecraft:netherite_scrap',
      'minecraft:elytra',
      'minecraft:shulker_box'
    ],
    PATTERNS: [
      /.*:.*_pickaxe/,
      /.*:.*_axe/,
      /.*:.*_shovel/,
      /.*:.*_hoe/,
      /.*:.*_sword/,
      /.*:.*_helmet/,
      /.*:.*_chestplate/,
      /.*:.*_leggings/,
      /.*:.*_boots/
    ]
  }
}

// ═══════════════════════════════════════════════════════════
// CHEST LOOT BALANCE - REMOVE OP ITEMS
// ═══════════════════════════════════════════════════════════

LootJS.modifiers((event) => {

  if (!CHEST_CONFIG.ENABLED) {
    console.info('[AOF] Chest Balance: DISABLED (skipping)')
    return
  }

  console.info('═══════════════════════════════════════════════════════')
  console.info('[AOF] Chest Loot Balance System v1.0')
  console.info('[AOF] Removing OP items from ALL chest loot...')
  console.info('═══════════════════════════════════════════════════════')

  const config = CHEST_CONFIG

  // ───────────────────────────────────────────────────────────
  // REMOVE BLACKLISTED MODS
  // PORTED: addLootTableModifier → modifyLootTables
  // ───────────────────────────────────────────────────────────

  config.BLACKLIST.MODS.forEach(mod => {
    event.addTableModifier(/minecraft:chests\/.*/)
      .removeLoot(new RegExp(`${mod}:.*`))

    event.addTableModifier(/.+:chests\/.*/)
      .removeLoot(new RegExp(`${mod}:.*`))

    console.info(`[AOF] ✓ Removed all items from: ${mod}`)
  })

  // ───────────────────────────────────────────────────────────
  // REMOVE SPECIFIC ITEMS
  // ───────────────────────────────────────────────────────────

  config.BLACKLIST.ITEMS.forEach(item => {
    event.addTableModifier(/minecraft:chests\/.*/)
      .removeLoot(item)

    event.addTableModifier(/.+:chests\/.*/)
      .removeLoot(item)

    console.info(`[AOF] ✓ Removed item: ${item}`)
  })

  // ───────────────────────────────────────────────────────────
  // REMOVE PATTERN-MATCHED ITEMS (Tools/Weapons/Armor)
  // ───────────────────────────────────────────────────────────

  config.BLACKLIST.PATTERNS.forEach(pattern => {
    event.addTableModifier(/minecraft:chests\/.*/)
      .removeLoot(pattern)

    event.addTableModifier(/.+:chests\/.*/)
      .removeLoot(pattern)
  })

  console.info('[AOF] ✓ Removed all tools/weapons/armor patterns')

  console.info('═══════════════════════════════════════════════════════')
  console.info('[AOF] Chest Balance Complete!')
  console.info('[AOF] ✓ OP items removed from ALL chests')
  console.info('[AOF] ✓ Players MUST craft progression items')
  console.info('[AOF] ✓ No more free OP gear from looting!')
  console.info('═══════════════════════════════════════════════════════')

})
