// Priority: 1
/**
 * ════════════════════════════════════════════════════════════════
 *
 *                   █████╗  ██████╗ ███████╗
 *                  ██╔══██╗██╔═══██╗██╔════╝
 *                  ███████║██║   ██║█████╗
 *                  ██╔══██║██║   ██║██╔══╝
 *                  ██║  ██║╚██████╔╝██║
 *                  ╚═╝  ╚═╝ ╚═════╝ ╚═╝
 *
 *                       Age of Fate
 *                   A Minecraft Modpack
 *                      By KnightDexx
 * ════════════════════════════════════════════════════════════════
 *
 * ┌─────────────────────────────────────────────────────────┐
 * │             WATER CREATURES DROP SYSTEM                 │
 * ├─────────────────────────────────────────────────────────┤
 * │ @file        07_water_creatures_drops.js                │
 * │ @copyright   KnightDexx's Modded Minecraft World        │
 * │ @modpack     Age of Fate (AOF)                          │
 * │ @version     2.0 - EntityEvents.death Edition           │
 * │                                                          │
 * │ PORTED: 1.20.1 → 1.21.1 NeoForge                       │
 * │ STATUS: No breaking changes.                            │
 * │   EntityEvents.death(), entity.type, entity.block       │
 * │   .popItem(), global state — all unchanged in 1.21.1.   │
 * └─────────────────────────────────────────────────────────┘
 *
**/

console.info('═══════════════════════════════════════════════════════')
console.info('[AOF] Water Creatures Drop System v2.0')
console.info('[AOF] Adding neptunium drops to water creatures...')
console.info('═══════════════════════════════════════════════════════')

// ═══════════════════════════════════════════════════════════
// WATER CREATURES DROP CONFIGURATION
// ═══════════════════════════════════════════════════════════

var WATER_CREATURE_CONFIG = {
  // ───────────────────────────────────────────────────────────
  // TIER 1: BOSS CREATURES
  // ───────────────────────────────────────────────────────────
  BOSS: {
    mobs: [
      'minecraft:elder_guardian',
      'cataclysm:the_leviathan',
      'alexscaves:hullbreaker',
    ],
    drops: [
      { item: 'aquaculture:neptunes_bounty', chance: 1.0,  count: 1 },
      { item: 'aquaculture:neptunium_ingot',  chance: 1.0,  countMin: 3, countMax: 5 },
      { item: 'GEAR_POOL',                    chance: 0.50, count: 1 }
    ]
  },

  // ───────────────────────────────────────────────────────────
  // TIER 2: LARGE WATER MOBS
  // ───────────────────────────────────────────────────────────
  LARGE: {
    mobs: [
      'minecraft:guardian',
      'alexscaves:deep_one',
      'alexscaves:deep_one_knight',
      'alexscaves:deep_one_mage',
      'alexscaves:sea_pig',
      'alexscaves:trilocaris',
      'alexscaves:tripodfish',
      'alexsmobs:cachalot_whale',
      'alexsmobs:giant_squid',
      'alexsmobs:orca',
      'aquaculture:arapaima',
      'aquaculture:tuna',
      'blue_skies:grittle_flatfish',
      'blue_skies:horizofin_tunid',
      'blue_skies:municipal_monkfish',
      'cataclysm:coral_golem',
      'cataclysm:coralssus',
      'cataclysm:deepling',
      'cataclysm:deepling_angler',
      'cataclysm:deepling_brute',
      'cataclysm:deepling_priest',
      'cataclysm:deepling_warlock',
      'cataclysm:the_baby_leviathan',
      'deeperdarker:angler_fish',
    ],
    drops: [
      { item: 'aquaculture:neptunes_bounty', chance: 0.10, count: 1 },
      { item: 'GEAR_POOL',                   chance: 0.05, count: 1 },
      { item: 'aquaculture:neptunium_ingot', chance: 0.10, countMin: 1, countMax: 2 }
    ]
  },

  // ───────────────────────────────────────────────────────────
  // TIER 3: MEDIUM FISH
  // ───────────────────────────────────────────────────────────
  MEDIUM: {
    mobs: [
      'minecraft:cod',
      'minecraft:salmon',
      'minecraft:tropical_fish',
      'minecraft:pufferfish',
      'minecraft:dolphin',
      'alexscaves:lanternfish',
      'alexscaves:radgill',
      'alexscaves:sweetish_fish',
      'alexsmobs:blobfish',
      'alexsmobs:catfish',
      'alexsmobs:comb_jelly',
      'alexsmobs:cosmic_cod',
      'alexsmobs:devils_hole_pupfish',
      'alexsmobs:flying_fish',
      'alexsmobs:frilled_shark',
      'alexsmobs:hammerhead_shark',
      'alexsmobs:lobster',
      'alexsmobs:mantis_shrimp',
      'alexsmobs:mimic_octopus',
      'alexsmobs:mudskipper',
      'alexsmobs:platypus',
      'alexsmobs:seal',
      'alexsmobs:terrapin',
      'aquaculture:atlantic_cod',
      'aquaculture:atlantic_halibut',
      'aquaculture:atlantic_herring',
      'aquaculture:bayad',
      'aquaculture:blackfish',
      'aquaculture:bluegill',
      'aquaculture:boulti',
      'aquaculture:brown_trout',
      'aquaculture:capitaine',
      'aquaculture:carp',
      'aquaculture:catfish',
      'aquaculture:gar',
      'aquaculture:muskellunge',
      'aquaculture:pacific_halibut',
      'aquaculture:perch',
      'aquaculture:pink_salmon',
      'aquaculture:piranha',
      'aquaculture:pollock',
      'aquaculture:rainbow_trout',
      'aquaculture:red_grouper',
      'aquaculture:smallmouth_bass',
      'aquaculture:synodontis',
      'aquaculture:tambaqui',
      'blue_skies:whistleshell_crab',
      'cataclysm:lionfish',
    ],
    drops: [
      { item: 'aquaculture:neptunium_ingot',  chance: 0.02, count: 1 },
      { item: 'aquaculture:neptunium_nugget', chance: 0.10, countMin: 1, countMax: 3 }
    ]
  },

  // ───────────────────────────────────────────────────────────
  // TIER 4: SMALL FISH
  // ───────────────────────────────────────────────────────────
  SMALL: {
    mobs: [
      'minecraft:squid',
      'minecraft:glow_squid',
      'minecraft:axolotl',
      'minecraft:tadpole',
      'alexsmobs:triops',
      'aquaculture:jellyfish',
      'aquaculture:minnow',
      'aquamirae:luminous_jelly',
      'biomeswevegone:man_o_war',
      'blue_skies:jelly_drifter'
    ],
    drops: [
      { item: 'aquaculture:neptunium_nugget', chance: 0.05, countMin: 1, countMax: 2 }
    ]
  },

  // ───────────────────────────────────────────────────────────
  // TIER 5: TURTLES
  // ───────────────────────────────────────────────────────────
  TURTLE: {
    mobs: [
      'minecraft:turtle',
      'aquaculture:box_turtle',
      'aquaculture:arrau_turtle',
      'aquaculture:starshell_turtle',
      'alexsmobs:alligator_snapping_turtle'
    ],
    drops: [
      { item: 'aquaculture:box',              chance: 0.15, count: 1 },
      { item: 'aquaculture:lockbox',          chance: 0.08, count: 1 },
      { item: 'aquaculture:treasure_chest',   chance: 0.03, count: 1 },
      { item: 'aquaculture:neptunium_nugget', chance: 0.20, countMin: 1, countMax: 2 }
    ]
  }
}

// ═══════════════════════════════════════════════════════════
// GEAR POOL (Neptunium Equipment)
// ═══════════════════════════════════════════════════════════

var NEPTUNIUM_GEAR_POOL = [
  'aquaculture:neptunium_axe',
  'aquaculture:neptunium_pickaxe',
  'aquaculture:neptunium_shovel',
  'aquaculture:neptunium_hoe',
  'aquaculture:neptunium_sword',
  'aquaculture:neptunium_helmet',
  'aquaculture:neptunium_chestplate',
  'aquaculture:neptunium_leggings',
  'aquaculture:neptunium_boots',
  'aquaculture:neptunium_bow',
  'aquaculture:neptunium_fishing_rod',
  'aquaculture:neptunium_fillet_knife'
]

// ═══════════════════════════════════════════════════════════
// BUILD MOB -> DROPS MAPPING
// ═══════════════════════════════════════════════════════════

ServerEvents.loaded(event => {
if (!global.AOF_WATER_MOB_MAP) {
  global.AOF_WATER_MOB_MAP = {}
  var mobCounts = { BOSS: 0, LARGE: 0, MEDIUM: 0, SMALL: 0, TURTLE: 0 }

  Object.keys(WATER_CREATURE_CONFIG).forEach(tier => {
    var tierData = WATER_CREATURE_CONFIG[tier]
    tierData.mobs.forEach(mobId => {
      global.AOF_WATER_MOB_MAP[mobId] = {
        tier: tier,
        drops: tierData.drops
      }
      mobCounts[tier]++
    })
  })

  console.info('═══════════════════════════════════════════════════════')
  console.info('[AOF] Water Creatures Drops v2.0 - EntityEvents.death')
  console.info('═══════════════════════════════════════════════════════')
  console.info(`[AOF] ✓ BOSS: ${mobCounts.BOSS} mobs`)
  console.info(`[AOF] ✓ LARGE: ${mobCounts.LARGE} mobs`)
  console.info(`[AOF] ✓ MEDIUM: ${mobCounts.MEDIUM} mobs`)
  console.info(`[AOF] ✓ SMALL: ${mobCounts.SMALL} mobs`)
  console.info(`[AOF] ✓ TURTLE: ${mobCounts.TURTLE} mobs`)
  var total = mobCounts.BOSS + mobCounts.LARGE + mobCounts.MEDIUM + mobCounts.SMALL + mobCounts.TURTLE
  console.info(`[AOF] Total: ${total} water creatures configured`)
  console.info('[AOF] 🐟 Hunt the seas for neptunium gear!')
  console.info('[AOF] 🎯 Ready for action!')
  console.info('═══════════════════════════════════════════════════════')
}

})

// ═══════════════════════════════════════════════════════════
// HELPERS
// ═══════════════════════════════════════════════════════════

function getRandomGear() {
  var index = Math.floor(Math.random() * NEPTUNIUM_GEAR_POOL.length)
  return NEPTUNIUM_GEAR_POOL[index]
}

function getRandomCount(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min
}

// ═══════════════════════════════════════════════════════════
// MAIN EVENT HANDLER - EntityEvents.death
// ═══════════════════════════════════════════════════════════

EntityEvents.death((event) => {
  if (!global.AOF_LOOT || !global.AOF_LOOT.FEATURES.WATER_CREATURES) return

  var entity = event.entity
  var mobType = entity.type
  var mobData = global.AOF_WATER_MOB_MAP[mobType]

  if (!mobData) return

  mobData.drops.forEach(drop => {
    var chance = drop.chance || 1.0

    if (Math.random() < chance) {
      var item = drop.item
      if (item === 'GEAR_POOL') {
        item = getRandomGear()
      }

      var count = drop.count || 1
      if (drop.countMin !== undefined && drop.countMax !== undefined) {
        count = getRandomCount(drop.countMin, drop.countMax)
      }

      for (var i = 0; i < count; i++) {
        entity.block.popItem(item)
      }

      var chanceStr = chance < 1.0 ? ` (${(chance * 100).toFixed(0)}%)` : ''
      console.info(`[AOF] ${mobType} [${mobData.tier}] dropped ${count}x ${item}${chanceStr}`)
    }
  })
})