package hunterz.iconchanger;

import cpw.mods.fml.relauncher.IFMLLoadingPlugin;
import org.lwjgl.opengl.Display;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.util.Map;

public class IconChangerPlugin implements IFMLLoadingPlugin {

    static {
        try {
            // Charger les icônes depuis le classpath
            ByteBuffer[] icons = new ByteBuffer[2];
            icons[0] = loadIcon("/icon_16x16.png");
            icons[1] = loadIcon("/icon_32x32.png");

            if (icons[0] != null && icons[1] != null) {
                Display.setIcon(icons);
                System.out.println("[HunterZ] Icône personnalisée chargée!");
            }
        } catch (Exception e) {
            System.err.println("[HunterZ] Erreur chargement icône: " + e.getMessage());
        }
    }

    private static ByteBuffer loadIcon(String path) {
        try {
            InputStream is = IconChangerPlugin.class.getResourceAsStream(path);
            if (is == null) {
                System.err.println("[HunterZ] Icône non trouvée: " + path);
                return null;
            }
            BufferedImage image = ImageIO.read(is);
            int[] pixels = image.getRGB(0, 0, image.getWidth(), image.getHeight(), null, 0, image.getWidth());
            ByteBuffer buffer = ByteBuffer.allocate(4 * pixels.length);
            for (int pixel : pixels) {
                buffer.put((byte) ((pixel >> 16) & 0xFF)); // R
                buffer.put((byte) ((pixel >> 8) & 0xFF));  // G
                buffer.put((byte) (pixel & 0xFF));         // B
                buffer.put((byte) ((pixel >> 24) & 0xFF)); // A
            }
            buffer.flip();
            return buffer;
        } catch (Exception e) {
            System.err.println("[HunterZ] Erreur lecture icône " + path + ": " + e.getMessage());
            return null;
        }
    }

    @Override
    public String[] getLibraryRequestClass() { return null; }

    @Override
    public String[] getASMTransformerClass() { return null; }

    @Override
    public String getModContainerClass() { return null; }

    @Override
    public String getSetupClass() { return null; }

    @Override
    public void injectData(Map<String, Object> data) { }
}
