// scripts/transformOres.js
export const event_transformOres = {
  /**
   * Se ejecuta cada tick sobre cualquier bloque que coincida
   * con las claves de 'oreConfigs'.
   */
  onTick({ block, dimension }) {
    const players = dimension.getPlayers();

    // Configuración de cada tipo de mineral
    const oreConfigs = [
      {
        minPhase: 1,
        mapping: {
          "dungeon:stone_glimmerite": "dungeon:glimmerite_ore",
          "dungeon:junglestone_glimmerite": "dungeon:glimmerite_ore_jungle",
          "dungeon:desertstone_glimmerite": "dungeon:glimmerite_ore_desert",
          "dungeon:coldstone_glimmerite": "dungeon:glimmerite_ore_cold"
        }
      },
      {
        minPhase: 2,
        mapping: {
          "dungeon:stone_viritum": "dungeon:viritum_ore",
          "dungeon:junglestone_viritum": "dungeon:viritum_ore_jungle",
          "dungeon:desertstone_viritum": "dungeon:viritum_ore_desert",
          "dungeon:coldstone_viritum": "dungeon:viritum_ore_cold"
        }
      },
      {
        minPhase: 3,
        mapping: {
          "dungeon:deepslate_titanium": "dungeon:titanium_ore",
          "dungeon:jungle_deepslate_titanium": "dungeon:jungle_titanium_ore",
          "dungeon:cold_deepslate_titanium": "dungeon:cold_titanium_ore"
        }
      }
    ];

    // Detectar la fase más alta activa en jugadores
    const phaseTags = ["difficulty_phase1", "difficulty_phase2", "difficulty_phase3", "difficulty_phase4"];
    let highestPhase = 0;
    for (let i = 0; i < phaseTags.length; i++) {
      if (players.some(p => p.hasTag(phaseTags[i]))) {
        highestPhase = i + 1; // fase 1..4
      }
    }
    if (highestPhase === 0) return;

    // Revisar si este bloque entra en alguna conversión
    for (const config of oreConfigs) {
      if (highestPhase >= config.minPhase) {
        const currentId = block.typeId;
        const targetId = config.mapping[currentId];
        if (targetId) {
          const { x, y, z } = block.location;
          dimension.runCommand(`setblock ${x} ${y} ${z} ${targetId}`);
          return; // solo una conversión por tick
        }
      }
    }
  }
};
